“plataforma microsoft.net. conceptos, partes componentes y programación” profesor: prof. julio...

171
Plataforma Microsoft .NET. Plataforma Microsoft .NET. Conceptos, Partes Componentes Conceptos, Partes Componentes y Programación” y Programación” Profesor: Prof. Julio César Camps Profesor: Prof. Julio César Camps

Upload: eurico-tellez

Post on 23-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

““Plataforma Microsoft .NET. Plataforma Microsoft .NET.

Conceptos, Partes Componentes Conceptos, Partes Componentes y Programación”y Programación”

Profesor: Prof. Julio César CampsProfesor: Prof. Julio César Camps

Page 2: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Breve descripción del Breve descripción del Framework .NET y su Framework .NET y su

lenguaje estrella “C#”lenguaje estrella “C#”

Page 3: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ContenidoContenido

Análisis retrospectivoAnálisis retrospectivo Descripción del framework .NETDescripción del framework .NET Breve descripción del C#Breve descripción del C# SumarioSumario PreguntasPreguntas

Page 4: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

BibliografíaBibliografía

[1] .NET Framework SDK [1] .NET Framework SDK http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcommontypesystemoverview.aspcpconcommontypesystemoverview.asp

[2] Common Language Runtime Overview[2] Common Language Runtime Overviewhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcommontypesystemoverview.aspcpconcommontypesystemoverview.asp

[3] MSDN Magazine Content September 2000[3] MSDN Magazine Content September 2000http://msdn.microsoft.com/msdnmag/issues/0900/default.aspxhttp://msdn.microsoft.com/msdnmag/issues/0900/default.aspx

[4].NET Development[4].NET Developmenthttp://msdn.microsoft.com/NET/http://msdn.microsoft.com/NET/

[5] Building Distributed Applications. ASP.NET Web Services [5] Building Distributed Applications. ASP.NET Web Services or .NET Remotingor .NET Remoting(MSDN Library Abril de 2003.)(MSDN Library Abril de 2003.)

[6] Project MONO[6] Project MONOhttp://www.go-mono.com/http://www.go-mono.com/

[7] ASP.NET Web. The Official Microsoft ASP.NET Site[7] ASP.NET Web. The Official Microsoft ASP.NET Sitehttp://www.asp.nethttp://www.asp.net

Page 5: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sección 1. RetrospectivaSección 1. Retrospectiva

Desafíos para los desarrolladoresDesafíos para los desarrolladores Desafíos para los clientesDesafíos para los clientes Aplicaciones y serviciosAplicaciones y servicios

Page 6: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Desafíos para los Desafíos para los desarrolladoresdesarrolladores DesarrolloDesarrollo 1. Elección del sistema operativo y el lenguaje.1. Elección del sistema operativo y el lenguaje.

DistribuciónDistribución 1. CD-ROM: producción1. CD-ROM: producción,, empaquetamiento y empaquetamiento y transporte.transporte.

2. La entrega electrónica requiere de la intervención humana.2. La entrega electrónica requiere de la intervención humana.

EstabilidadEstabilidad 1. Problemas de compatibilidad de DLLs.1. Problemas de compatibilidad de DLLs.

MantenimientoMantenimiento 1. Los mismos que para la distribución1. Los mismos que para la distribución

Page 7: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Desafíos para el clienteDesafíos para el cliente 1/21/2

Difusión o despliegueDifusión o despliegue 1. La instalación requiere tiempo y 1. La instalación requiere tiempo y

personal.personal.

2. Pruebas para garantizar la 2. Pruebas para garantizar la compatibilidad con aplicaciones y S.O. compatibilidad con aplicaciones y S.O. preexistentes.preexistentes. 3. Manejo de licencias 3. Manejo de licencias

Page 8: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Desafíos para el clienteDesafíos para el cliente 2/22/2

Estabilidad y seguridadEstabilidad y seguridad 1. Requiere aun mas pruebas1. Requiere aun mas pruebas

2. Brechas de seguridad2. Brechas de seguridad

3. Posibilidad de desestabilización a otros procesos, 3. Posibilidad de desestabilización a otros procesos, por procesos no amistosos e inclusive al mismo S.O.por procesos no amistosos e inclusive al mismo S.O.

MantenimientoMantenimiento 1. Todos los problemas anteriormente relacionados1. Todos los problemas anteriormente relacionados

Page 9: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Aplicaciones y ServiciosAplicaciones y Servicios

Aplicaciones como soluciones de Aplicaciones como soluciones de serviciosservicios

1. Las soluciones de hoy dan servicio como aplicaciones.1. Las soluciones de hoy dan servicio como aplicaciones.

2. Las soluciones del mañana serán servicios, no aplicaciones.2. Las soluciones del mañana serán servicios, no aplicaciones.

Servicios en internet actualesServicios en internet actuales 1. Distribuidos a través de portales. 1. Distribuidos a través de portales.

2. No son portables.2. No son portables.

3. Dependientes del navegador y del dispositivo3. Dependientes del navegador y del dispositivo

Page 10: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Qué es .NET? Qué es .NET?

Page 11: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Runtime

Sistema operativo

.NET Framework

Common Type

System

Common Language Runtime

Componentes diseñados

Services: .NET and COM+

SQL Server BizTalk ...

Lenguajes:

C#, Visual Basic, etc

Aplicaciones.NET

Servidores Enterprise

...Office.Net ...

Servicios Web

Plataforma .NET y .NET Plataforma .NET y .NET FrameworkFramework

Page 12: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Herramientas para Herramientas para desarrolladoresdesarrolladores

Runtime

Sistema operativo

.NET Framework

Common Type

System

Common Language Runtime

Componentes diseñados

Services: .NET and COM+

SQL Server BizTalk ...

Lenguajes:

C#, Visual Basic, etc

Aplicaciones.NET

Servidores Enterprise

...Office.Net ...

Servicios Web

Plataforma .NET y .NET Plataforma .NET y .NET FrameworkFramework

Page 13: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Diagrama del .NET Diagrama del .NET FrameworkFramework

Base Classes

Data & XML

UserInterface

Common Language Runtime

WebServices

Ba

se F

ram

e

Page 14: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Beneficios claves de .NETBeneficios claves de .NET

Facilidad de usoFacilidad de uso Modelo orientado a objetosModelo orientado a objetos

todo es un objeto.todo es un objeto. Los espacios de nombres y la estructura Los espacios de nombres y la estructura

misma del Frameworkmisma del Framework Fácil de comprender y usar.Fácil de comprender y usar. Esquema de nombres de los espacios de Esquema de nombres de los espacios de

nombres refleja su funcionalidad nombres refleja su funcionalidad subyacente.subyacente.

Page 15: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Beneficios claves de .NETBeneficios claves de .NET

Libertad de elección:Libertad de elección: El lenguaje que satisface sus necesidades.El lenguaje que satisface sus necesidades. La herramienta de desarrollo con que esté más La herramienta de desarrollo con que esté más

familiarizado.familiarizado. EstabilidadEstabilidad

No más falta de memoria.No más falta de memoria. El recolector de “basura” administra la El recolector de “basura” administra la

memoriamemoria Eliminados los problemas de incompatibilidad Eliminados los problemas de incompatibilidad

con DLLscon DLLs SeguridadSeguridad

Es imposible hacer referencia a una zona de Es imposible hacer referencia a una zona de memoria que no pertenezca a quien la memoria que no pertenezca a quien la referenciareferencia

Modelo de seguridad consistenteModelo de seguridad consistente

Page 16: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Beneficios claves de .NETBeneficios claves de .NET

Distribución y mantenimientoDistribución y mantenimiento Distribución : el código es “ensamblado” Distribución : el código es “ensamblado”

y ejecutado de forma “segura”.y ejecutado de forma “segura”. Mantenimiento : simplificado el Mantenimiento : simplificado el

mantenimiento del versionadomantenimiento del versionado

Experiencia unificadaExperiencia unificada Integra servicios diferentes en una Integra servicios diferentes en una

solución nueva, unificada.solución nueva, unificada.

Page 17: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Beneficios claves de .NETBeneficios claves de .NET

Servicios WebServicios Web La Web “La Web “del modo que la quierasdel modo que la quieras””

En cualquier lugar.En cualquier lugar. En cualquier momento.En cualquier momento. En cualquier dispositivo.En cualquier dispositivo.

Page 18: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ResumenResumen 1/21/2

La plataforma .NET provee los medios La plataforma .NET provee los medios para:para: Distribuir soluciones donde quiera, en Distribuir soluciones donde quiera, en

cualquier momento y hacia cualquier cualquier momento y hacia cualquier dispositivo.dispositivo.

Migrar soluciones heredadas.Migrar soluciones heredadas. Desarrollar usando las herramientas y Desarrollar usando las herramientas y

lenguajes de tu elección.lenguajes de tu elección.

Page 19: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ResumenResumen 2/22/2

La plataforma .NET provee los medios La plataforma .NET provee los medios para:para: Crear soluciones abiertas sobre Crear soluciones abiertas sobre

estandares abiertos.estandares abiertos. Mejor desarrollo, distribución y Mejor desarrollo, distribución y

mantenimento de solucionesmantenimento de soluciones Crear y usar servicios WebCrear y usar servicios Web

Page 20: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Resumen sobre C#Resumen sobre C#

Sistemas orientados a Sistemas orientados a componentescomponentes

Conceptos de componentes Conceptos de componentes en .NETen .NET

Por qué C#?Por qué C#?

Page 21: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sistemas orientadas a Sistemas orientadas a componentescomponentes 1/21/2

COMCOM Modelo de componentes mas exitoso Modelo de componentes mas exitoso

en la historiaen la historia Hace posible la integración entre Hace posible la integración entre

organizaciones y la rehusabilidadorganizaciones y la rehusabilidad

Page 22: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

No obstante:No obstante:

Actualmente COM muestra su edadActualmente COM muestra su edad DCOM no tiene buen desempeño sobre InternetDCOM no tiene buen desempeño sobre Internet Más sistemas basados en componentes, más “Infierno Más sistemas basados en componentes, más “Infierno

de las DLL"de las DLL" Difícil de implementar aún con herramientas ya madurasDifícil de implementar aún con herramientas ya maduras

COM no es exactamente independiente del lenguajeCOM no es exactamente independiente del lenguaje Asume determinadas caracteristicas sobre el caracter Asume determinadas caracteristicas sobre el caracter

binario de los datos.binario de los datos.

Sistemas orientadas a Sistemas orientadas a componentescomponentes 1/21/2

Page 23: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Conceptos de componentes Conceptos de componentes en .NETen .NET 1/21/2

Toma lo mejor de COM+Toma lo mejor de COM+ Interfaces como contratos abstractosInterfaces como contratos abstractos Los componentes implementan y Los componentes implementan y

publican interfacespublican interfaces Exploración dinámica de Exploración dinámica de

capacidades y contratoscapacidades y contratos

Page 24: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Conceptos de componentes Conceptos de componentes en .NETen .NET 2/22/2

