Beruflich Dokumente
Kultur Dokumente
• Introducción
• Objetivos
o Objetivos Generales
o Objetivos Específicos
• Marco Teórico
o Tecnologías .Net
o Paradigmas de Programación en Tecnologías .Net
o Plataforma .Net en Linux (Mono)
o Productividad en el ambiente .Net
o IDEs utilizadas en el ambiente .Net
Visual Studio Express/Standard/Professional
SharpDevelop
Mono Develop (Linux)
Cuadro Comparativo (Ventajas/Desventajas)
o Silverlight
o Windows Communication Foundation
• Proyecto
o Componentes internos del software
Servicios
• Manejador de Multimedios (Upload, Stream etc)
• Autenticación (login, sesión)
• Registro de Sucesos (logging)
• Administración (usuarios, registro, modificación,
eliminación)
• Administración de Denuncias
• Administración de Estadísticas
o Componentes externos del software
Log4Net
Upload Tool para Silverlight
Npgsql (Proveedor de datos .net para PostgreSQL, si se usa)
o Arquitectura de una aplicación en .Net
Herramientas CASE para .Net (estereotipos)
• Visio
• Architect
• Power Designer
• Genexus
o Extensibilidad en .Net
o Manejador de base de datos para .Net
Manejador de base de datos sugerido
• Microsoft SQLServer
• PostgreSQL (Utilizando librería Npgsql)
• MySQL
Manejador de base de datos no sugerido
• Archivo
Herramientas ORM (Object Relational Mapping)
• NHibernate
• LINQ
o Licenciamiento y Costos
Mano de Obra
• Personal
• Herramientas
• Conclusiones.
• Bibliografía
Tecnologías .NET
.NET representa todo un rango de tecnologías y conceptos que conforman una plataforma en la cual usted
puede desarrollar aplicaciones. Es más que una simple cosa; es una colección de software y conceptos que
trabajan en conjunto para permitir la generación de soluciones de negocios.
.NET es una capa bajo sus programas que ofrece un conjunto de servicios y funciones básicas. Esta capa
contiene aplicaciones y sistemas operativos llamados servidores .NET; un conjunto de objetos fundamentales
como .NET Framework, y un conjunto de servicios que reconoce todos los lenguajes .NET, conocido como
Common Language Runtime (CLR).
.NET Framework
Servidores .NET
Windows, BizTalk, Exchange, SQL, Application Center
Dispositivos .NET
Componentes de hardware
El CLR es el responsable de ejecutar su código y ofrece varias innovaciones para los desarrolladores de
aplicaciones .NET. La modificación más importante es que permite que todos estos lenguajes puedan
compilarse en el Lenguaje intermedio de Microsoft (MSIL). El CLR después convertirá este código en código
nativo cuando se ejecute por primera vez y el resultado será que obtendrá el rendimiento del código totalmente
compilado, no código que se interprete en tiempo de ejecución.
Al generar sus aplicaciones en .NET, utilizará muchas clases del .NET Framework. Algunas más útiles son:
.NET Framework
El .NET Framework ofrece dos cosas primordiales: el entorno del motor de ejecución básico y un conjunto de
clases fundamentales. El entorno del motor de ejecución es similar al sistema operativo en el sentido de que
ofrece una capa entre su programa y las complejidades del resto del sistema, con lo que provee de servicios a
su aplicación y simplifica el acceso a la funcionalidad de las capas inferiores.
Tiene una diversidad de componentes y servicios que se combinan para generar un potente entorno de
desarrollo. Incluye una gran cantidad de clases que le permite escribir aplicaciones basadas en Windows y para
Web, acceder a la red, generar imágenes, y otras cosas más.
Las clases fundamentales ofrecen una gran cantidad de funcionalidad, que envuelven y abstraen en tecnologías
como los protocolos de Internet, acceso al sistema de archivos, manejo de XML, ect.
El .NET Framework es muy similar al sistema operativo, y ofrece su propio conjunto de APIs para que los
programadores aprovechen sus capacidades con facilidad.
Para que un lenguaje de programación aproveche el entorno del motor de ejecución y otra funcionalidad del
.NET Framework, el compilador debe producir código que se apegue a cierta norma. Microsoft ofrece esta
norma, la Especificación de Lenguajes Comunes o Common Language Specification (CLS), como una forma
para crear cualquier compilador propio de .NET.
Microsoft ha generado compiladores de Visual Basic, Visual C++ y C# que se apegan al .NET Framework, pero
ha puesto a disponibilidad del público la CLS para que otras empresas o personas puedan generar
compiladores para otros lenguajes. Como resultado, además de los lenguajes provistos por Microsoft, hay otros
como COBOL, APL, Smalltalk, ect., que están generados con la misma base.
Servidores .NET
Una meta primordial del concepto de .NET es reducir la generación de sistemas distribuidos, donde el trabajo se
realiza en diversos lugares. Principalmente, estos tipos de sistemas hacen su trabajo en el servidor (o backend).
Microsoft ofrece un conjunto de productos de software que juntos se conocen como Servidores
Empresariales .NET (.NET Enterprise Servers). Están diseñados para dar el soporte y las características
necesarias para un sistema distribuido.
• El sistema operativo servidor Microsoft Windows .NET (Server, Advanced Server y Datacenter Server).
• Software de clustering y balanceo de carga, como Microsoft Application Center y Microsoft Cluster
Server.
• Un servidor de bases de datos, Microsoft SQL Server.
• Un sistema de correo electrónico, colaboración y almacenamiento libre de información, Microsoft
Exchange Server.
• Un motor para la transformación de datos basado en XML llamado Microsoft BizTalk Server.
• Un servidor para acceder a sistemas heredados, como las AS/400, llamado Host Integration Server.
• Y otras cosas más…
En conjunto, estos servidores proporcionan los servicios básicos para sus aplicaciones .NET, y además son la
base de sus sistemas.
Servicios .NET
Los Servicios Web XML son una funcionalidad basada en una tendencia constante en Internet. Tales servicios
permiten que una empresa u organización provea funcionalidad que esté contenida en el entorno del programa
que dicha empresa realice. Como ejemplo podríamos mencionar un servicio para el pago de facturas, donde
una empresa tenga servidores y aplicaciones en su propia organización que pueda controlar los pagos. La
empresa provee tal servicio a otras personas mediante un Servicio Web XML. Esto no es lo mismo que ofrecer
un sitio Web; es una interfaz que otras aplicaciones o sitios Web pueden acceder mediante código.
Como se puede apreciar antes de la introducción de WCF cumplir con requisitos como este requeriría
programar y exponer cada una de las tecnologías antes señaladas; sin embargo, con WCF no es necesario.
Basta con definir una sóla especificación del servicio que se quiere exponer y configurarle los endpoints que
puede soportar. Podriamos definir los endpoints como el tipo de comunicación que puede soportar el servicio
en WCF junto con las operaciones que soporta el servicio.
Silverlight
Silverlight es un framework para desarrollar aplicaciones gráficas. Originalmente fue concebido como un plugin
para stream video; posteriormente se le añade mas funcionalidad para interactuar.
Uno de las principales ventajas de Silverlight es la portabilidad. Microsoft tomo una idea similar al plugin de flash
y Silverlight se distribuye como un plugin para los exploradores más populares. Esto quiere decir que no es
necesario tener instalado el framework de .Net para poder correr una aplicación Silverlight sólo el framework
correspondiente al browser utilizado. Otras ventajas son:
- Se desarrolla con un framework conocido lo que provee una fácil etapa de aprendizaje para
programadores de C# o VB.Net.
- Soporta gráfica por vectores y “retained mode” para optimización del proceso de rendering.
- Soporta animaciones en 2D y 3D
- El modelo de programación con Silverlight se presta para una clara distinción entre el diseño gráfico y la
funcionaliad de la aplicación que se quiera desarrollar.
- Soporta la comunicación por medio de WCF.
- Es fácil desarrollar aplicaciones visualmente llamativas.
Silverlight utiliza un subset de las clases presentes en el framework de .Net; por lo cual tiene algunas
limitaciones. Por ejemplo, no es posible accede directamente System.Data;
La primera versión de silverlight solamente soportaba el uso de javascript. Afortunadamente las siguientes
versiones de Silverlight incluyeron soporte para utilizar los lenguajes del framework de .Net.
Dispositivos .NET
En el mundo actual hay una gran gama de sistemas que puede usar para acceder a Internet, a la rede de su
empresa o a su información personal. Pueden ser las PCs mismas, terminales de Internet basadas en TV,
clientes ligeros, o asistentes digitales personales (PDAs). Todos ellos son medios por los que un usuario
accede a una aplicación .NET. Esta tendencia hacia diversos dispositivos lo fuerza a usted, como programador,
a dejar de asumir un solo tipo de cliente, generalmente una PC, y tomar en cuenta que un cliente podría
conectarse por varios dispositivos distintos. Éstos pueden clasificarse como Dispositivos .NET, que son una
combinación de características de hardware y software diseñadas para funcionar con servicios y aplicaciones
basados en .NET. En la actualidad, entre los dispositivos .NET disponibles se encuentran equipos que ejecutan
Windows y otros que ejecutan Windows CE. (Hay un .NET compact Framework para esta plataforma, lo que le
permite utilizar las características de .NET.) El crecimiento de esta área, será aún mayor.
La diferencia entre todas las posibles arquitecturas gira en torno a la forma en que se distribuyen las tres capas
distintas de un sistema de cómputo:
• Presentación: Esta capa representa a la interfaz de usuario y la interacción con otros sistemas; es el
rostro del sistema que permite comunicarse al exterior. Las ventanas o páginas web, por decirlo de
alguna manera, encapsulan lógica de navegación y control de eventos de la interfase.
• Lógica funcional o de negocios: Todo el código que no está involucrado de manera específica en la
generación de la interfaz de usuario de otros aspectos de la capa de presentación. Esta capa
representa el núcleo de la aplicación, el código que realiza el trabajo del sistema. Éstos podrían ser un
modelo de objetos, xml, datasets, estructuras de datos, ect.
• Datos: La base de datos (u otro origen de datos como XML) y el código que la accede conforman la
capa de datos.
Estas tres capas son la representación lógica de un sistema completo, pero tal sistema podría tener una
diversidad de formas: un solo exe, componentes distribuidos en distintos servidores o un sitio Web. Sin importar
la aplicación específica, es útil describir a todos los sistemas en los términos de estas tres capas.
¿Cuántas capas?
Una de las formas comunes de arquitecturas de aplicación que se han descrito, está relacionada con la
cantidad de equipos distintos que ejecutan porciones del sistema. La arquitectura más simple se ha descrito
como un sistema de una sola capa, donde todo el programa (presentación, lógica funcional y datos) está en un
solo equipo. Ésta es la arquitectura utilizada por la mayoría de las aplicaciones de los consumidores, como
Microsoft Office, y por muchas aplicaciones de negocios diseñadas para que solo cierta cantidad de usuarios
las utilicen a la vez. Sólo la cantidad de equipos que realicen cierto tipo de procesamiento es importante. Un
programa cuyo archivos de datos se colocan en un servidor de archivos, de todas formas se considera como
una aplicación de una sola capa, puesto que todo el trabajo se realiza en un equipo, y el servidor de archivos
simplemente ofrece un lugar en la red para almacenar datos.
Por otro lado, cuando el programa utiliza un servidor de base de datos (como SQL Server u Oracle), se
considera como de dos capas, pues el servidor realiza cierto procesamiento a aplicaciones de negocios.
Permite que muchos usuarios trabajen con el mismo conjunto de datos y al mismo tiempo ofrece mejor
rendimiento que un sistema basado en archivos, como Microsoft Access.
Por último, la forma reciente de arquitecturas de aplicaciones se conoce como de tres capas o de n-capas, y
describe a los sistemas en los que el código se ejecuta en tres o más secciones distintas. La división lógica de
tal sistema consta de tres capas, pero la disposición física puede ser mayor a tres grupos distintos. Por lo
general, esto significa que se utiliza cierto tipo de código del cliente – como un sitio Web interactivo o una
aplicación de Windows, que ejecuta código que se encuentra en otro servidor o grupo de servidores para llevar
a cabo la lógica funcional – y una base de datos de apoyo. Esta arquitectura cada vez cobra mayor popularidad
dado que permite una gran flexibilidad para manejar a muchos usuarios y por ello satisface plenamente los
requerimientos de las aplicaciones basadas en Internet. Hay distintas formas técnicas de generar aplicaciones
de tres capas, pero el método recomendado por Microsoft antes de que .NET apareciera se llamaba Windows
DNA.
Plataforma .NET en Linux (Mono)
La plataforma .NET fue creado inicialmente para el sistema operativo Windows de Microsoft por Microsoft. En
el mundo de software libre al ver el potencial que tenía esta plataforma, surgió el Proyecto Mono (Mono Project).
El Proyecto Mono tiene como objetivo hacer que os desarrolladores sean más productivo y felices. Patrocinado
por Novel, el proyecto de código abierto Mono, tiene una comunidad activa y entusiasta que contribuye al
proyecto y esto logra que se posicione en un lugar como líder en opción para desarrollar aplicaciones en Linux.
Con el patrocinio de Novell, se pudo desarrollar la versión UNIX de la plataforma de desarrollo de .NET de
Microsoft. Esto permite a los desarrolladores crear aplicaciones que sobre Linux y que sea multiplataforma. Y
éste proyecto implementa varias tecnologías desarrolladas por Microsoft y que ya han sido presentadas al
ECMA para su estandarización.
El Proyecto Mono también ha generado muchísimo interés en el desarrollo de componentes basados en C#,
librerías y otras plataformas (frameworks). Los más importantes, algunas de las cuales fueron desarrolladas por
el equipo Mono son:
• Gtk#: Enlaces para la herramienta popular para GUI Gtk+ para sistemas Linux y Windows.
• #ZipLib: Una librería para manipular varios tipos de archivos compresos.
• Tao Framework: Enalces para OpenGL.
• Mono.Directory.LDAP / Novel.Directory.LDAP: Accesso LDAP para aplicaciones .NET.
• Mono.Data: Soporte para PostgreSQL, MySQL, Firebird, Sybase ASE, IBM DB2, SQLite, Microsoft SQL
Server, Oracle, and ODBC.
• Mono.Cairo: Enlaces para el motor de “rendering” Cairo.
• Mono.Posix / Mono.UNIX: Enlaces para construir aplicaciones POSIX utilizando C#.
• Mono.Remoting.Channels.Unix: Remoting basado en sockets the Unix.
• Mono.Security: Plataforma mejorada de seguridad y encriptación.
• Mono.Math: Generación de números tipo Prime y BigInteger.
• Mono.Http: Soporte para crear servidores HTTP y manejadores comunes de HTTP integrados y
personalizados para las aplicaciones.
• Mono.XML: Soporte extendido para XML.
• Managed.Windows.Forms (aka Systems.Windows.Forms): Una implementación completa y
multiplataforma del System.Drawing basado en la implementación de Winforms.
• Remoting.CORBA: Una implementación de CORBA para Mono.
• Ginzu: Una implementación encima de Remoting para “ICE stack”.
Estas son algunas de las librerías que fueron desarrolladas por el mismo equipo del Proyecto Mono.
IDEs utilizadas en el ambiente .Net
Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, así como servicios web
en cualquier entorno que soporte la plataforma .NET (a partir de la versión net 2002). Así se pueden crear
aplicaciones que se intercomuniquen entre estaciones de trabajo, páginas web y dispositivos móviles.
SharpDevelop (http://www.sharpdevelop.com/OpenSource/SD/Default.aspx)
SharpDevelop es un entorno de desarrollo integrado gratis para proyectos C# y VB.NET sobre la plataforma
Microsoft .NET. Es una aplicación de código libre (open-source), lo cual significa que se puede descargar el
código fuente y modificarlo para ajustarlo al uso de uno.
Eclipse con Emonic plugin (http://emonic.sourceforge.net/)
Emonic significa “Eclipse Mono Integration”. Es un plug-in para el IDE Eclipse que permite el desarrollo de
aplicaciones en C# con Mono o Microsoft .Net.
Este plug-in permite la utilización del famoso ambiente de desarrollo Eclipse, que normalmente se utiliza para
Java y entre otros lenguajes, desarrollar aplicaciones en la plataforma .Net. Las implementaciones .Net
soportadas son Mono 1.0, Mono 2.0, Microsoft .Net 1.0 y Microsoft .Net 2.0.
MonoDevelop (Windows/Linux) (http://monodevelop.com/)
MonoDevelop es un entorno de desarrollo integrado de GNOME, gratis. Fue diseñado principalmente para C# y
otros lenguajes .NET. MonoDevelop permite a los desarrolladores crear aplicaciones de escritorio y
aplicaciones web ASP.NET de forma rápida en Linux (principalmente). Esta también permite a los
desarrolladores portar el código de aplicaciones .NET creados en Visual Studio a Linux y mantener un sólo
código base para todas las plataformas de forma sencilla.
Cuadro Comparativo (Ventajas/Desventajas)
La historia de SQL empieza en 1974 con la definición, por parte de Donald Chamberlin y de
otras personas que trabajaban en los laboratorios de investigación de IBM, de un lenguaje
para la especificación de las características de las bases de datos que adoptaban el modelo
relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se
implementó en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las
experimentaciones con ese prototipo condujeron, entre 1976 y 1977, a una revisión del
lenguaje (SEQUEL/2), que a partir de ese momento cambió de nombre por motivos legales,
convirtiéndose en SQL. El prototipo (System R), basado en este lenguaje, se adoptó y utilizó
internamente en IBM y lo adoptaron algunos de sus clientes elegidos. Gracias al éxito de
este sistema, que no estaba todavía comercializado, también otras compañías empezaron a
desarrollar sus productos relacionales basados en SQL. A partir de 1981, IBM comenzó a
entregar sus productos relacionales y en 1983 empezó a vender DB2. En el curso de los
años ochenta, numerosas compañías (por ejemplo Oracle y Sybase, sólo por citar algunos)
comercializaron productos basados en SQL, que se convierte en el estándar industrial de
hecho por lo que respecta a las bases de datos relacionales.
En 1986, el ANSI adoptó SQL (sustancialmente adoptó el dialecto SQL de IBM) como
estándar para los lenguajes relacionales y en 1987 se transfomó en estándar ISO. Esta
versión del estándar va con el nombre de SQL/86. En los años siguientes, éste ha sufrido
diversas revisiones que han conducido primero a la versión SQL/89 y, posteriormente, a la
actual SQL/92.
El hecho de tener un estándar definido por un lenguaje para bases de datos relacionales
abre potencialmente el camino a la intercomunicabilidad entre todos los productos que se
basan en él. Desde el punto de vista práctico, por desgracia las cosas fueron de otro modo.
Efectivamente, en general cada productor adopta e implementa en la propia base de datos
sólo el corazón del lenguaje SQL (el así llamado Entry level o al máximo el Intermediate
level), extendiéndolo de manera individual según la propia visión que cada cual tenga del
mundo de las bases de datos.
Actualmente, está en marcha un proceso de revisión del lenguaje por parte de los comités
ANSI e ISO, que debería terminar en la definición de lo que en este momento se conoce
como SQL3. Las características principales de esta nueva encarnación de SQL deberían ser
su transformación en un lenguaje stand-alone (mientras ahora se usa como lenguaje
hospedado en otros lenguajes) y la introducción de nuevos tipos de datos más complejos que
permitan, por ejemplo, el tratamiento de datos multimediales.
Microsoft SQLServer
La primera versión de Microsoft SQL Server, luego de un trabajo en conjunto entre Microsoft,
Sybase y Ashton-Tate (creadores de dBASE), fue puesta en el mercado en 1989 bajo el
nombre de SQL Server 1.0, y la herramienta fue refinada al paso de los años mediante las
versiones que listamos a continuación:
A partir de SQL 2005 se incluye el soporte nativo para data en XML, adicional a los tipos de
data relacional, para esto se define un tipo de datos XML el cual puede ser usado en
columnas de base de datos o en mandatos de SQL. También SQL 2005 permite al manejador
de base de datos ser accesado a través de Servicios Web (Web Services) utilizando
paquetes encapsulados con el protocolo SOA. Cuando la data es accesada a través de
Servicios Web, los resultados se retornan en XML.
Microsoft ofrece SQL Server en múltiples ediciones, con funciones diferentes y destinadas a
usuarios diferentes. Estas ediciones son:
SQL Server Compact Edition (SQL CE)
La edición compacta es un motor de base de datos embebido. A diferencia de las otras
ediciones de SQL Server, el motor de SQL Server CE se basa en SQL Mobile (inicialmente
diseñado para el uso con los dispositivos de mano) y no comparte los mismos archivos
binarios. Debido a su pequeño tamaño, tiene una marcada reducción en comparación con el
conjunto de características de las otras ediciones. Por ejemplo, se admite un subconjunto de
los tipos de datos estándar, no es compatible con los procedimientos almacenados o vistas o
de múltiples lotes de instrucción (entre otras limitaciones). Se limita a 4 GB de tamaño
máximo de base de datos y no se puede ejecutar como un servicio de Windows, Compact
Edition debe ser admitido por la aplicación de usarlo. La versión 3.5 incluye un trabajo
considerable que soporta los Servicios de Sincronización de ADO.NET.
Libros:
Mackensie, Duncan y Sharkey, Kent. Aprendiendo Visual Basic.NET. Prentice Hall. Primera Edición. Mexico,
2003.
ISBN: 970-26-0379-X
[Fecha de consulta: 4 de Septiembre de 2009]
Enlaces:
Npgsql - .Net Data Provider for Postgresql. The Npgsql Development Team. 2009. [Fecha de consulta: 4 de
Septiembre de 2009].
Disponible en:
http://npgsql.projects.postgresql.org/
Modeling Web Application Design with UML. Jim Conallen [en línea]. 1998. [Fecha de consulta: 16 de
Septiembre de 2009].
Disponible en:
http://www.itmweb.com/essay546.htm
WAE UML Stereotypes, Stencils, Templates, and ASP.NET Patterns for Visio. Real World Software Architecture.
Sábado 17 de Marzo de 2007 [en línea]. [Fecha de consulta: 16 de Septiembre de 2009].
Disponible en:
http://realworldsa.blogspot.com/2007/03/wae-uml-stereotypes-stencils-templates.html