1.72k likes | 1.99k Views
“Plataforma Microsoft .NET. . Conceptos, Partes Componentes y Programación”. Profesor: Prof. Julio César Camps. Breve descripción del Framework .NET y su lenguaje estrella “C#”. Contenido. Análisis retrospectivo Descripción del framework .NET Breve descripción del C# Sumario Preguntas.
E N D
“Plataforma Microsoft .NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps
Breve descripción del Framework .NET y su lenguaje estrella “C#”
Contenido • Análisis retrospectivo • Descripción del framework .NET • Breve descripción del C# • Sumario • Preguntas
Bibliografía • [1] .NET Framework SDK http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcommontypesystemoverview.asp • [2] Common Language Runtime Overview http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcommontypesystemoverview.asp • [3] MSDN Magazine Content September 2000 http://msdn.microsoft.com/msdnmag/issues/0900/default.aspx • [4].NET Development http://msdn.microsoft.com/NET/ • [5] Building Distributed Applications. ASP.NET Web Services or .NET Remoting (MSDN Library Abril de 2003.) • [6] Project MONO http://www.go-mono.com/ • [7] ASP.NET Web. The Official Microsoft ASP.NET Site http://www.asp.net
Sección 1. Retrospectiva • Desafíos para los desarrolladores • Desafíos para los clientes • Aplicaciones y servicios
Desafíos para los desarrolladores • Desarrollo 1. Elección del sistema operativo y el lenguaje. • Distribución 1. CD-ROM: producción, empaquetamiento y transporte. 2. La entrega electrónica requiere de la intervención humana. • Estabilidad 1. Problemas de compatibilidad de DLLs. • Mantenimiento 1. Los mismos que para la distribución
Desafíos para el cliente1/2 • Difusión o despliegue 1. La instalación requiere tiempo y personal. 2. Pruebas para garantizar la compatibilidad con aplicaciones y S.O. preexistentes. 3. Manejo de licencias
Desafíos para el cliente2/2 • Estabilidad y seguridad 1. Requiere aun mas pruebas 2. Brechas de seguridad 3. Posibilidad de desestabilización a otros procesos, por procesos no amistosos e inclusive al mismo S.O. • Mantenimiento 1. Todos los problemas anteriormente relacionados
Aplicaciones y Servicios • Aplicaciones como soluciones de servicios 1. Las soluciones de hoy dan servicio como aplicaciones. 2. Las soluciones del mañana serán servicios, no aplicaciones. • Servicios en internet actuales 1. Distribuidos a través de portales. 2. No son portables. 3. Dependientes del navegador y del dispositivo
Common Type System Common Language Runtime Plataforma .NET y .NET Framework Servicios Web Componentes diseñados Office.Net ... ... Aplicaciones.NET Servidores Enterprise Lenguajes: C#, Visual Basic, etc SQL Server BizTalk ... Runtime Services: .NET and COM+ .NET Framework Sistema operativo
Common Type System Common Language Runtime Plataforma .NET y .NET Framework Herramientas para desarrolladores Servicios Web Componentes diseñados Office.Net ... ... Aplicaciones.NET Servidores Enterprise Lenguajes: C#, Visual Basic, etc SQL Server BizTalk ... Runtime Services: .NET and COM+ .NET Framework Sistema operativo
Data & XML Diagrama del .NET Framework BaseClasses Web Services UserInterface Common Language Runtime Base Frame
Beneficios claves de .NET • Facilidad de uso • Modelo orientado a objetos • todo es un objeto. • Los espacios de nombres y la estructura misma del Framework • Fácil de comprender y usar. • Esquema de nombres de los espacios de nombres refleja su funcionalidad subyacente.
Beneficios claves de .NET • Libertad de elección: • El lenguaje que satisface sus necesidades. • La herramienta de desarrollo con que esté más familiarizado. • Estabilidad • No más falta de memoria. • El recolector de “basura” administra la memoria • Eliminados los problemas de incompatibilidad con DLLs • Seguridad • Es imposible hacer referencia a una zona de memoria que no pertenezca a quien la referencia • Modelo de seguridad consistente
Beneficios claves de .NET • Distribución y mantenimiento • Distribución : el código es “ensamblado” y ejecutado de forma “segura”. • Mantenimiento : simplificado el mantenimiento del versionado • Experiencia unificada • Integra servicios diferentes en una solución nueva, unificada.
Beneficios claves de .NET • Servicios Web • La Web “del modo que la quieras” • En cualquier lugar. • En cualquier momento. • En cualquier dispositivo.
Resumen1/2 • La plataforma .NET provee los medios para: • Distribuir soluciones donde quiera, en cualquier momento y hacia cualquier dispositivo. • Migrar soluciones heredadas. • Desarrollar usando las herramientas y lenguajes de tu elección.
Resumen2/2 • La plataforma .NET provee los medios para: • Crear soluciones abiertas sobre estandares abiertos. • Mejor desarrollo, distribución y mantenimento de soluciones • Crear y usar servicios Web
Resumen sobre C# • Sistemas orientados a componentes • Conceptos de componentes en .NET • Por qué C#?
Sistemas orientadas a componentes1/2 • COM • Modelo de componentes mas exitoso en la historia • Hace posible la integración entre organizaciones y la rehusabilidad
Sistemas orientadas a componentes1/2 No obstante: • Actualmente COM muestra su edad • DCOM no tiene buen desempeño sobre Internet • Más sistemas basados en componentes, más “Infierno de las DLL" • Difícil de implementar aún con herramientas ya maduras COM no es exactamente independiente del lenguaje • Asume determinadas caracteristicas sobre el caracter binario de los datos.
Conceptos de componentes en .NET1/2 • Toma lo mejor de COM+ • Interfaces como contratos abstractos • Los componentes implementan y publican interfaces • Exploración dinámica de capacidades y contratos
Conceptos de componentes en .NET2/2 • Incorpora • Verdadera orientación a objetos • Modelo nativo de eventos • Sistema de tipos y runtime independientes del lenguaje • Extensibilidad a todos los niveles
Por qué C#? • Lenguaje orientado a componentes • Desarrollado sobre la experiencia de COM+ • Soporte nativo para • Espacios de nombres • Versionado • Desarrollado manejado por atributos
Por qué C#? • Potencia de C con la facilidad de uso de Microsoft Visual Basic® • Curva de aprendizaje mínima • Código mucho mas claro que C++ • Más estructurado que Visual Basic • Mas potente que Java
Elementos de C# • Estructura y forma • Sistema de tipos de C# • Entendiendo el lenguaje C#
Forma y estructura • No posee ficheros de cabecera “header” • C# emplea el modelo "definición junto a declaración" • Visual Basic, Pascal, Modula, Java • Similar a la implementación “inline” de C++ • Sin implicación en la generación de código • Compilación condicional pero sin soporte para macros
Sistema de tipos1/2 • Desarrollado directamente sobre el Common Type System de .NET Framework • Acceso nativo al CTS .NET • C# fue concebido sobre .NET
Sistema de tipos2/2 • Conceptos principales: • Todo es objeto • Absolutamente todos los tipos heredan implicitamente del System.Object • Distinción clara entre tipos por valor y por referencia • Por Valor: Tipos Simples, Enumerados, Estructuras • Por referencia: Interfaces, Clases, Arreglos
Tipos Simples • Tipos enteros • byte, sbyte (8bit), short, ushort (16bit) • int, uint (32bit), long, ulong (64bit) • Tipos flotantes IEEE • float (precisión de 7 dígitos) • double (precisión de 15–16 dígitos)
Tipos Simples • Tipo numéricos exactos • decimal (28 dígitos significativos) • Tipos Caracter • char (un único caracter) • string (cadena de caracteres, tipo por referencia) • Tipo Boolean • bool (tipo distintivo, no es equivalente al int)
Enumerados • Nombrar elementos usando nombre en vez de números • Mejor usar "Color.Azul" que "3" • Más legible, de más fácil mantenimiento • Tipo por valor por lo que es tan ligero como un int • Ejemplo: enum Color { Rojo, Verde, Azul, };
Arreglos1/2 • Indexados a partir de Cero • Desarrollados a partir de la clase System.Array • Declarados con tipo y formas, pero sin tamaño límite • int[] SingleDim; • int[,] TwoDim; • int [][] Jagged; (dentados)
Arreglos2/2 • Creados usando new con límites o inicializadores • SingleDim = new int[20]; • TwoDim = new int[,]{{1,2,3},{4,5,6}}; • Jagged = new int[1][]; Jagged[0] = new int[]{1,2,3};
Clases 1/2 • Implementación de código y datos • Representa una unidad semántica • Implementa interfaces • No herencia múltiple
Clases2/2 • Clases pueden contener: • Campos: variables miembros • Propiedades: valores accesibles a través de los pares de métodos get/set • Métodos: funcionalidad de los objetos o clases • Especiales: eventos, indexers, delegados public class Person : IPersonAge{ private int YOB; public Person() { } public int YearOfBirth { get { return YOB; }; set { YOB = value; }; } }
Estructuras • Grupos de código y datos • Similar a las clases, sin embargo: • No se permite la herencia • Siempre se almacenan por valor • Desarrolladores de C++ • Estructuras no son una clase con todos sus miembros públicos • Ejemplo: struct Point{ double X; double Y; void MoveBy(double dX, double dY) { X+=dX; Y+=dY; }}
Propiedades • Unión entre campos y métodos • Se recomienda su uso en: • Implementación de miembros de solo lectura (omitiendo la claúsula set) • Validación durante la asignación • Valores calculados o compuestos • Ejemplo: string Name { get { return name; } set { name = value; } }
Indices • Modo consistente para la construcción de contenedores • Construidos sobre la filosofía de las “propiedades” • Posibilita el acceso indizado a los objetos • Calificador del indice puede ser de cualquier tipo • Ejemplo: object this[string index]{ get { return Dict.Item(index); } set { Dict.Add(index,value); } }
Indices • Convertidos por el compilador en llamadas a métodos, para facilitar la interoperabilidad entre lenguajes <tipoIndizador> get_Item(<índices>) { <códigoLectura> } voidset_Item(<índices>, <tipoIndizador> value) { <códigoEscritura> }
Delegados • Delegados • Similares a los punteros a función de C y C++ • Fuerte chequeo de tipos, lo que impide la confusión antes existente en relación con los type-cast • Ejemplo: • delegate void Clicked(Element e, Point p);
Instrucciones • Similares a C, C++: control de flujos y ciclos • if (<bool expr>) { ... } else { ... }; • switch(<var>) { case <const>: ...; }; • while (<bool expr>) { ... }; • for (<init>;<bool test>;<modify>) { ... }; • do { ... } while (<bool expr>);
Instrucciones • Diferentes a C, C++: • lock(<object>){ ... }; • Sincronización de secciones críticas es inherente al lenguaje • checked {...}; unchecked { ...}; • Protección contra el “Integer overflow”
Métodos para colecciones: foreach • Soporte directo a las iteraciones sobre las colecciones • Pueden ser usados por arreglos y otras colecciones • Ademas se puede usar con cualquier otra clase • Implemente IEnumerable con el método GetEnumerator() • Devolviendo un objeto implementado de tipo IEnumerator • Ejemplo: Point[] Points = GetPoints();foreach( Point p in Points ){ MyPen.MoveTo(p.x,p.y);}
Operadores1/2 • Similares a C: • Lógicos/condicionales: && || • Aritméticos: * / + - << >> • Relacionales: == != < > >= <= • No exactamente C: • Para bool: & y | son lógicos con evaluación completa • Para integer: & y | ejecutan AND/OR binarios
Operadores 2/2 • No similares a C: • isPrueba el tipo en tiempo de ejecución • asConvierte un valor a un tipo especificado • typeofDevuelve el tipo en tiempo de ejecución
Sobre carga de operadores • La mayor parte pueden ser redefinidos • Aritméticos, relacionales, condicionales, y lógicos • No permitido para • Operadores de asignación • Operadores especiales (sizeof, new, is, typeof) • Ejemplo: Public static Total operator +(int Amount, Total t){ t.total += Amount;}
Modificadores de acceso 1/2 • Adopta el modelo C++ • public cualquiera puede invocarlo o accederlo • protected solamente los miembros pueden accederlo • private solo los miembros de exactamente esta clase pueden accederlo
Modificadores de acceso 2/2 • Expande el modelo de C++ • sealed No se puede usar como clase base de una jerarquía • internal Acceso público solamente desde su ensamblado • protected internal protegido dentro de su ensamblado