IncorporaIncorpora Verdadera orientación a objetosVerdadera orientación a objetos Modelo nativo de eventosModelo nativo de eventos Sistema de tipos y runtime independientes Sistema de tipos y runtime independientes

del lenguajedel lenguaje Extensibilidad a todos los nivelesExtensibilidad a todos los niveles

Page 25: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Por qué C#?Por qué C#?

Lenguaje orientado a componentesLenguaje orientado a componentes Desarrollado sobre la experiencia de COM+Desarrollado sobre la experiencia de COM+ Soporte nativo paraSoporte nativo para

Espacios de nombresEspacios de nombres VersionadoVersionado Desarrollado manejado por atributosDesarrollado manejado por atributos

Page 26: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Potencia de C con la facilidad de uso de Potencia de C con la facilidad de uso de Microsoft Visual BasicMicrosoft Visual Basic®®

Curva de aprendizaje mínimaCurva de aprendizaje mínima Código mucho mas claro que C++Código mucho mas claro que C++ Más estructurado que Visual BasicMás estructurado que Visual Basic Mas potente que JavaMas potente que Java

Por qué C#?Por qué C#?

Page 27: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Elementos de C#Elementos de C#

Estructura y formaEstructura y forma Sistema de tipos de C#Sistema de tipos de C# Entendiendo el lenguaje C#Entendiendo el lenguaje C#

Page 28: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Forma y estructuraForma y estructura No posee ficheros de cabecera No posee ficheros de cabecera

““headerheader”” C# emplea el modelo "definición C# emplea el modelo "definición

junto a declaración"junto a declaración" Visual Basic, Pascal, Modula, JavaVisual Basic, Pascal, Modula, Java

Similar a la implementación Similar a la implementación “inline” de C++“inline” de C++ Sin implicación en la generación de Sin implicación en la generación de

códigocódigo

Compilación condicional pero sin Compilación condicional pero sin soporte para macrossoporte para macros

Page 29: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sistema de tiposSistema de tipos 1/21/2

Desarrollado directamente sobre el Desarrollado directamente sobre el Common Type System de .NET Common Type System de .NET FrameworkFramework

Acceso nativo al CTS .NETAcceso nativo al CTS .NET C# fue concebido sobre .NETC# fue concebido sobre .NET

Page 30: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Conceptos principales:Conceptos principales: Todo es objetoTodo es objeto

Absolutamente todos los tipos heredan Absolutamente todos los tipos heredan implicitamente del System.Objectimplicitamente del System.Object

Distinción clara entre tipos por valor y Distinción clara entre tipos por valor y por referenciapor referencia Por Valor: Tipos Simples, Enumerados, Por Valor: Tipos Simples, Enumerados,

EstructurasEstructuras Por referencia: Interfaces, Clases, ArreglosPor referencia: Interfaces, Clases, Arreglos

Sistema de tiposSistema de tipos 2/22/2

Page 31: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Tipos SimplesTipos Simples

Tipos enterosTipos enterosbytebyte, , sbytesbyte (8bit), (8bit), shortshort, , ushortushort (16bit) (16bit) intint, , uintuint (32bit), (32bit), longlong, , ulongulong (64bit) (64bit)

Tipos flotantes IEEETipos flotantes IEEE float float (precisión de 7 dígitos)(precisión de 7 dígitos)double double (precisión de 15–16 dígitos)(precisión de 15–16 dígitos)

Page 32: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Tipo numéricos exactosTipo numéricos exactos decimaldecimal (28 dígitos significativos) (28 dígitos significativos)

Tipos Caracter Tipos Caracter charchar (un único caracter) (un único caracter) stringstring (cadena de caracteres, tipo por (cadena de caracteres, tipo por

referencia)referencia)

Tipo BooleanTipo Boolean boolbool (tipo distintivo, no es equivalente al (tipo distintivo, no es equivalente al

int)int)

Tipos SimplesTipos Simples

Page 33: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

EnumeradosEnumerados

Nombrar elementos usando Nombrar elementos usando nombre en vez de númerosnombre en vez de números

Mejor usar "Color.Azul" que "3"Mejor usar "Color.Azul" que "3" Más legible, de más fácil Más legible, de más fácil

mantenimientomantenimiento Tipo por valor por lo que es tan ligero Tipo por valor por lo que es tan ligero

como un como un intint

Ejemplo:Ejemplo: enum Color { Rojo, Verde, Azul, };

Page 34: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ArreglosArreglos 1/21/2

Indexados a partir de CeroIndexados a partir de Cero Desarrollados a partir de la clase Desarrollados a partir de la clase

System.ArraySystem.Array Declarados con tipo y formas, pero Declarados con tipo y formas, pero

sin tamaño límitesin tamaño límite int[] SingleDim; int[] SingleDim; int[,] TwoDim; int[,] TwoDim; int [][] Jagged; (dentados)int [][] Jagged; (dentados)

Page 35: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ArreglosArreglos 2/22/2

Creados usando Creados usando newnew con límites o con límites o inicializadoresinicializadores SingleDim = new int[20];SingleDim = new int[20]; TwoDim = new int[,]{{1,2,3},{4,5,6}};TwoDim = new int[,]{{1,2,3},{4,5,6}}; Jagged = new int[1][]; Jagged = new int[1][];

Jagged[0] = new int[]{1,2,3};Jagged[0] = new int[]{1,2,3};

Page 36: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Clases Clases 1/21/2

Implementación de código y datosImplementación de código y datos Representa una unidad semánticaRepresenta una unidad semántica

Implementa interfacesImplementa interfaces No herencia múltipleNo herencia múltiple

Page 37: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ClasesClases 2/22/2

Clases pueden contener:Clases pueden contener: Campos: variables Campos: variables

miembrosmiembros Propiedades: valores Propiedades: valores

accesibles a través de los accesibles a través de los pares de métodos pares de métodos getget//setset

Métodos: funcionalidad de Métodos: funcionalidad de los objetos o claseslos objetos o clases

Especiales: eventos, Especiales: eventos, indexers, delegadosindexers, delegados

public class Person : IPersonAge{ private int YOB;

public Person() { }

public int YearOfBirth { get { return YOB; }; set { YOB = value; }; }

}

Page 38: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

EstructurasEstructuras

Grupos de código y datosGrupos de código y datos Similar a las clases, sin embargo:Similar a las clases, sin embargo:

No se permite la herenciaNo se permite la herencia Siempre se almacenan por valorSiempre se almacenan por valor

Desarrolladores de C++Desarrolladores de C++ Estructuras no son una clase con Estructuras no son una clase con

todos sus miembros públicostodos sus miembros públicos

Ejemplo:Ejemplo: struct Point{ double X; double Y; void MoveBy(double dX, double dY) { X+=dX; Y+=dY; }}

Page 39: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

PropiedadesPropiedades

Unión entre campos y métodosUnión entre campos y métodos Se recomienda su uso en:Se recomienda su uso en:

Implementación de miembros de solo Implementación de miembros de solo lectura lectura (omitiendo la claúsula (omitiendo la claúsula setset))

Validación durante la asignaciónValidación durante la asignación Valores calculados o compuestosValores calculados o compuestos

Ejemplo:Ejemplo:string Name { get { return name; } set { name = value; } }

Page 40: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

IndicesIndices

Modo consistente para la construcción Modo consistente para la construcción de contenedoresde contenedores

Construidos sobre la filosofía de las Construidos sobre la filosofía de las ““propiedadespropiedades””

Posibilita el acceso indizado a los Posibilita el acceso indizado a los objetosobjetos

Calificador del indice puede ser de Calificador del indice puede ser de cualquier tipocualquier tipo

Ejemplo:Ejemplo:object this[string index]{ get { return Dict.Item(index); } set { Dict.Add(index,value); } }

Page 41: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Convertidos por el compilador en Convertidos por el compilador en llamadas a métodos, para facilitar la llamadas a métodos, para facilitar la interoperabilidad entre lenguajesinteroperabilidad entre lenguajes

IndicesIndices

<tipoIndizador> <tipoIndizador> get_Item(get_Item(<índices><índices>)){{

<códigoLectura><códigoLectura>}}

voidvoid set_Item(set_Item(<índices><índices>, , <tipoIndizador> value<tipoIndizador> value)){{

<códigoEscritura><códigoEscritura>}}

Page 42: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

DelegadosDelegados

DelegadosDelegados Similares a los punteros a función de Similares a los punteros a función de

C y C++C y C++ Fuerte chequeo de tipos, lo que Fuerte chequeo de tipos, lo que

impide la confusión antes existente en impide la confusión antes existente en relación con los type-castrelación con los type-cast

Ejemplo:Ejemplo:

delegate void Clicked(Element e, Point p);

Page 43: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

InstruccionesInstrucciones

Similares a C, C++: control de Similares a C, C++: control de flujos y ciclosflujos y ciclos if (<bool expr>) { ... } else { ... };if (<bool expr>) { ... } else { ... }; switch(<var>) { case <const>: ...; };switch(<var>) { case <const>: ...; }; while (<bool expr>) { ... };while (<bool expr>) { ... }; for (<init>;<bool test>;<modify>) { ... };for (<init>;<bool test>;<modify>) { ... }; do { ... } while (<bool expr>);do { ... } while (<bool expr>);

Page 44: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

InstruccionesInstrucciones

Diferentes a C, C++:Diferentes a C, C++: lock(<object>){ ... };lock(<object>){ ... };

Sincronización de secciones críticas es Sincronización de secciones críticas es inherente al lenguajeinherente al lenguaje

checked {...}; unchecked { ...};checked {...}; unchecked { ...}; Protección contra el “Integer overflow”Protección contra el “Integer overflow”

Page 45: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Métodos para colecciones: Métodos para colecciones: foreachforeach Soporte directo a las iteraciones sobre las Soporte directo a las iteraciones sobre las

coleccionescolecciones Pueden ser usados por arreglos y otras Pueden ser usados por arreglos y otras

coleccionescolecciones Ademas se puede usar con cualquier otra Ademas se puede usar con cualquier otra

claseclase Implemente Implemente IEnumerableIEnumerable con el método con el método

GetEnumerator()GetEnumerator() Devolviendo un objeto implementado de Devolviendo un objeto implementado de

tipo tipo IEnumeratorIEnumerator Ejemplo:Ejemplo:

Point[] Points = GetPoints();foreach( Point p in Points ){ MyPen.MoveTo(p.x,p.y);}

Page 46: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

OperadoresOperadores 1/21/2

Similares a C:Similares a C: Lógicos/condicionales: Lógicos/condicionales: && || && || Aritméticos: Aritméticos: * / + - << >>* / + - << >> Relacionales: Relacionales: == != < > >= <=== != < > >= <=

No exactamente C:No exactamente C: Para bool: Para bool: && y y || son lógicos con son lógicos con

evaluación completa evaluación completa Para integer: Para integer: && y y || ejecutan AND/OR ejecutan AND/OR

binariosbinarios

Page 47: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Operadores Operadores 2/22/2

No similares a C:No similares a C: isis Prueba el tipo en tiempo de ejecuciónPrueba el tipo en tiempo de ejecución asas Convierte un valor a un tipo Convierte un valor a un tipo

