“plataforma microsoft.net. conceptos, partes componentes y programación” profesor: prof. julio...
Post on 23-Jan-2016
221 Views
Preview:
TRANSCRIPT
““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
Breve descripción del Breve descripción del Framework .NET y su Framework .NET y su
lenguaje estrella “C#”lenguaje estrella “C#”
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
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
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
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
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
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
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
Qué es .NET? Qué es .NET?
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
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
Diagrama del .NET Diagrama del .NET FrameworkFramework
Base Classes
Data & XML
UserInterface
Common Language Runtime
WebServices
Ba
se F
ram
e
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.
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
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.
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.
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.
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
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#?
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
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
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
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
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
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#?
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#
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
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
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
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)
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
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, };
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)
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};
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
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; }; }
}
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; }}
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; } }
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); } }
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>}}
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);
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>);
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”
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);}
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
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
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;}
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
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
““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; ... }
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
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”
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}
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.
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
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
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
.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
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
El clásico comienzo:El clásico comienzo:
"Hello World!" in C#"Hello World!" in C#
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; } } } }}}
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
PreguntasPreguntas
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/
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
ADO.NETADO.NET
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
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 ... ...
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)
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”
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
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
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
Espacios de Nombres Espacios de Nombres relacionados con ADO.NETrelacionados con ADO.NET
ADO.NET
System.Data
.ADO.SQL.SQLTypes .Internal
El Modelo de Objeto El Modelo de Objeto ADO.NETADO.NET DataSetDataSet Proveedores de administraciónProveedores de administración
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
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
System.Data y DataSet—System.Data y DataSet—OverviewOverview
DataSet Tables
DataTable
Relations
DataRelation
DataRelation
DataRow(s)
DataColumn
Constraint(s)
DataTable
DataTable
DataView
DataSetView
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
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);
System.Data—DataSet 3/3System.Data—DataSet 3/3
Universal Data Container
DataSet: No es solo para Bases de Datos
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
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 );
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
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 );
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
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 );
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
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”);//...
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
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...
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
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
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
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();
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
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 ););
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
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
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
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();
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
ASP.NETASP.NET
ObjetivosObjetivos
Introducción al ASP.NET Conceptos y Arquitectura interna Características ASP.NET ASP.NET avanzado
ASP.NET y el Microsoft® .NET Framework
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
Sección 1: DescripciónSección 1: Descripción
““Mirando hacia atrás ...“Mirando hacia atrás ...“ ASP.NET Conceptos fundamentalesASP.NET Conceptos fundamentales
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
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
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
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!
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
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 ...
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
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
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
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
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>
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
Jerarquía de clasesJerarquía de clases
System.Web.UI.WebControls
ListControl
ListBox
CheckBoxList
Button
Table
WebControl
System.Web.UI.Control
System.Object
TextBox
......
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
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
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)
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>
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“>
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 --%>
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>
Ejemplo ASP.NETEjemplo ASP.NET 2/22/2
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
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
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
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
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
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
Resumen de Web FormsResumen de Web Forms 1/21/2
thisfile.aspx
SubmitBtn_Click() { ...
thisfile.aspx.cs
...<asp:Button id=“LookUp“ OnClick=„SubmitBtn_Click“ />...
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
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
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>))
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
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
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
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
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:
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
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
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
!!Preguntas!!!!Preguntas!!
Servicios Web Servicios Web XMLXML
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.
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.
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.
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.
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.
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.
““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;
}
}
.NET Remoting.NET Remoting
ContenidoContenido
Definición de .NET Remoting.Definición de .NET Remoting. Características principales.Características principales. ““Hello world”.Hello world”.
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.
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.
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.
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.
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).
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”.
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!";
}}
}}
} }
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; }}
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; } }
ICE. Internet ICE. Internet Communication Communication EngineEngine
ContenidoContenido
Definición de ICE.Definición de ICE. Características principales.Características principales. ““Hello world”.Hello world”.
WebParts y WebParts y personalización personalización en ASP.NET 2.0en ASP.NET 2.0
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
!!Preguntas!!!!Preguntas!!
top related