especificadoespecificado typeoftypeof Devuelve el tipo en tiempo de ejecuciónDevuelve el tipo en tiempo de ejecución

Page 48: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sobre carga de operadoresSobre carga de operadores

La mayor parte pueden ser redefinidosLa mayor parte pueden ser redefinidos Aritméticos, relacionales, condicionales, Aritméticos, relacionales, condicionales,

y lógicosy lógicos No permitido para No permitido para

Operadores de asignaciónOperadores de asignación Operadores especiales (Operadores especiales (sizeof, new, is, sizeof, new, is,

typeoftypeof)) Ejemplo:Ejemplo:

Public static Total operator +(int Amount, Total t){ t.total += Amount;}

Page 49: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Modificadores de acceso Modificadores de acceso 1/21/2

Adopta el modelo C++Adopta el modelo C++ publicpublic cualquiera puede invocarlo o cualquiera puede invocarlo o

accederloaccederlo protected protected solamente los miembros solamente los miembros

pueden accederlopueden accederlo privateprivate solo los miembros de solo los miembros de

exactamente esta clase pueden accederloexactamente esta clase pueden accederlo

Page 50: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Modificadores de acceso Modificadores de acceso 2/22/2

Expande el modelo de C++ Expande el modelo de C++ sealed sealed No se puede usar como clase No se puede usar como clase

base de una jerarquíabase de una jerarquía internalinternal Acceso público solamente desde Acceso público solamente desde

su ensambladosu ensamblado protected internalprotected internal protegido dentro de su protegido dentro de su

ensambladoensamblado

Page 51: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

““Y los punteros?”Y los punteros?”

C# soportaC# soporta Tipo Tipo string string intrínsecointrínseco Modelo de recolección de basuraModelo de recolección de basura Parámetros por referencia usando Parámetros por referencia usando refref

void increment(ref int value, int by)void increment(ref int value, int by) Parámetros de salida usando Parámetros de salida usando outout

bool add(int a, int b, out int c)bool add(int a, int b, out int c) Punteros están disponibles para el código Punteros están disponibles para el código

marcado como marcado como unsafeunsafe

unsafe void crypt(byte[] arr) { byte * b = arr; ... }

Page 52: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Boxing y UnboxingBoxing y Unboxing

Tipos por valor pueden "boxed" y "unboxed"Tipos por valor pueden "boxed" y "unboxed" "Boxing" permite que los tipos por valor se "Boxing" permite que los tipos por valor se

traten por referenciatraten por referencia Basado en el tipo objeto implicito de todos los Basado en el tipo objeto implicito de todos los

tipos.tipos. Ponga el valor en una caja y referéncielaPonga el valor en una caja y referénciela

double Value;

// Boxingobject BoxedValue = Value;// UnboxingValue = (double)BoxedValue;

42 42

42

Unboxed: Copia

Boxed: Referencia

Page 53: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Recolección de basuraRecolección de basura Creación nuevos objetos y arreglos de Creación nuevos objetos y arreglos de

datosdatos Todos son creados mediante el uso de Todos son creados mediante el uso de newnew

El .NET runtime mantiene un registro El .NET runtime mantiene un registro automatico de todo el uso de la memoriaautomatico de todo el uso de la memoria

El recolector de basura automaticamente El recolector de basura automaticamente remueve todos los objetos que esten sin remueve todos los objetos que esten sin usouso

Un uso más eficiente de la memoriaUn uso más eficiente de la memoria Fácil de usar y “cero escapes de memoria”Fácil de usar y “cero escapes de memoria”

Page 54: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Manipulación de Manipulación de ExcepcionesExcepciones Similar a C++Similar a C++ Ejemplo:Ejemplo:

trytry ejecuta este códigoejecuta este código

......si ocurre un errorsi ocurre un error, , catchcatch que puedo hacer que puedo hacer en ese casoen ese caso ... ...

......finallyfinally me permite me permite realizar algun trabajo realizar algun trabajo manual de rescatemanual de rescate

try { //... run code}catch(SomeException e){ //... handle}finally{ //...end gracefully}

Page 55: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Diferencias con C++Diferencias con C++

C# es muy parecido a C/C++ C# es muy parecido a C/C++ Corrige la mayoría de sus errores:Corrige la mayoría de sus errores:

Estricto chequeo de tiposEstricto chequeo de tipos No más"fall-through" por No más"fall-through" por breakbreak en la en la

instrucción instrucción switchswitch Expresiones booleanas y las Expresiones booleanas y las

instrucciones que las involucran son instrucciones que las involucran son estrictamente chequeadas. estrictamente chequeadas.

Page 56: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Espacios de nombres Espacios de nombres 1/21/2

Toda definición debe estar Toda definición debe estar contenida en un espacio de contenida en un espacio de nombresnombres Impide colisiones de nombresImpide colisiones de nombres Organiza el códigoOrganiza el código

Pueden y deben ser anidadosPueden y deben ser anidados

Page 57: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Espacios de nombres 2/2Espacios de nombres 2/2

Agrupa clases y tipos por semánticaAgrupa clases y tipos por semántica Declarados con la palabra clave Declarados con la palabra clave

namespacenamespace Referenciados con Referenciados con usingusing

Page 58: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Herramientas disponiblesHerramientas disponibles

.NET Framework SDK—todo lo .NET Framework SDK—todo lo necesario para construir necesario para construir aplicacionesaplicaciones Compilador C#Compilador C# Debugger VisualDebugger Visual

Visual Studio.NET—the Visual Studio.NET—the productivity rocketproductivity rocket Ambiente de desarrollo optimizado Ambiente de desarrollo optimizado

para C#para C# ““Code wizards” y templatesCode wizards” y templates Ayuda inteligenteAyuda inteligente

Page 59: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

.NET Framework SDK.NET Framework SDK

Compilador de C# (+ Visual Basic, C+Compilador de C# (+ Visual Basic, C++, and JScript)+, and JScript) Todas las caracteristicas del lenguajeTodas las caracteristicas del lenguaje Ejecucion desde linea de comandosEjecucion desde linea de comandos

Visual Debugger—GuiDebugVisual Debugger—GuiDebug Desarrollado sobre la tecnologia Visual Desarrollado sobre la tecnologia Visual

Studio.NETStudio.NET Acceso completo a los metadatos en Acceso completo a los metadatos en

tiempo de ejecucióntiempo de ejecución

HerramientasHerramientas Nmake, security, configuration, IL Nmake, security, configuration, IL

Disassembler, ...Disassembler, ...

Libre para todosLibre para todos

Page 60: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Visual Studio.NETVisual Studio.NET

Desarrollado para .NET Framework SDKDesarrollado para .NET Framework SDK Reinvención del concepto de Visual Reinvención del concepto de Visual

Studio®, ahora con:Studio®, ahora con: Proyectos Multi-lenguajesProyectos Multi-lenguajes Un ambiente integrado de desarrollo para Un ambiente integrado de desarrollo para

todos los lenguajes y tareastodos los lenguajes y tareas Herramientas integradas: Visual Modeler, Herramientas integradas: Visual Modeler,

Database ManagementDatabase Management Perfecta integración de la ayudaPerfecta integración de la ayuda

Alta productividad para todo:Alta productividad para todo: RAD Rapid application developmentRAD Rapid application development Proyectos de gran escalaProyectos de gran escala

Page 61: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

El clásico comienzo:El clásico comienzo:

"Hello World!" in C#"Hello World!" in C#

Page 62: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Hello WorldHello World

namespace Samplenamespace Sample{{ using System; using System; public class HelloWorld public class HelloWorld { { public HelloWorld() public HelloWorld() { { } }

public static int Main(string[] args) public static int Main(string[] args) { { Console.WriteLine("Hello World!"); Console.WriteLine("Hello World!"); return 0; return 0; } } } }}}

Page 63: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Anatomía del “Hello Anatomía del “Hello World”World”

Contenido en su propio espacio de Contenido en su propio espacio de nombresnombres

Referencia otros espacios de nombres Referencia otros espacios de nombres con "using"con "using"

Declara una clase de aplicación Declara una clase de aplicación públicamente accesiblepúblicamente accesible

Punto de entrada "Punto de entrada "static int Main( ... )static int Main( ... )"" Escribe "Hello World!" en la consola Escribe "Hello World!" en la consola

del sistemadel sistema Usa el método estático Usa el método estático WriteLineWriteLine en en

System.ConsoleSystem.Console

Page 64: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

PreguntasPreguntas

Page 65: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Actividad OrientadasActividad Orientadas

Argumente las existencia o no de la Argumente las existencia o no de la característica multiplataforma de la característica multiplataforma de la tecnología .NETtecnología .NET

Bibliografía: Project MONO http://www.go-mono.com/Bibliografía: Project MONO http://www.go-mono.com/

Page 66: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

SintaxisSintaxis

switch (switch (<expresión><expresión>)){{

case case <valor1><valor1>:: <bloque1> <bloque1> <siguienteAcción><siguienteAcción>

case case <valor2><valor2>:: <bloque2> <bloque2> <siguienteAcción><siguienteAcción>

......default:default: <bloqueDefault> <bloqueDefault>

<siguienteAcción><siguienteAcción>}}

Donde <siguiente acción> puede tener los siguientes valores:Donde <siguiente acción> puede tener los siguientes valores:1.1. goto case <valori>;goto case <valori>;2.2. goto default;goto default;3.3. break;break;

RegresarRegresar

Page 67: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ADO.NETADO.NET

Page 68: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ContenidoContenido

Diferencias entre ADO y ADO.NETDiferencias entre ADO y ADO.NET Beneficios de ADO.NETBeneficios de ADO.NET Conceptos y arquitectura de la base de Conceptos y arquitectura de la base de

ADO.NET ADO.NET El Modelo de Objeto de ADO.NETEl Modelo de Objeto de ADO.NET DataSetDataSet y Data Views y Data Views Administración de proveedoresAdministración de proveedores

Page 69: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ADO.NET y .NET FrameworkADO.NET y .NET Framework

Microsoft .NET Framework

Common Language Runtime

Clases Bajas

Web Services Interface de Usuario

Data y XML

ADO.NET XML ... ...

Page 70: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ADO vs. ADO.NET 1/2ADO vs. ADO.NET 1/2

ADOADO Diseñado para accesos conectadosDiseñado para accesos conectados Atado al modelo físico de los datos Atado al modelo físico de los datos El El RecordSetRecordSet es el contenedor central de datos es el contenedor central de datos ElEl RecordSet RecordSet es una (1) tabla que contiene todos los datos es una (1) tabla que contiene todos los datos

Recuperar datos desde > 1 tabla o recurso, requiere un JOIN de base de Recuperar datos desde > 1 tabla o recurso, requiere un JOIN de base de datosdatos

Los datos son “aplanados”: se pierden las relaciones; la navegación es Los datos son “aplanados”: se pierden las relaciones; la navegación es secuencialsecuencial

Los tipos de datos son limitados al tipo de datos COM/COM+Los tipos de datos son limitados al tipo de datos COM/COM+ Los datos se comparten mediante las vías que provee COMLos datos se comparten mediante las vías que provee COM Problemas con la transferencia a través de firewalls (DCOM, Problemas con la transferencia a través de firewalls (DCOM,

binary)binary)

Page 71: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ADO vs. ADO.NET 2/2ADO vs. ADO.NET 2/2

ADO.NETADO.NET Diseñado para accesos desconectadosDiseñado para accesos desconectados Puede modelar los datos de forma lógica!Puede modelar los datos de forma lógica! El El DataSet DataSet reemplaza elreemplaza el RecordSet RecordSet DataSetDataSet puede contener varias tablas puede contener varias tablas

Recuperar datos desde >1 tabla o fuente no requiere de Recuperar datos desde >1 tabla o fuente no requiere de JOINJOIN

Las relaciones son preservadas: la navegación es Las relaciones son preservadas: la navegación es relacionalrelacional

Los tipos de datos solo son limitados por el Los tipos de datos solo son limitados por el esquema XMLesquema XML

No se necesita conversiones de tipos de datosNo se necesita conversiones de tipos de datos Tanto XML, como HTML, son textos planos: Tanto XML, como HTML, son textos planos:

“Firewall friendly”“Firewall friendly”

Page 72: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Beneficios de ADO.NETBeneficios de ADO.NET

Interoperabilidad a través del uso de XML Interoperabilidad a través del uso de XML Norma abiertaNorma abierta Texto humanamente leíble y descifrableTexto humanamente leíble y descifrable Los datos se describen por si mismos—asi es XMLLos datos se describen por si mismos—asi es XML Usado para la transferencia de todos los datos en ADO.NETUsado para la transferencia de todos los datos en ADO.NET

Escalabilidad a través del Escalabilidad a través del DataSet DataSet desconectadodesconectado Las conexiones no se mantienen por periodos largosLas conexiones no se mantienen por periodos largos La base de datos no se bloqueaLa base de datos no se bloquea E trabajo se realiza a la manera de trabajos Web: “Hit and E trabajo se realiza a la manera de trabajos Web: “Hit and

Run!”Run!”

MantenimientoMantenimiento Separación de la lógica de los datos y la Interfaz de usuarioSeparación de la lógica de los datos y la Interfaz de usuario

Page 73: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Mejoras de Mejoras de Visual Visual Studio.NETStudio.NET ProgramableProgramable

““Typed programming”, un estilo de programaciónTyped programming”, un estilo de programación Uso de palabras end-user : Facilita leer y escribir Uso de palabras end-user : Facilita leer y escribir Completamiento de la declaración en Microsoft Visual Completamiento de la declaración en Microsoft Visual

Studio.NETStudio.NET Mas seguro: Proporciona el chequeo de compilación Mas seguro: Proporciona el chequeo de compilación

Ejemplos:Ejemplos: Untyped: Untyped:

en enTable("Customer")("Jones").Column(“Balance”)Table("Customer")("Jones").Column(“Balance”) Typed:Typed:

myDataSet.Customer("Jones").BalancemyDataSet.Customer("Jones").Balance

Ayuda de apoyoAyuda de apoyo

Page 74: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Conceptos principales y Conceptos principales y ArquitecturaArquitectura

El Modelo de Objeto ADO.NETEl Modelo de Objeto ADO.NET Proveedores de administraciónProveedores de administración ObjetosObjetos DataSet DataSet

Espacios de Nombres relacionados con Espacios de Nombres relacionados con ADO.NETADO.NET System.Data System.Data System.Data.ADOSystem.Data.ADO System.Data.InternalSystem.Data.Internal System.Data.SQLSystem.Data.SQL System.Data.SQLTypesSystem.Data.SQLTypes

Page 75: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Espacios de Nombres Espacios de Nombres relacionados con ADO.NETrelacionados con ADO.NET

ADO.NET

System.Data

.ADO.SQL.SQLTypes .Internal

Page 76: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

El Modelo de Objeto El Modelo de Objeto ADO.NETADO.NET DataSetDataSet Proveedores de administraciónProveedores de administración

Page 77: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data 1/2System.Data 1/2

Contiene la base y el volumen de ADO.NETContiene la base y el volumen de ADO.NET Nombre de espacio Data-centricNombre de espacio Data-centric Brinda los medios para el trabajo en y con los Brinda los medios para el trabajo en y con los

datos!datos! Clases y métodos para manipular los datosClases y métodos para manipular los datos Capacidad para crear consultas de los Capacidad para crear consultas de los

datosdatos Medios para representar de forma lógica Medios para representar de forma lógica

los datoslos datos Permite el uso de XML para ver, compartir Permite el uso de XML para ver, compartir

y almacenar los datosy almacenar los datos

Page 78: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data 2/2System.Data 2/2

System.Data

DataTable

DataRow

DataRelation

DataColumn

DataSetView

DataSet

Contiene las clases principales de ADO.NETContiene las clases principales de ADO.NET Cache In-Memory de datosCache In-Memory de datos

Cache In-Memory de una tabla de BDCache In-Memory de una tabla de BD

Manipulación de una columna en un Manipulación de una columna en un DataTable

Definicion de columnas en un Definicion de columnas en un DataTable

Relaionar 2 Relaionar 2 DataTables entre si

Crear una vista en un Crear una vista en un DataSet

Page 79: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data y DataSet—System.Data y DataSet—OverviewOverview

DataSet Tables

DataTable

Relations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

DataSetView

Page 80: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataSet 1/3System.Data—DataSet 1/3

Una cache en memoria de datos de una fuente de Una cache en memoria de datos de una fuente de datosdatos

Forma común de representar y manipular datosForma común de representar y manipular datos Contenedor universal de datosContenedor universal de datos No para uso justamente con base de datosNo para uso justamente con base de datos

Representación lógica o física de datos; dependen Representación lógica o física de datos; dependen de: de: El conjunto de resultadosEl conjunto de resultados Si DataTables y Relations existenSi DataTables y Relations existen

Diseñado para ser desconectado de la fuente de Diseñado para ser desconectado de la fuente de datos datos Conectar, ejecutar consulta y desconectarConectar, ejecutar consulta y desconectar

XML usado para leer y escribir datos y esquemasXML usado para leer y escribir datos y esquemas

Page 81: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataSet 2/3System.Data—DataSet 2/3

Las colecciones son utilizadas para adicionar y Las colecciones son utilizadas para adicionar y eliminar tablas y relacioneseliminar tablas y relaciones

Propiedades de interés:Propiedades de interés: TablesTables: Devuelve una colección de objetos : Devuelve una colección de objetos DataTableDataTable RelationsRelations: Devuelve una colección de : Devuelve una colección de DataRelationDataRelationss XMLXML: Obtiene o coloca la definición de : Obtiene o coloca la definición de DataSetDataSet como XML como XML XMLDataXMLData: Obtiene o coloca el dato : Obtiene o coloca el dato DataSetDataSet’s como XML’s como XML XMLSchemaXMLSchema: Obtiene o coloca el esquema : Obtiene o coloca el esquema DataSetDataSet como como

XML XML NamespaceNamespace: Obtiene o coloca el nombre de espacio del : Obtiene o coloca el nombre de espacio del

DataSetDataSet

Ejemplo de uso de las propiedades:Ejemplo de uso de las propiedades: aTableCollection=aDS.Tables.Add(aTable);aTableCollection=aDS.Tables.Add(aTable);

Page 82: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataSet 3/3System.Data—DataSet 3/3

Universal Data Container

DataSet: No es solo para Bases de Datos

Page 83: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataTableSystem.Data—DataTable

Puede ser mapeado a una tabla física en la fuente de datosPuede ser mapeado a una tabla física en la fuente de datos Pueden relacionarse por medio de Pueden relacionarse por medio de DataRelationDataRelationss Concurrencia optimista o modelo fijoConcurrencia optimista o modelo fijo Propiedades de interés:Propiedades de interés:

ColumnsColumns: Devuelve objetos : Devuelve objetos ColumnsCollectionColumnsCollection de de DataColumnDataColumnss

RowsRows: Devuelve objetos : Devuelve objetos DataRow DataRow como objetos como objetos RowsCollectionRowsCollection

ParentRelationsParentRelations: Devuelve un objeto : Devuelve un objeto RelationsCollectionRelationsCollection ConstraintsConstraints: Devuelve un objeto : Devuelve un objeto ConstraintsCollection ConstraintsCollection de las de las

tablastablas DataSetDataSet: Devuelve un objeto : Devuelve un objeto DataSetDataSet de uno de uno DataTableDataTable PrimaryKeyPrimaryKey: Obtiene el objeto : Obtiene el objeto DataColumnDataColumns el cual crea la s el cual crea la

llave primaria de las tablasllave primaria de las tablas

Page 84: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataSet y System.Data—DataSet y DataTableDataTable Crear un objeto Crear un objeto DataTableDataTable y adicionarlo a y adicionarlo a

uno uno DataSetDataSetDataSet ds = new DataSet();

// Create DataTable object: “Customers”.DataTable dt= new DataTable( “Customers” );

// Create and add columns to the table// 1. Explicitly create and Add a DataColumnDataColumn dc = new DataColumn( “CustID”, Int16 );dt.Columns.Add( dc );

// 2. Implicitly Create and Add columns (DataColumn).dt.Columns.Add( “First_Name”, String );dt.Columns.Add( “Last_Name”, String );

// Add the DataTable object to the DataSetds.Tables.Add( dt );

Page 85: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataRelation System.Data—DataRelation 1/21/2 Usado para crear relaciones lógicas Usado para crear relaciones lógicas

Crea relaciones entre (2) objetos Crea relaciones entre (2) objetos DataTable DataTable Requiere un objeto Requiere un objeto DataColumnDataColumn de cada objeto de cada objeto DataTableDataTable El El DataTypeDataType de ambos de ambos DataColumnsDataColumns tiene que ser el mismo tiene que ser el mismo

No se puede relacionar un No se puede relacionar un Int32 DataColumnInt32 DataColumn con un con un String String DataColumnDataColumn

La relación es nombrada (por usted!)La relación es nombrada (por usted!) DataRelation dr=new DataRelation( “myRelation”,...)DataRelation dr=new DataRelation( “myRelation”,...)

Hace la navegación relacional posibleHace la navegación relacional posible RelationsCollection RelationsCollection contiene todos los objetos contiene todos los objetos DataRelationDataRelationss

Accedido a través de las propiedades del Accedido a través de las propiedades del DataSetDataSet’s ’s RelationsRelations

Page 86: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataRelation System.Data—DataRelation 2/22/2 Como crear un objeto Como crear un objeto DataRelationDataRelation::

Se obtienen los objetos Se obtienen los objetos DataColumnDataColumn para relacionar para relacionar Crear un objeto Crear un objeto DataRelationDataRelation nombrado usando las columnas nombrado usando las columnas Adicionar la relación al Adicionar la relación al DataSetDataSet

// Building on the DataTable example earlier...// Get the DataTable DataColumns we need to relate...DataColumn parentCol, childCol;

parentCol= DataSet.Tables["Customers"].Columns["CustID"];childCol = DataSet.Tables["Orders“].Columns["CustID"];

// Create DataRelation with the name “CustomerOrders”... DataRelation dr; dr = New DataRelation("CustomersOrders", parentCol,

childCol); // Add the relation to the DataSet... ds.Relations.Add( dr );

Page 87: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataSet y XMLSystem.Data—DataSet y XML

DataSetDataSet puede leer y escribir XML para sus datos y/o esquemas puede leer y escribir XML para sus datos y/o esquemas Significa que: Usted puede crear o modificar un objeto Significa que: Usted puede crear o modificar un objeto

DataSetDataSet usando XML! usando XML! XML-relacionado a XML-relacionado a DataSet.DataSet. Métodos para leer: Métodos para leer:

ReadXmlReadXml: Lee un esquema o dato XML dentro de un : Lee un esquema o dato XML dentro de un DataSetDataSet ReadXmlDataReadXmlData: Lee datos XML dentro de un : Lee datos XML dentro de un DataSetDataSet ReadXmlSchemaReadXmlSchema: Lee un esquema XML dentro de un : Lee un esquema XML dentro de un DataSetDataSet

Y para escribir: Y para escribir: WriteXmlWriteXml, , WriteXmlDataWriteXmlData, , WriteXmlSchemaWriteXmlSchema Propiedades XML-related : Propiedades XML-related :

XmlXml, , XmlDataXmlData, , XmlSchema, XmlSchema, y y NamespaceNamespace DiffGramsDiffGrams

Page 88: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Métodos para leer y escribir Métodos para leer y escribir XMLXML// Code for creating the DataSet mds and loading the

// DataSet from a data source not shown.

String oFile = “C:\\My_ADO.NET\\myXmlOutput.xsd”;String iFile = “C:\\My_ADO.NET\\myXmlInput.xsd”;

// Write the DataSet’s XMLSchema to an XML Documentmds.WriteXmlSchema( oFile );

// Read/Upload XML Data into the DataSetmds.ReadXmlData( iFile, true );

// Write the existing Data to an XML Documentmds.WriteXmlSchema( “C:\\My_ADO.NET\\myXmlData.txt );

// Or output the XML Data using the XmlData property!Console.WriteLine( mds.XmlData );

Page 89: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataViewSystem.Data—DataView

Crear múltiples vistas en un objeto Crear múltiples vistas en un objeto DataTableDataTable Invisible a los controles de Interfase de usuarioInvisible a los controles de Interfase de usuario Propiedades de interés:Propiedades de interés:

ItemItem: Recupera una fila de datos de una tabla especifica: Recupera una fila de datos de una tabla especifica TableTable: Recupera o coloca el : Recupera o coloca el DataTable DataTable asociadoasociado SortSort: Obtiene o coloca la clase de columna de la tabla y : Obtiene o coloca la clase de columna de la tabla y

el orden de la claseel orden de la clase RowFilterRowFilter: Obtiene o fija la expresión utilizada para filtrar : Obtiene o fija la expresión utilizada para filtrar

las filas las filas RowStateFilterRowStateFilter: Consigue o fija el filtro del estado de la fila : Consigue o fija el filtro del estado de la fila

     NoneNone, , UnchangedUnchanged, , NewNew, , DeletedDeleted, , ModifiedCurrentModifiedCurrent, y , y

otrosotros

Page 90: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Ejemplo de System.Data—Ejemplo de System.Data—DataViewDataView Creando objetosCreando objetos DataViewDataView// Code for myTable “Customers” with // “Name” column not shownDataView view1 = new DataView( myTable )DataView view2 = new DataView( myTable );// Creates Ascending view of Customers by “Name”view1.Sort = “Name ASC”;

// Set the view to show only modified (original) rows view2.RowStateFilter= DataViewRowState.ModifiedOriginal;

// Bind to UI element(s)... DataGrid myGrid = new DataGrid();myGrid.SetDataBinding( view1, “Customer”);//...

Page 91: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataSetViewSystem.Data—DataSetView

Similar a un Similar a un DataViewDataView pero orientado a pero orientado a DataSetDataSet

Usado para crear múltiples vistas en un Usado para crear múltiples vistas en un DataSetDataSet Capacidad de fijar automáticamente los filtros en Capacidad de fijar automáticamente los filtros en

las tablas las tablas

Propiedades de interés:Propiedades de interés: TableSettingsTableSettings: Obtiene/fija los ajustes de las : Obtiene/fija los ajustes de las

vistas en la tablavistas en la tabla DataSetDataSet: Obtiene o fija el : Obtiene o fija el DataSetDataSet para crear la para crear la

vistavista

Page 92: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—DataSetView System.Data—DataSetView SampleSample

Creando un objeto Creando un objeto DataSetViewDataSetView usando un usando un DataSetDataSet// Create the views...DataSetView dsView1 = new DataSetView( myDS );

// Create TableSetting objects...TableSetting ts1, ts2 ;

ts1 = new TableSetting( myDS.Tables[“Orders”], “CustID”, “CustID<100”, DataViewRowState.CurrentRows );ts2 = new TableSetting( myDS.Tables[“Orders”], “ProductId”, “ProductId>1011”, DataViewRowState.CurrentRows );

// Add TableSettings to the DataSetView...dsView.TableSettings.Add( ts1 );dsView.TableSettings.Add( ts2 );

// Bind to a UI element/control...

Page 93: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

DataSet, DataRelation, DataSet, DataRelation, Data…ViewsData…Views

TableSettings

DataSet Tables

DataTable

Relations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

DataSetView

TableSetting

TableSetting

Page 94: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ADO.NET y Proveedores de ADO.NET y Proveedores de AdministraciónAdministración Una colección de clases para el acceso a fuentes de Una colección de clases para el acceso a fuentes de

datos:datos: Microsoft SQL ServerMicrosoft SQL Server™™ 2000, SQL Server 7, y MSDE 2000, SQL Server 7, y MSDE Cualquier OLE Database (OLE DB) providersCualquier OLE Database (OLE DB) providers

Incluyendo: Oracle, JET, y SQL OLE DB ProvidersIncluyendo: Oracle, JET, y SQL OLE DB Providers Establecer conexión entre Establecer conexión entre DataSetDataSets y almacenes de datoss y almacenes de datos

Dos proveedores de administración:Dos proveedores de administración: ADO: por medio del nombre de espacio ADO: por medio del nombre de espacio System.Data.ADOSystem.Data.ADO SQL Server: por medio del nombre de espacio SQL Server: por medio del nombre de espacio

System.Data.SQLSystem.Data.SQL

System.Data.ADOSystem.Data.ADO es el es el proveedor de administraciónproveedor de administración de de ADO.NETADO.NET

Page 95: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

System.Data—Proveedores System.Data—Proveedores administradosadministrados

System.Data.InternalSystem.Data.Internal es confiable para varias es confiable para varias clases heredadasclases heredadas

System.Data

.ADO.SQL

ADOCommandADOConnectionADODataReaderADODataSetCommand

SQLCommandSQLConnectionSQLDataReader

SQLDataSetCommand

Page 96: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ADOConnection y ADOConnection y SQLConnectionSQLConnection Representa una sesión única con una fuente de datosRepresenta una sesión única con una fuente de datos Crear, abrir, cerrar una conexión a una fuente de Crear, abrir, cerrar una conexión a una fuente de

datosdatos Funcionalidad y métodos para desarrollar Funcionalidad y métodos para desarrollar

transaccionestransacciones EjemplosEjemplos dede ADOConnection ADOConnection : :

String conStr="Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=NWIND_RW.MDB";ADOConnection aConn = new ADOConnection(conStr);aConn.Open();// Execute Queries using ADODataSetCommand ClassaConn.Close();

Page 97: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Clase ADODataSetCommand Clase ADODataSetCommand 1/21/2 Es un puente entre un objeto Es un puente entre un objeto DataSetDataSet y el y el

almacén de datosalmacén de datos Se hereda de la clase Se hereda de la clase DataSetCommandDataSetCommand

Es el medio de modificación del Es el medio de modificación del DataSetDataSet y de y de la fuente de datosla fuente de datos

Data Store DataSetDataSetCommand

Page 98: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Clase ADODataSetCommand Clase ADODataSetCommand 2/22/2 Propiedades de interés:Propiedades de interés:

DeleteCommandDeleteCommand: El comando delete expresado en SQL: El comando delete expresado en SQL InsertCommandInsertCommand: Obtener o fijar el comando insert: Obtener o fijar el comando insert SelectCommandSelectCommand: Obtener o fijar el comando select : Obtener o fijar el comando select UpdateCommandUpdateCommand: Obtener o fijar el comando update : Obtener o fijar el comando update TableMappingsTableMappings: Maps source y : Maps source y DataTableDataTable

ADOCommandADOCommands recupera o fija mediante las propiedades s recupera o fija mediante las propiedades “command” “command”

Hereda métodos de la clase Hereda métodos de la clase DataSetCommandDataSetCommand public virtual int FillDataSet( DataSet public virtual int FillDataSet( DataSet dataSet dataSet );); public virtual int Update( DataSet public virtual int Update( DataSet dataSetdataSet ););

Page 99: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Clase ADOCommandClase ADOCommand

Representa una consulta a ejecutar en la fuente de Representa una consulta a ejecutar en la fuente de datosdatos

Propiedades de interés :Propiedades de interés : ActiveConnectionActiveConnection: Obtiene o fija la conexión a la fuente de : Obtiene o fija la conexión a la fuente de

datosdatos CommandTextCommandText: Obtiene o fija el comando de la consulta : Obtiene o fija el comando de la consulta

(texto)(texto) CommandTypeCommandType: Obtiene o fija la interpretación del texto del : Obtiene o fija la interpretación del texto del

comandocomando Texto, procedimiento almacenado, o nombre de la tablaTexto, procedimiento almacenado, o nombre de la tabla

CommandTimeoutCommandTimeout: Los segundos que faltan para terminar la : Los segundos que faltan para terminar la conexiónconexión

RecordsAffectedRecordsAffected: Números de records afectados por la : Números de records afectados por la consultaconsulta

Page 100: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ADODataReader 1/2ADODataReader 1/2

El acceso a los datos se realiza de manera Forward-El acceso a los datos se realiza de manera Forward-onlyonly

Modelo de programación “Lightweight”Modelo de programación “Lightweight” Se gasta menos que al usar Se gasta menos que al usar ADODataSetCommandADODataSetCommand

Instanciado por la clase Instanciado por la clase ADOCommandADOCommand con el método con el método ExecuteExecute

Ties up the Ties up the ADOCommandADOCommand until it is finished reading until it is finished reading

Page 101: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ADODataReader 2/2ADODataReader 2/2

Propiedades de interés:Propiedades de interés: FieldCountFieldCount: Devuelve el número de campos en el : Devuelve el número de campos en el

resultadoresultado HasMoreRows: HasMoreRows: Indica si hay más filas para Indica si hay más filas para

devolver devolver RowFetchCountRowFetchCount: Número de filas para devolver al : Número de filas para devolver al

mismo tiempomismo tiempo HasMoreResultsHasMoreResults: Indica que hay más resultados: Indica que hay más resultados

Métodos para devolver datos:Métodos para devolver datos: Por el tipo de la columna y el índice: Por el tipo de la columna y el índice: GetStringGetString, ,

GetInt32GetInt32, y otros, y otros ReadRead: Lectura avanzada al próximo record: Lectura avanzada al próximo record

Page 102: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Ejemplo de ADODataReaderEjemplo de ADODataReader// Code for creating the ADOConnection “adoConn” not shownString myQuery = “SELECT * FROM Customers”;adoConn.Open();ADOCommand myCmd = new ADOCommand( myQuery,adoConn );

// Declare the ADODataReader...ADODataReader myDataReader;

// Instantiate the ADODataReader with Execute(...) ...myCmd.Execute(out myDataReader);

// Always call Read before accessing data. while(myDataReader.Read())

{Console.WriteLine(myDataReader.GetString(0));

}

// Always Close the reader and the connection when donemyDataReader.Close();adoConn.Close();

Page 103: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

SumarioSumario

ADO.NET es la evolución de ADOADO.NET es la evolución de ADO Es un modelo centrado en Web, “desconectado”Es un modelo centrado en Web, “desconectado” Flexible en su capacidad de trabajar con datosFlexible en su capacidad de trabajar con datos Incrementa su capacidad para organizar los datos Incrementa su capacidad para organizar los datos

lógicamente lógicamente Soporte extenso para XML Soporte extenso para XML

Facilita el trabajo con datos y compartiendo Facilita el trabajo con datos y compartiendo datosdatos

Interactúa con una amplia variedad de fuente de Interactúa con una amplia variedad de fuente de datosdatos

Page 104: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ASP.NETASP.NET

Page 105: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ObjetivosObjetivos

Introducción al ASP.NET Conceptos y Arquitectura interna Características ASP.NET ASP.NET avanzado

ASP.NET y el Microsoft® .NET Framework

Page 106: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ContenidoContenido

Sección 1: DescripciónSección 1: Descripción Sección 2: Sección 2: Arquitectura internaArquitectura interna

Microsoft .NET Framework y ASP.NET Microsoft .NET Framework y ASP.NET ConfiguraciónConfiguración

Sección 3: Características de Sección 3: Características de ASP.NETASP.NET Administración, Seguridad, y Modelo de Administración, Seguridad, y Modelo de

eventoseventos

Sección 4: Sección 4: ASP.NET avanzadoASP.NET avanzado Web Forms Web Forms Trabajando con DatosTrabajando con Datos Migración desde ASP hacia ASP.NETMigración desde ASP hacia ASP.NET

Page 107: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sección 1: DescripciónSección 1: Descripción

““Mirando hacia atrás ...“Mirando hacia atrás ...“ ASP.NET Conceptos fundamentalesASP.NET Conceptos fundamentales

Page 108: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Mirando atrás: Active Mirando atrás: Active Server PagesServer Pages Qué es ASP?Qué es ASP?

Tecnología script del lado del servidorTecnología script del lado del servidor Ficheros contienen HTML y código scriptFicheros contienen HTML y código script Accesos pedidos via HTTPAccesos pedidos via HTTP Código script es interpretado en el Código script es interpretado en el

servidorservidor Qué se podemos lograr con ASP?Qué se podemos lograr con ASP?

Fácil y de manera inmediata podemos Fácil y de manera inmediata podemos crear aplicaciones Web simplescrear aplicaciones Web simples

Generar contenido Web dinámicoGenerar contenido Web dinámico Script del lado cliente para validacionesScript del lado cliente para validaciones Acceso a componentes COM para Acceso a componentes COM para

extender funcionalidadextender funcionalidad Bases de datosBases de datos

Page 109: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Qué está mal?Qué está mal?

Mezcla la forma (HTML) y la lógica (código Mezcla la forma (HTML) y la lógica (código script)script)

Interpretar el código Interpretar el código ASP trae como ASP trae como consecuencia una reducción del rendimientoconsecuencia una reducción del rendimiento

Uso deUso de lenguajes script que no son “strongly lenguajes script que no son “strongly typed“typed“ Microsoft Microsoft JScript®JScript® Microsoft Visual Basic® Scripting Edition (VBScript)Microsoft Visual Basic® Scripting Edition (VBScript)

Compatibilidad con los navegadoresCompatibilidad con los navegadores No implementa una gestión real del “estado”No implementa una gestión real del “estado”

No se pueden compartir estados entre servidores No se pueden compartir estados entre servidores WebWeb

Estado se pierde si el IIS colapsa.Estado se pierde si el IIS colapsa.

Actualizar ficheros solamente cuando el Actualizar ficheros solamente cuando el servidor esta fuera de servicioservidor esta fuera de servicio

Page 110: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ASP.NET Conceptos ASP.NET Conceptos fundamentalesfundamentales Plataforma de desarrollo WebPlataforma de desarrollo Web Nuevo modelo de programaciónNuevo modelo de programación

Cliente Web

Sistema Operativo

AplicacionesASP.NET

IIS

.NETFramework

Page 111: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ASP.NET Conceptos ASP.NET Conceptos fundamentalesfundamentales Separa forma de la lógica de negociosSepara forma de la lógica de negocios Usa servicios ofertados por el .NET Usa servicios ofertados por el .NET

FrameworkFramework EL código es compilado la primera vez EL código es compilado la primera vez

que la página es solicitadaque la página es solicitada Gestión real del “estado”Gestión real del “estado” Hace uso de lenguajes “serios” de Hace uso de lenguajes “serios” de

programaciónprogramación Integración inter-lenguajesIntegración inter-lenguajes

Actualización de ficheros sin sacar de Actualización de ficheros sin sacar de servicio el servidor!servicio el servidor!

Page 112: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sección 2: Arquitectura Sección 2: Arquitectura internainterna

La arquitectura de .NET La arquitectura de .NET FrameworkFramework

Modelo de aplicaciones WebModelo de aplicaciones Web ConfiguraciónConfiguración Jerarquía de clasesJerarquía de clases

Page 113: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Arquitectura .NET Arquitectura .NET FrameworkFramework

Microsoft .NET Framework

System Services

Common Language Runtime

ASP.NET

Web Forms Web ServicesWindows Forms

Services Framework

Base Data Debug ...

Page 114: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Modelo de aplicaciones Modelo de aplicaciones WebWeb

Código no gestionado

Código gestionado

...Request Handler

HTTP Module

HTTP Module

HTTP Runtime

Host (IIS, Internet Explorer)

Pedidos HTTP

Page 115: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

HTTP RuntimeHTTP Runtime

Código gestionadoCódigo gestionado Se ejecuta dentro de un proceso Se ejecuta dentro de un proceso

host no gestionadohost no gestionado

Diseñada para una disponibilidad Diseñada para una disponibilidad del 100%del 100% Procesamiento asincrónicoProcesamiento asincrónico de los de los

pedidospedidos MultihiloMultihilo

Sustitución de las ISAPISustitución de las ISAPI Internet Server Application Internet Server Application

Programming InterfaceProgramming Interface

Page 116: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Lista de módulos HTTPLista de módulos HTTP

Lista de módulos HTTPLista de módulos HTTP Clases gestionadasClases gestionadas Cada módulo implementa una interfaz Cada módulo implementa una interfaz

específicaespecífica Por ejemplo: administración del estado o la Por ejemplo: administración del estado o la

seguridadseguridad Todos los pedidos son enrutados a Todos los pedidos son enrutados a

través de la misma lista de módulos HTTPtravés de la misma lista de módulos HTTP Adición de módulos se realiza a través Adición de módulos se realiza a través

del Config.webdel Config.web Request handlerRequest handler

Clases gestionadasClases gestionadas Múltiples request handlers por cada Múltiples request handlers por cada

aplicaciónaplicación Pero solo uno por URLPero solo uno por URL

Page 117: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ConfiguraciónConfiguración 1/31/3

Conceptos y arquitecturaConceptos y arquitectura Fichero de configuración: Config.webFichero de configuración: Config.web

Basado en XMLBasado en XML Fichero es mantenido dentro del subdirectorio de Fichero es mantenido dentro del subdirectorio de

la aplicaciónla aplicación Cambios son detectados automáticamenteCambios son detectados automáticamente

Arquitectura de configuración jerárquicaArquitectura de configuración jerárquica Influye en el subdirectorio actual y en todos sus Influye en el subdirectorio actual y en todos sus

subdirectoriossubdirectorios

RootDir

SubDir1

SubDir2

Config.web

Page 118: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ConfiguraciónConfiguración 22/3/3

Ejemplo de Config.webEjemplo de Config.web

<configuration><configuration>

<configsections> <configsections> <add names=“httpmodules“ <add names=“httpmodules“ type=“System.Web.Config. type=“System.Web.Config. HttpModulesConfigHandler“/>HttpModulesConfigHandler“/> <add names=“sessionstate“ <add names=“sessionstate“ type=“...“/> type=“...“/> </configsections> </configsections>

<httpmodules> <httpmodules> <!--- http module subelements go here --> <!--- http module subelements go here --> </httpmodules> </httpmodules> <sessionstate> <sessionstate> <!--- sessionstate subelements go here --> <!--- sessionstate subelements go here --> </sessionstate> </sessionstate>

</configuration></configuration>

Page 119: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ConfiguraciónConfiguración 33/3/3

Configuración por defecto y personalidadaConfiguración por defecto y personalidada Config.web está localizado en Config.web está localizado en %windir%\%windir%\

Microsoft.NET\Framework\VersionMicrosoft.NET\Framework\Version Conjunto estándar manipuladores de la sección de Conjunto estándar manipuladores de la sección de

configuraciónconfiguración Características de los navegadores soportados, Características de los navegadores soportados,

mensajes de error personalizados, etcmensajes de error personalizados, etc Configuración personalizadaConfiguración personalizada

Extienda el conjunto de manipuladores de sección con Extienda el conjunto de manipuladores de sección con los suyos propioslos suyos propios

Implementación de la interface:Implementación de la interface: System.Web.Configuration.IConfigurationSectionHandlerSystem.Web.Configuration.IConfigurationSectionHandler

Problemas con Problemas con Directorios virtualesDirectorios virtuales Ficheros que no son ASP.NETFicheros que no son ASP.NET

Page 120: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Jerarquía de clasesJerarquía de clases

System.Web.UI.WebControls

ListControl

ListBox

CheckBoxList

Button

Table

WebControl

System.Web.UI.Control

System.Object

TextBox

......

Page 121: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sección 3: CaracterísticasSección 3: Características

Sintaxis y lenguajes soportados Sintaxis y lenguajes soportados por ASP.NETpor ASP.NET EjemplosEjemplos

Proceso de ejecuciónProceso de ejecución EnsambladoEnsamblado Administración de estado, Administración de estado,

Seguridad, y manipulación de Seguridad, y manipulación de eventoseventos

Page 122: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Lógica de procesamiento Lógica de procesamiento e interfacee interface No más unión del código HTML código scriptNo más unión del código HTML código script

Fácil mantenimiento de la aplicaciónFácil mantenimiento de la aplicación

Completa separación entre la interfaz y la Completa separación entre la interfaz y la lógica de procesamientológica de procesamiento No existe código de implementación dentro de los No existe código de implementación dentro de los

ficheros HTMLficheros HTML Ficheros para los diseñadores y ficheros para los Ficheros para los diseñadores y ficheros para los

programadoresprogramadores

.aspx.cs

.cs

Page 123: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Lenguajes soportadosLenguajes soportados

Visual BasicVisual Basic VBScriptVBScript no es gestionado ! no es gestionado !

JScriptJScript C#C#

Nuevo lenguaje basado en Nuevo lenguaje basado en componentescomponentes

CC++++ Extensiones gestionadas para C++Extensiones gestionadas para C++

Otros: Cobol, Smalltalk, ...Otros: Cobol, Smalltalk, ... Common Language Specification Common Language Specification

(CLS)(CLS)

Page 124: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

SintaxisSintaxis 1/31/3

DirectivasDirectivas <%@ Page language=“VB“%><%@ Page language=“VB“%>

Bloques de declaración de códigoBloques de declaración de código <script runat=“server“ [language = ...]><script runat=“server“ [language = ...]>

[ lines of code ] [ lines of code ]</script></script>

““Render Blocks”Render Blocks” <%<%

[ inline code or expression ] [ inline code or expression ]%>%>

Sintaxis de control HTMLSintaxis de control HTML <HTMLtag runat=“server“ [attribute = ...]><HTMLtag runat=“server“ [attribute = ...]>

</HTMLtag></HTMLtag>

Page 125: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

SintaxisSintaxis 2/32/3

Sintaxis de controles personalizadosSintaxis de controles personalizados Controles en el servidor personalizadosControles en el servidor personalizados

<ASP:TextBox id=“MyTb1“ runat=“server“><ASP:TextBox id=“MyTb1“ runat=“server“>

Propiedad de control en el servidorPropiedad de control en el servidor <ASP:TextBox maxlength=“80“ runat=“server“><ASP:TextBox maxlength=“80“ runat=“server“>

SubpropiedadSubpropiedad <ASP:Label font-size=“14“ runat=“server“><ASP:Label font-size=“14“ runat=“server“>

Eventos asociados a un control en el Eventos asociados a un control en el servidorservidor <ASP:Button OnClick=“MyClick“ runat=“server“><ASP:Button OnClick=“MyClick“ runat=“server“>

Page 126: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

SintaxisSintaxis 3/33/3

Etiquetas de objetos en el servidorEtiquetas de objetos en el servidor <object id=“<object id=“idid“ runat=“server““ runat=“server“

identifieridentifier=“=“idNameidName““>>

Directivas Include en el servidorDirectivas Include en el servidor <!-- #include pathtype = filename --><!-- #include pathtype = filename -->

Comentarios en el servidorComentarios en el servidor <%-- comment block --%><%-- comment block --%>

Page 127: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Ejemplo ASP.NET 1/2Ejemplo ASP.NET 1/2<html><html><script language="C#" runat=server><script language="C#" runat=server> void SubmitBtn_Click(Object Sender, EventArgs E)void SubmitBtn_Click(Object Sender, EventArgs E) {{ Message.Text = "Hi "+Name.Text;Message.Text = "Hi "+Name.Text; } } </script></script><body><body><form action="thisfile.aspx" method=post runat=server><form action="thisfile.aspx" method=post runat=server>

<h3> Name: <h3> Name: <asp:textbox id="Name" runat=server/><asp:textbox id="Name" runat=server/> <asp:button type=submit text="LookUp"<asp:button type=submit text="LookUp" OnClick="SubmitBtn_Click" runat=server/>OnClick="SubmitBtn_Click" runat=server/> <p><p> <asp:label id="Message" runat=server/><asp:label id="Message" runat=server/></form></form></body></body></html></html>

Page 128: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Ejemplo ASP.NETEjemplo ASP.NET 2/22/2

Page 129: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Ciclo de ejecución de Ciclo de ejecución de un .aspxun .aspx

IIS

ASP.NET Runtime

Instantiate controls

Parse .aspx file

Generate page class

Request .aspx file

Response

Client Server

Page 130: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Proceso de ejecuciónProceso de ejecución

Compilación, cuando la página es Compilación, cuando la página es requerida por vez primera.requerida por vez primera.

Microsoft intermediate language (MSIL)Microsoft intermediate language (MSIL) Estilo lenguaje ensambladorEstilo lenguaje ensamblador Independiente del CPUIndependiente del CPU Provee una capa de abstracción del Provee una capa de abstracción del

hardwarehardware MSIL es ejecutado por el common language MSIL es ejecutado por el common language

runtimeruntime

Common language runtimeCommon language runtime Compilador Just-in-time (JIT)Compilador Just-in-time (JIT) Código gestionadoCódigo gestionado

Page 131: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Administración de Administración de “Estado”“Estado” 1/21/2

Estado de la aplicaciónEstado de la aplicación Qué es una “aplicación”?Qué es una “aplicación”?

Ficheros, páginas, módulos, y código Ficheros, páginas, módulos, y código ejecutableejecutable

Un directorio virtual y sus subdirectoriosUn directorio virtual y sus subdirectorios

Variables de estado de la aplicaciónVariables de estado de la aplicación Información globalInformación global

Reglas de ImplementaciónReglas de Implementación Uso de recursos del sistemaUso de recursos del sistema ““Lock” y “unlock” su información globalLock” y “unlock” su información global Cuidado con las variablesCuidado con las variables globales en globales en

ambientes multihiloambientes multihilo Pérdida de estado cuando el servidor es Pérdida de estado cuando el servidor es

“destruido”“destruido” Imposibilidad de compartir estados entre Imposibilidad de compartir estados entre

servidoresservidores

Page 132: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Administración de Administración de “Estado”“Estado” 2/22/2

Estado de la sesiónEstado de la sesión Qué es una sesión?Qué es una sesión?

Restringido a aplicaciones lógicasRestringido a aplicaciones lógicas Contexto en el cuál un usuario se comunica Contexto en el cuál un usuario se comunica

con un servidorcon un servidor

FuncionalidadFuncionalidad Pedidos de identificación y clasificaciónPedidos de identificación y clasificación Almacenamiento de datos a través de Almacenamiento de datos a través de

multiples y sucesivos pedidosmultiples y sucesivos pedidos Eventos de SesiónEventos de Sesión Liberación automatica de datos de sesiónLiberación automatica de datos de sesión

Proceso servidor de estados en .NETProceso servidor de estados en .NET

Page 133: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Modelo de eventosModelo de eventos Eventos se generan en el cliente, Eventos se generan en el cliente,

pero se manipulan en el servidorpero se manipulan en el servidor

ServerCliente Web

parse messageevento

event handler

eventmessage

response

Llamada al manipulador

apropiado

Page 134: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sección 4: ASP.NET Sección 4: ASP.NET avanzadoavanzado Web FormsWeb Forms Controles en el ServidorControles en el Servidor Trabajando con datosTrabajando con datos Aplicaciones WebAplicaciones Web Migrando de ASP hacia ASP.NETMigrando de ASP hacia ASP.NET

Page 135: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Resumen de Web FormsResumen de Web Forms 1/21/2

thisfile.aspx

SubmitBtn_Click() { ...

thisfile.aspx.cs

...<asp:Button id=“LookUp“ OnClick=„SubmitBtn_Click“ />...

Page 136: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Resumen de Web FormsResumen de Web Forms 2/22/2

Crear páginas web programablesCrear páginas web programables Usar cualquier lenguaje .NETUsar cualquier lenguaje .NET Proveer un conjunto amplio de Proveer un conjunto amplio de

controles del lado del servidorcontroles del lado del servidor Modelo de eventos de Web FormsModelo de eventos de Web Forms

Ejecutarse en cualquier navegadorEjecutarse en cualquier navegador Parte Visual y lógica de la Parte Visual y lógica de la

aplicación Webaplicación Web Espacio de nombresEspacio de nombres

System.Web.UI.WebControlsSystem.Web.UI.WebControls

Page 137: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Resumen de controles del Resumen de controles del servidorservidor Controles Web Forms en el servidorControles Web Forms en el servidor Familias de controles en el ServidorFamilias de controles en el Servidor

HTMLHTML ASP.NETASP.NET ValidationValidation UserUser MobileMobile

Data BindingData Binding PagePage Class Class

Unión de código y contenidoUnión de código y contenido

Page 138: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Familias de controles del Familias de controles del servidorservidor 1/21/2

Controles HTML del servidorControles HTML del servidor asociados directamente con elementos asociados directamente con elementos

HTMLHTML Atributos HTMLAtributos HTML Ejemplos: Ejemplos: HtmlAnchorHtmlAnchor ( (<a><a>), ), HtmlTableHtmlTable

((<table><table>))

Controles ASP.NET del servidorControles ASP.NET del servidor Controles abstractosControles abstractos

No hay asociacion uno a uno con controles No hay asociacion uno a uno con controles html en el servidor html en el servidor

Detección automática del navegadorDetección automática del navegador Conjunto amplio de controlesConjunto amplio de controles Ejemplo: Ejemplo: TextBoxTextBox ( (<asp:textbox><asp:textbox>))

Page 139: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Familias de controles del Familias de controles del servidorservidor 2/22/2

Controles de validaciónControles de validación Chequeo de la entrada de datos por el Chequeo de la entrada de datos por el

usuariousuario Diferentes tipos de validaciónDiferentes tipos de validación

Entrada requeridaEntrada requerida ComparacionesComparaciones,, chequeo de rangos, matcheo chequeo de rangos, matcheo

de patronesde patrones Definidos por el usuarioDefinidos por el usuario

Controles de UsuarioControles de Usuario Particion y remodelacion de la Particion y remodelacion de la

funcionabilidadfuncionabilidad Extensión .ascxExtensión .ascx Soporta el modelo de objetosSoporta el modelo de objetos

Controles para móvilesControles para móviles

Page 140: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Sintaxis de los Server Sintaxis de los Server ControlsControls Analizando detenidamente la Analizando detenidamente la

sintaxis ASP.NETsintaxis ASP.NET <asp:<asp:controlNamecontrolName attributesattributes /> /> controlNamecontrolName

TextBoxTextBox, , DropDownListDropDownList, etc, etc

attributesattributes Id=controlIDId=controlID runat=serverrunat=server

Page 141: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Trabajando con datos 1/3Trabajando con datos 1/3

SQL y XMLSQL y XML Acceso y manipulación de los datosAcceso y manipulación de los datos

APIs de acceso gestionado a datos APIs de acceso gestionado a datos provistas por el runtimeprovistas por el runtime

Objetos esencialesObjetos esenciales SQLConnectionSQLConnection, , SQLCommandSQLCommand, y , y

DataSetDataSet

Espacios de nombresEspacios de nombres System.DataSystem.Data y y System.Data.SQLSystem.Data.SQL

Page 142: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Trabajando con datosTrabajando con datos 2/32/3

Resumen ADO.NETResumen ADO.NET

Arquitectura de datos Arquitectura de datos desconectadadesconectada

DatasetsDatasets son vistas de datos son vistas de datos completamente relacionadascompletamente relacionadas

XML y XML esquemasXML y XML esquemas

InternetData Object

Dataset

Windows Form

Web Form

B2BXML

Page 143: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Trabajando con datosTrabajando con datos 3/33/3

using System.Data;

ShoppingCart.CalculateOrderSummary();

DataRow row = ShoppingCart.OrderSummary.Rows[0];

lblSubTotal.Text = System.String.Format(“{0:C}“,row[OrderData.SUB_TOTAL_FIELD]);

<table width=“100%“> <tr><td> <asp:Label id=lblSubTotal runat=server> </asp:Label> </td></tr></table>

C#:C#:

ASP.NET:ASP.NET:

Page 144: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Trabajando con la cachéTrabajando con la caché

Mejora el desempeño de la Mejora el desempeño de la aplicación Webaplicación Web

Caché de salidaCaché de salida Almacena y devuelve páginas y Almacena y devuelve páginas y

objetosobjetos Cacheo de páginasCacheo de páginas Cacheo fragmentadoCacheo fragmentado

Reglas de expiradoReglas de expirado APIs de la CacheAPIs de la Cache

Personalizar los principios de la Personalizar los principios de la cachecache

Page 145: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Migración desde ASP Migración desde ASP hacia ASP.NEThacia ASP.NET ASP y ASP.NET pueden coexistir ASP y ASP.NET pueden coexistir

en el mismo servidoren el mismo servidor Hacer uso de las características Hacer uso de las características

ASP.NETASP.NET Para migrar, los ficheros ASP Para migrar, los ficheros ASP

tienen que ser modificadostienen que ser modificados DesempeñoDesempeño

Código Gestionado vs. código sin Código Gestionado vs. código sin gestionargestionar

Asociacion temprana vs. tardeAsociacion temprana vs. tarde

Page 146: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Detalles de la migraciónDetalles de la migración

EstructuraEstructura Bloques de código y directivasBloques de código y directivas

SeguridadSeguridad ASP.NET viene con un modelo de ASP.NET viene con un modelo de

seguridad comprehensivoseguridad comprehensivo

LenguajesLenguajes C#, Visual Basic.NETC#, Visual Basic.NET

Data AccessData Access ADO hacia ADO.NETADO hacia ADO.NET

Page 147: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

!!Preguntas!!!!Preguntas!!

Page 148: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Servicios Web Servicios Web XMLXML

Page 149: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ContenidoContenido

Antecedentes.Antecedentes. Definición del concepto “servicio web Definición del concepto “servicio web

XML”.XML”. Características principales.Características principales. Implementación de un “Hello world” Implementación de un “Hello world”

mediante servicios web xml.mediante servicios web xml.

Page 150: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

AntecedentesAntecedentes

Component Object Model (COM).Component Object Model (COM). Remote Method Invocation (RMI).Remote Method Invocation (RMI). Common Object Request Broker Common Object Request Broker

Architecture (CORBA). Architecture (CORBA). Internet Inter-ORB Protocol.Internet Inter-ORB Protocol.

No interoperan fácilmente, debido a No interoperan fácilmente, debido a las dependencias de un lenguaje las dependencias de un lenguaje particular o de un sistema operativo o particular o de un sistema operativo o de protocolos específicos de modelos de protocolos específicos de modelos de objetos.de objetos.

Page 151: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Qué es un servicio web XMLQué es un servicio web XML 1/31/3

Diseñado para garantizar la Diseñado para garantizar la interoperabilidad entre las diversas interoperabilidad entre las diversas plataformas de desarrollo de plataformas de desarrollo de aplicaciones existentes hoy en día.aplicaciones existentes hoy en día.

Page 152: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Qué es un servicio web XMLQué es un servicio web XML 2/32/3

Es una unidad de código que puede Es una unidad de código que puede activarse a través del uso de pedidos activarse a través del uso de pedidos HTTP.HTTP.

Permite además que programas Permite además que programas desarrollados en diferentes lenguajes desarrollados en diferentes lenguajes puedan comunicarse entre sí de un puedan comunicarse entre sí de un modo estándar.modo estándar.

Page 153: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Qué es un servicio web XMLQué es un servicio web XML 3/33/3

La llave fundamental de su éxito ha sido La llave fundamental de su éxito ha sido su diseño del uso de un modelo de su diseño del uso de un modelo de mensajes basados en texto para mensajes basados en texto para implementar la comunicación.implementar la comunicación.

Page 154: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Características principalesCaracterísticas principales

Los servicios Web XML solo pueden ser Los servicios Web XML solo pueden ser accedidos vía HTTP.accedidos vía HTTP.

Trabajan en un ambiente sin estado, de Trabajan en un ambiente sin estado, de forma que cada pedido origina un forma que cada pedido origina un nuevo objeto que se crea para nuevo objeto que se crea para satisfacerlo.satisfacerlo.

Solo puede manipular elementos que Solo puede manipular elementos que puedan ser expresados totalmente en puedan ser expresados totalmente en XML.XML.

Page 155: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

““Hello world” en C#Hello world” en C#

<%@ WebService Language="C#" Class="Hello" %>

using System.Web.Services;

[WebService(Namespace="urn:Hello")]

public class Hello

{

[ WebMethod ]

public string sayHello(string name)

{

return "Hello " + name;

}

}

Page 156: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

.NET Remoting.NET Remoting

Page 157: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ContenidoContenido

Definición de .NET Remoting.Definición de .NET Remoting. Características principales.Características principales. ““Hello world”.Hello world”.

Page 158: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Definición de .NET RemotingDefinición de .NET Remoting

Es un sistema genérico cuyo objetivo Es un sistema genérico cuyo objetivo principal es la comunicación entre principal es la comunicación entre diferentes aplicaciones.diferentes aplicaciones.

Los objetos .NET son expuestos a Los objetos .NET son expuestos a procesos remotos, de forma que se procesos remotos, de forma que se potencia la comunicación potencia la comunicación interprocesos.interprocesos.

Page 159: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Definición de .NET RemotingDefinición de .NET Remoting

Las aplicaciones que participan en la Las aplicaciones que participan en la comunicación pueden estar en comunicación pueden estar en diferentes máquinas de la misma red e diferentes máquinas de la misma red e inclusive en diferentes máquinas en inclusive en diferentes máquinas en distintas redes.distintas redes.

Page 160: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Características principalesCaracterísticas principales

Elimina las dificultades de DCOM Elimina las dificultades de DCOM mediante el soporte de diferentes mediante el soporte de diferentes formatos de protocolos de transporte y formatos de protocolos de transporte y de comunicación.de comunicación.

Page 161: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Características principalesCaracterísticas principales

Pueden ser usados mediante cualquier Pueden ser usados mediante cualquier protocolo.protocolo.

Soporta opciones de manejo de estado Soporta opciones de manejo de estado y callbacks.y callbacks.

Se basa en la existencia de un common Se basa en la existencia de un common language runtime que contenga las language runtime que contenga las informaciones sobre los tipos usados.informaciones sobre los tipos usados.

Page 162: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Características principalesCaracterísticas principales

Requiere que los clientes sean Requiere que los clientes sean construidos usando Microsoft.NET o construidos usando Microsoft.NET o cualquier otro framework que cualquier otro framework que soporte .NET Remoting (un ambiente soporte .NET Remoting (un ambiente homogéneo).homogéneo).

Page 163: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Características principalesCaracterísticas principales

Los objetos remotos son accesibles Los objetos remotos son accesibles mediante los “canales”.mediante los “canales”.

Existen dos tipos “TcpChannel” y Existen dos tipos “TcpChannel” y “HttpChannel”.“HttpChannel”.

Page 164: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Hello worldHello worldCreando el objeto remoto.Creando el objeto remoto.

using System;using System;

using System.Runtime.Remoting;using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;using System.Runtime.Remoting.Channels.Tcp;

namespace CodeGuru.Remotingnamespace CodeGuru.Remoting

{ {

public class SampleObject : MarshalByRefObject public class SampleObject : MarshalByRefObject

{ {

public SampleObject() public SampleObject()

{{

} }

public string HelloWorld() public string HelloWorld()

{{

return "Hello World!"; return "Hello World!";

}}

}}

} }

Page 165: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Hello worldHello worldCreando el servidor para exponer el objeto remoto.Creando el servidor para exponer el objeto remoto.

public static int Main(string [] args) public static int Main(string [] args) {{ // Create an instance of a channel// Create an instance of a channel TcpChannel channel = new TcpChannel(8080);TcpChannel channel = new TcpChannel(8080); ChannelServices.RegisterChannel(channel);ChannelServices.RegisterChannel(channel); // Register as an available service with the name HelloWorld// Register as an available service with the name HelloWorld RemotingConfiguration.RegisterWellKnownServiceType( RemotingConfiguration.RegisterWellKnownServiceType( typeof(SampleObject), typeof(SampleObject), "HelloWorld", "HelloWorld", WellKnownObjectMode.SingleCall );WellKnownObjectMode.SingleCall );

System.Console.WriteLine("Press the enter key to exit...");System.Console.WriteLine("Press the enter key to exit..."); System.Console.ReadLine();System.Console.ReadLine(); return 0;return 0; }}

Page 166: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

Hello worldHello worldCreando el cliente para usar el objeto remoto.Creando el cliente para usar el objeto remoto.

public class SampleClient { public static int Main(string [] args) { // Create a channel for communicating w/ the remote object // Notice no port is specified on the client

TcpChannel chan = new TcpChannel(); ChannelServices.RegisterChannel(chan);

// Create an instance of the remote object

SampleObject obj = (SampleObject) Activator.GetObject( typeof(CodeGuru.Remoting.SampleObject), "tcp://localhost:8080/HelloWorld" );

// Use the object

Console.WriteLine(obj.HelloWorld()); return 0; } }

Page 167: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ICE. Internet ICE. Internet Communication Communication EngineEngine

Page 168: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ContenidoContenido

Definición de ICE.Definición de ICE. Características principales.Características principales. ““Hello world”.Hello world”.

Page 169: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

WebParts y WebParts y personalización personalización en ASP.NET 2.0en ASP.NET 2.0

Page 170: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

ContenidoContenido

Definición de Webpart.Definición de Webpart. Descripción de las clases nuevas. Descripción de las clases nuevas.

WebPartManager, WebPartManager, SqlPersonalizationProvider, SqlPersonalizationProvider,

Definición de un portal configurable y Definición de un portal configurable y personalizablepersonalizable

Page 171: “Plataforma Microsoft.NET. Conceptos, Partes Componentes y Programación” Profesor: Prof. Julio César Camps

!!Preguntas!!!!Preguntas!!