Está en la página 1de 171

“Plataforma Microsoft .NET.

Conceptos, Partes Componentes


y Programación”

Profesor: Prof. Julio César Camps


Breve descripción del
Framework .NET y su
lenguaje estrella “C#”
Contenido

 Análisis retrospectivo
 Descripción del framework .NET
 Breve descripción del C#
 Sumario
 Preguntas
Bibliografía
 [1] .NET Framework SDK
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/cpguide/html/cpconcommontypesystemoverview.asp
 [2] Common Language Runtime Overview
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/cpguide/html/cpconcommontypesystemoverview.asp
 [3] MSDN Magazine Content September 2000
http://msdn.microsoft.com/msdnmag/issues/0900/default.aspx
 [4].NET Development
http://msdn.microsoft.com/NET/
 [5] Building Distributed Applications. ASP.NET Web Services
or .NET Remoting
(MSDN Library Abril de 2003.)
 [6] Project MONO
http://www.go-mono.com/
 [7] ASP.NET Web. The Official Microsoft ASP.NET Site
http://www.asp.net
Sección 1. Retrospectiva

 Desafíos para los desarrolladores


 Desafíos para los clientes
 Aplicaciones y servicios
Desafíos para los
desarrolladores
 Desarrollo
1. Elección del sistema operativo y el lenguaje.

 Distribución
1. CD-ROM: producción, empaquetamiento y transporte.
2. La entrega electrónica requiere de la intervención humana.
 Estabilidad
1. Problemas de compatibilidad de DLLs.

 Mantenimiento
1. Los mismos que para la distribución
Desafíos para el cliente 1/2

 Difusión o despliegue
1. La instalación requiere tiempo y
personal.
2. Pruebas para garantizar la
compatibilidad con aplicaciones y S.O.
preexistentes.
3. Manejo de licencias
Desafíos para el cliente 2/2

 Estabilidad y seguridad
1. Requiere aun mas pruebas
2. Brechas de seguridad
3. Posibilidad de desestabilización a otros procesos,
por procesos no amistosos e inclusive al mismo S.O.
 Mantenimiento
1. Todos los problemas anteriormente relacionados
Aplicaciones y Servicios

 Aplicaciones como soluciones de


servicios
1. Las soluciones de hoy dan servicio como aplicaciones.
2. Las soluciones del mañana serán servicios, no aplicaciones.
 Servicios en internet actuales
1. Distribuidos a través de portales.
2. No son portables.
3. Dependientes del navegador y del dispositivo
Qué es .NET?
Plataforma .NET y .NET
Framework
Servicios Web
Office.Net ... ...
Componentes diseñados

Aplicaciones.NET

Servidores Enterprise
Lenguajes:
C#, Visual Basic, etc SQL Server BizTalk ...

Runtime
Common Common Services: .NET and COM+
Type Language
System Runtime

.NET Framework
Sistema operativo
Plataforma .NET y .NET
Herramientas
Framework para
desarrolladores
Servicios Web
Office.Net ... ...
Componentes diseñados

Aplicaciones.NET

Servidores Enterprise
Lenguajes:
C#, Visual Basic, etc SQL Server BizTalk ...

Runtime
Common Common Services: .NET and COM+
Type Language
System Runtime

.NET Framework
Sistema operativo
Diagrama del .NET
Framework

Web User
Services Interface

Data & XML

Base Classes

Base Frame
Common Language Runtime
Beneficios claves de .NET

 Facilidad de uso
 Modelo orientado a objetos
 todo es un objeto.
 Los espacios de nombres y la estructura
misma del Framework
 Fácil de comprender y usar.
 Esquema de nombres de los espacios de
nombres refleja su funcionalidad
subyacente.
Beneficios claves de .NET
 Libertad de elección:
 El lenguaje que satisface sus necesidades.
 La herramienta de desarrollo con que esté más
familiarizado.
 Estabilidad
 No más falta de memoria.
 El recolector de “basura” administra la
memoria
 Eliminados los problemas de incompatibilidad
con DLLs
 Seguridad
 Es imposible hacer referencia a una zona de
memoria que no pertenezca a quien la
referencia
 Modelo de seguridad consistente
Beneficios claves de .NET

 Distribución y mantenimiento
 Distribución : el código es “ensamblado”
y ejecutado de forma “segura”.
 Mantenimiento : simplificado el
mantenimiento del versionado
 Experiencia unificada
 Integra servicios diferentes en una
solución nueva, unificada.
Beneficios claves de .NET

 Servicios Web
 La Web “del modo que la quieras”
 En cualquier lugar.
 En cualquier momento.
 En cualquier dispositivo.
Resumen 1/2

 La plataforma .NET provee los medios


para:
 Distribuir soluciones donde quiera, en
cualquier momento y hacia cualquier
dispositivo.
 Migrar soluciones heredadas.
 Desarrollar usando las herramientas y
lenguajes de tu elección.
Resumen 2/2
 La plataforma .NET provee los medios
para:
 Crear soluciones abiertas sobre
estandares abiertos.
 Mejor desarrollo, distribución y
mantenimento de soluciones
 Crear y usar servicios Web
Resumen sobre C#
 Sistemas orientados a
componentes
 Conceptos de componentes en
.NET
 Por qué C#?
Sistemas orientadas a
componentes 1/2
 COM
 Modelo de componentes mas exitoso
en la historia
 Hace posible la integración entre
organizaciones y la rehusabilidad
Sistemas orientadas a
componentes 1/2
No obstante:
 Actualmente COM muestra su edad
 DCOM no tiene buen desempeño sobre Internet
 Más sistemas basados en componentes, más “Infierno
de las DLL"
 Difícil de implementar aún con herramientas ya maduras
COM no es exactamente independiente del lenguaje
 Asume determinadas caracteristicas sobre el caracter
binario de los datos.
Conceptos de componentes
en .NET 1/2
 Toma lo mejor de COM+
 Interfaces como contratos abstractos
 Los componentes implementan y
publican interfaces
 Exploración dinámica de
capacidades y contratos
Conceptos de componentes
en .NET 2/2
 Incorpora
 Verdadera orientación a objetos
 Modelo nativo de eventos
 Sistema de tipos y runtime independientes
del lenguaje
 Extensibilidad a todos los niveles
Por qué C#?

 Lenguaje orientado a componentes


 Desarrollado sobre la experiencia de COM+
 Soporte nativo para
 Espacios de nombres
 Versionado
 Desarrollado manejado por atributos
Por qué C#?
 Potencia de C con la facilidad de uso de
Microsoft Visual Basic®
 Curva de aprendizaje mínima
 Código mucho mas claro que C++
 Más estructurado que Visual Basic
 Mas potente que Java
Elementos de C#
 Estructura y forma
 Sistema de tipos de C#
 Entendiendo el lenguaje C#
Forma y estructura
 No posee ficheros de cabecera
“header”
 C# emplea el modelo "definición
junto a declaración"
 Visual Basic, Pascal, Modula, Java
 Similar a la implementación “inline”
de C++
 Sin implicación en la generación de
código
 Compilación condicional pero sin
soporte para macros
Sistema de tipos 1/2

 Desarrollado directamente sobre el


Common Type System de .NET
Framework
 Acceso nativo al CTS .NET
 C# fue concebido sobre .NET
Sistema de tipos 2/2

 Conceptos principales:
 Todo es objeto
 Absolutamente todos los tipos heredan
implicitamente del System.Object
 Distinción clara entre tipos por valor y
por referencia
 Por Valor: Tipos Simples, Enumerados,
Estructuras
 Por referencia: Interfaces, Clases, Arreglos
Tipos Simples
Tipos enteros
 byte, sbyte (8bit), short, ushort (16bit)
 int, uint (32bit), long, ulong (64bit)

Tipos flotantes IEEE


 float
(precisión de 7 dígitos)
 double (precisión de 15–16 dígitos)
Tipos Simples

 Tipo numéricos exactos


 decimal (28 dígitos significativos)
 Tipos Caracter
 char (un único caracter)
 string (cadena de caracteres, tipo por
referencia)
 Tipo Boolean
 bool (tipo distintivo, no es equivalente al
int)
Enumerados

 Nombrar elementos usando


nombre en vez de números
 Mejor usar "Color.Azul" que "3"
 Más legible, de más fácil
mantenimiento
 Tipo por valor por lo que es tan ligero
como un int
 Ejemplo: enum Color
{
Rojo,
Verde,
Azul,
};
Arreglos 1/2

 Indexados a partir de Cero


 Desarrollados a partir de la clase
System.Array
 Declarados con tipo y formas, pero
sin tamaño límite
 int[] SingleDim;
 int[,] TwoDim;
 int [][] Jagged; (dentados)
Arreglos 2/2

 Creados usando new con límites o


inicializadores
 SingleDim = new int[20];
 TwoDim = new int[,]{{1,2,3},{4,5,6}};
 Jagged = new int[1][];
Jagged[0] = new int[]{1,2,3};
Clases 1/2

 Implementación de código y datos


 Representa una unidad semántica
 Implementa interfaces
 No herencia múltiple
Clases 2/2
 Clases pueden contener: public class Person :
IPersonAge
 Campos: variables {
private int YOB;
miembros
public Person()
 Propiedades: valores {
}
accesibles a través de los
pares de métodos get/set public int YearOfBirth
{
get { return YOB; };
 Métodos: funcionalidad de set { YOB = value; };
}
los objetos o clases
}
 Especiales: eventos,
indexers, delegados
Estructuras
 Grupos de código y datos
 Similar a las clases, sin embargo:
 No se permite la herencia
 Siempre se almacenan por valor
 Desarrolladores de C++
 Estructuras no son una clase con
todos sus miembros públicos
 Ejemplo: struct Point
{
double X;
double Y;
void MoveBy(double dX, double dY)
{ X+=dX; Y+=dY; }
}
Propiedades

 Unión entre campos y métodos


 Se recomienda su uso en:
 Implementación de miembros de solo
lectura
(omitiendo la claúsula set)
 Validación durante la asignación
 Valores calculados o compuestos
 Ejemplo:
string Name
{
get { return name; }
set { name = value; }
}
Indices
 Modo consistente para la construcción
de contenedores
 Construidos sobre la filosofía de las
“propiedades”
 Posibilita el acceso indizado a los
objetos
 Calificador del indice puede ser de
cualquier tipo
 Ejemplo:
object this[string index]
{
get { return Dict.Item(index); }
set { Dict.Add(index,value); }

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

<tipoIndizador> get_Item(<índices>)
{
<códigoLectura>
}
void set_Item(<índices>, <tipoIndizador> value)
{
<códigoEscritura>
}
Delegados
 Delegados
 Similares a los punteros a función de
C y C++
 Fuerte chequeo de tipos, lo que
impide la confusión antes existente en
relación con los type-cast
 Ejemplo:
delegate void Clicked(Element e, Point
p);
Instrucciones

 Similares a C, C++: control de


flujos y ciclos
 if (<bool expr>) { ... } else { ... };
 switch(<var>) { case <const>: ...; };
 while (<bool expr>) { ... };
 for (<init>;<bool test>;<modify>) { ... };
 do { ... } while (<bool expr>);

Instrucciones

 Diferentes a C, C++:
 lock(<object>){ ... };
 Sincronización de secciones críticas es
inherente al lenguaje
 checked {...}; unchecked { ...};
 Protección contra el “Integer overflow”
Métodos para colecciones:
foreach
 Soporte directo a las iteraciones sobre las
colecciones
 Pueden ser usados por arreglos y otras
colecciones
 Ademas se puede usar con cualquier otra
clase
 Implemente IEnumerable con el método
GetEnumerator()
 Devolviendo un objeto implementado de
tipo IEnumerator
 Ejemplo:
Point[] Points = GetPoints();
foreach( Point p in Points )
{
MyPen.MoveTo(p.x,p.y);
}
Operadores 1/2
 Similares a C:
 Lógicos/condicionales: && ||
 Aritméticos: * / + - << >>
 Relacionales: == != < > >= <=
 No exactamente C:
 Para bool: & y | son lógicos con
evaluación completa
 Para integer: & y | ejecutan AND/OR
binarios
Operadores 2/2

 No similares a C:
 is Prueba el tipo en tiempo de ejecución
 as Convierte un valor a un tipo especificado
 typeof Devuelve el tipo en tiempo de ejecución
Sobre carga de operadores

 La mayor parte pueden ser redefinidos


 Aritméticos, relacionales, condicionales,
y lógicos
 No permitido para
 Operadores de asignación
 Operadores especiales (sizeof, new, is,
typeof)
 Ejemplo:
Public static Total operator +(int
Amount, Total t)
{
t.total += Amount;
}
Modificadores de acceso 1/2

 Adopta el modelo C++


 public  cualquiera puede invocarlo o
accederlo
 protected  solamente los miembros
pueden accederlo
 private  solo los miembros de
exactamente esta clase pueden accederlo
Modificadores de acceso 2/2

 Expande el modelo de C++


 sealed  No se puede usar como clase
base de una jerarquía
 internal  Acceso público solamente desde
su ensamblado
 protected internal  protegido dentro de su
ensamblado
“Y los punteros?”
 C# soporta
 Tipo string intrínseco
 Modelo de recolección de basura
 Parámetros por referencia usando ref
 void increment(ref int value, int by)
 Parámetros de salida usando out
 bool add(int a, int b, out int c)
 Punteros están disponibles para el código
marcado como unsafe
unsafe void crypt(byte[] arr)
{
byte * b = arr;
...
}
Boxing y Unboxing
 Tipos por valor pueden "boxed" y "unboxed"
 "Boxing" permite que los tipos por valor se
traten por referencia
 Basado en el tipo objeto implicito de todos los
tipos.
 Ponga el valor en una caja y referénciela

42 42 double Value;

// Boxing
object BoxedValue = Value;
42 // Unboxing
Value = (double)BoxedValue;
Boxed: Unboxed:
Referencia Copia
Recolección de basura
 Creación nuevos objetos y arreglos de
datos
 Todos son creados mediante el uso de new
 El .NET runtime mantiene un registro
automatico de todo el uso de la memoria
 El recolector de basura automaticamente
remueve todos los objetos que esten sin
uso
 Un uso más eficiente de la memoria
 Fácil de usar y “cero escapes de memoria”
Manipulación de
Excepciones
 Similar a C++ try
{
 Ejemplo: //... run code
}
 try ejecuta este código catch(SomeException e)
{
 ...si ocurre un error, //... handle
}
catch que puedo hacer finally
en ese caso ... {
//...end gracefully
 ...finally me permite }
realizar algun trabajo
manual de rescate
Diferencias con C++

 C# es muy parecido a C/C++


 Corrige la mayoría de sus errores:
 Estricto chequeo de tipos
 No más"fall-through" por break en la
instrucción switch
 Expresiones booleanas y las
instrucciones que las involucran son
estrictamente chequeadas.
Espacios de nombres 1/2

 Toda definición debe estar


contenida en un espacio de
nombres
 Impide colisiones de nombres
 Organiza el código
 Pueden y deben ser anidados
Espacios de nombres 2/2

 Agrupa clases y tipos por semántica


 Declarados con la palabra clave
namespace
 Referenciados con using
Herramientas disponibles

 .NET Framework SDK—todo lo


necesario para construir
aplicaciones
 Compilador C#
 Debugger Visual
 Visual Studio.NET—the
productivity rocket
 Ambiente de desarrollo optimizado
para C#
 “Code wizards” y templates
 Ayuda inteligente
.NET Framework SDK
 Compilador de C# (+ Visual Basic, C+
+, and JScript)
 Todas las caracteristicas del lenguaje
 Ejecucion desde linea de comandos
 Visual Debugger—GuiDebug
 Desarrollado sobre la tecnologia Visual
Studio.NET
 Acceso completo a los metadatos en
tiempo de ejecución
 Herramientas
 Nmake, security, configuration, IL
Disassembler, ...
 Libre para todos
Visual Studio.NET

 Desarrollado para .NET Framework SDK


 Reinvención del concepto de Visual
Studio®, ahora con:
 Proyectos Multi-lenguajes
 Un ambiente integrado de desarrollo para
todos los lenguajes y tareas
 Herramientas integradas: Visual Modeler,
Database Management
 Perfecta integración de la ayuda
 Alta productividad para todo:
 RAD Rapid application development
 Proyectos de gran escala
El clásico comienzo:
"Hello World!" in C#
Hello World
namespace Sample
{
using System;
public class HelloWorld
{
public HelloWorld()
{
}
public static int Main(string[] args)
{
Console.WriteLine("Hello World!");
return 0;
}
}
}
Anatomía del “Hello
World”
 Contenido en su propio espacio de
nombres
 Referencia otros espacios de nombres
con "using"
 Declara una clase de aplicación
públicamente accesible
 Punto de entrada "static int Main( ... )"
 Escribe "Hello World!" en la consola
del sistema
 Usa el método estático WriteLine en
System.Console
Preguntas
Actividad Orientadas
 Argumente las existencia o no de la
característica multiplataforma de la
tecnología .NET

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


Sintaxis
switch (<expresión>)
{
case <valor1>:
<valor1>: <bloque1>
<siguienteAcción>
case <valor2>: <bloque2>
<siguienteAcción>
...
default: <bloqueDefault>
<siguienteAcción>
}
Donde <siguiente acción> puede tener los siguientes valores:
1. goto case <valori>;
2. goto default;
3. break;

Regresar
ADO.NET
Contenido

 Diferencias entre ADO y ADO.NET


 Beneficios de ADO.NET
 Conceptos y arquitectura de la base de
ADO.NET
 El Modelo de Objeto de ADO.NET
 DataSet y Data Views
 Administración de proveedores
ADO.NET y .NET Framework

Microsoft .NET Framework

Web Services Interface de Usuario

Data y XML
ADO.NET XML ... ...

Clases Bajas

Common Language Runtime


ADO vs. ADO.NET 1/2

 ADO
 Diseñado para accesos conectados
 Atado al modelo físico de los datos
 El RecordSet es el contenedor central de datos
 El RecordSet es una (1) tabla que contiene todos los datos
 Recuperar datos desde > 1 tabla o recurso, requiere un JOIN de base de
datos
 Los datos son “aplanados”: se pierden las relaciones; la navegación es
secuencial
 Los tipos de datos son limitados al tipo de datos COM/COM+
 Los datos se comparten mediante las vías que provee COM
 Problemas con la transferencia a través de firewalls (DCOM,
binary)
ADO vs. ADO.NET 2/2
 ADO.NET
 Diseñado para accesos desconectados
 Puede modelar los datos de forma lógica!
 El DataSet reemplaza el RecordSet
 DataSet puede contener varias tablas
 Recuperar datos desde >1 tabla o fuente no requiere de
JOIN
 Las relaciones son preservadas: la navegación es
relacional
 Los tipos de datos solo son limitados por el
esquema XML
 No se necesita conversiones de tipos de datos
 Tanto XML, como HTML, son textos planos:
“Firewall friendly”
Beneficios de ADO.NET
 Interoperabilidad a través del uso de XML
 Norma abierta
 Texto humanamente leíble y descifrable
 Los datos se describen por si mismos—asi es XML
 Usado para la transferencia de todos los datos en ADO.NET
 Escalabilidad a través del DataSet desconectado
 Las conexiones no se mantienen por periodos largos
 La base de datos no se bloquea
 E trabajo se realiza a la manera de trabajos Web: “Hit and
Run!”
 Mantenimiento
 Separación de la lógica de los datos y la Interfaz de usuario
Mejoras de Visual
Studio.NET
 Programable
 “Typed programming”, un estilo de programación
 Uso de palabras end-user : Facilita leer y escribir
 Completamiento de la declaración en Microsoft Visual
Studio.NET
 Mas seguro: Proporciona el chequeo de compilación
 Ejemplos:
 Untyped:
enTable("Customer")("Jones").Column(“Balance”)
 Typed:
myDataSet.Customer("Jones").Balance
 Ayuda de apoyo
Conceptos principales y
Arquitectura
 El Modelo de Objeto ADO.NET
 Proveedores de administración
 Objetos DataSet
 Espacios de Nombres relacionados con
ADO.NET
 System.Data
 System.Data.ADO
 System.Data.Internal
 System.Data.SQL
 System.Data.SQLTypes
Espacios de Nombres
relacionados con ADO.NET
ADO.NET

System.Data

.SQLTypes .SQL .Internal .ADO


El Modelo de Objeto
ADO.NET
 DataSet
 Proveedores de administración
System.Data 1/2
 Contiene la base y el volumen de ADO.NET
 Nombre de espacio Data-centric
 Brinda los medios para el trabajo en y con los
datos!
 Clases y métodos para manipular los datos
 Capacidad para crear consultas de los
datos
 Medios para representar de forma lógica
los datos
 Permite el uso de XML para ver, compartir
y almacenar los datos
System.Data 2/2

System.Data  Contiene las clases principales de ADO.NET


DataSet  Cache In-Memory de datos

DataTable  Cache In-Memory de una tabla de BD


DataRow  Manipulación de una columna en un DataTable
DataColumn  Definicion de columnas en un DataTable
DataRelation  Relaionar 2 DataTables entre si
DataSetView  Crear una vista en un DataSet
System.Data y DataSet—
Overview
DataSet Tables
DataTable DataView
DataRow(s)

Relations DataColumn

DataRelation Constraint(s) DataSetView


DataRelation
DataTable

DataTable
System.Data—DataSet 1/3
 Una cache en memoria de datos de una fuente de
datos
 Forma común de representar y manipular datos
 Contenedor universal de datos
 No para uso justamente con base de datos
 Representación lógica o física de datos; dependen
de:
 El conjunto de resultados
 Si DataTables y Relations existen
 Diseñado para ser desconectado de la fuente de
datos
 Conectar, ejecutar consulta y desconectar
 XML usado para leer y escribir datos y esquemas
System.Data—DataSet 2/3
 Las colecciones son utilizadas para adicionar y
eliminar tablas y relaciones
 Propiedades de interés:
 Tables: Devuelve una colección de objetos DataTable
 Relations: Devuelve una colección de DataRelations
 XML: Obtiene o coloca la definición de DataSet como XML
 XMLData: Obtiene o coloca el dato DataSet’s como XML
 XMLSchema: Obtiene o coloca el esquema DataSet como
XML
 Namespace: Obtiene o coloca el nombre de espacio del
DataSet
 Ejemplo de uso de las propiedades:
 aTableCollection=aDS.Tables.Add(aTable);
System.Data—DataSet 3/3

 Universal Data Container

 DataSet: No es solo para Bases de Datos


System.Data—DataTable
 Puede ser mapeado a una tabla física en la fuente de datos
 Pueden relacionarse por medio de DataRelations
 Concurrencia optimista o modelo fijo
 Propiedades de interés:
 Columns: Devuelve objetos ColumnsCollection de
DataColumns
 Rows: Devuelve objetos DataRow como objetos
RowsCollection
 ParentRelations: Devuelve un objeto RelationsCollection
 Constraints: Devuelve un objeto ConstraintsCollection de las
tablas
 DataSet: Devuelve un objeto DataSet de uno DataTable
 PrimaryKey: Obtiene el objeto DataColumns el cual crea la
llave primaria de las tablas
System.Data—DataSet y
DataTable
Crear un objeto DataTable y adicionarlo a
uno DataSet
DataSet 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 DataColumn
DataColumn 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 DataSet


ds.Tables.Add( dt );
System.Data—DataRelation
1/2
 Usado para crear relaciones lógicas
 Crea relaciones entre (2) objetos DataTable
 Requiere un objeto DataColumn de cada objeto DataTable
 El DataType de ambos DataColumns tiene que ser el mismo
 No se puede relacionar un Int32 DataColumn con un String
DataColumn
 La relación es nombrada (por usted!)
 DataRelation dr=new DataRelation( “myRelation”,...)
 Hace la navegación relacional posible
 RelationsCollection contiene todos los objetos DataRelations
 Accedido a través de las propiedades del DataSet’s Relations
System.Data—DataRelation
2/2
Como crear un objeto DataRelation:
Como crear un objeto DataRelation:
 Se obtienen los objetos DataColumn para relacionar
 Crear un objeto DataRelation nombrado usando las columnas
 Adicionar la relación al DataSet

// 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 XML
 DataSet puede leer y escribir XML para sus datos y/o esquemas
 Significa que: Usted puede crear o modificar un objeto
DataSet usando XML!
 XML-relacionado a DataSet. Métodos para leer:
 ReadXml: Lee un esquema o dato XML dentro de un DataSet
 ReadXmlData: Lee datos XML dentro de un DataSet
 ReadXmlSchema: Lee un esquema XML dentro de un DataSet
 Y para escribir: WriteXml, WriteXmlData, WriteXmlSchema
 Propiedades XML-related :
 Xml, XmlData, XmlSchema, y Namespace
 DiffGrams
Métodos para leer y escribir
XML
// 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 Document


mds.WriteXmlSchema( oFile );

// Read/Upload XML Data into the DataSet


mds.ReadXmlData( iFile, true );

// Write the existing Data to an XML Document


mds.WriteXmlSchema( “C:\\My_ADO.NET\\myXmlData.txt );

// Or output the XML Data using the XmlData property!


Console.WriteLine( mds.XmlData );
System.Data—DataView

 Crear múltiples vistas en un objeto DataTable


 Invisible a los controles de Interfase de usuario
 Propiedades de interés:

 Item: Recupera una fila de datos de una tabla especifica


 Table: Recupera o coloca el DataTable asociado
 Sort: Obtiene o coloca la clase de columna de la tabla y el
orden de la clase
 RowFilter: Obtiene o fija la expresión utilizada para filtrar
las filas
 RowStateFilter: Consigue o fija el filtro del estado de la fila
 
 
 None, Unchanged, New, Deleted, ModifiedCurrent, y
otros
Ejemplo de System.Data—
DataView
 Creando objetos DataView
// Code for myTable “Customers” with
// “Name” column not shown
DataView 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—DataSetView

 Similar a un DataView pero orientado a


DataSet
 Usado para crear múltiples vistas en un
DataSet
 Capacidad de fijar automáticamente los filtros en
las tablas
 Propiedades de interés:
 TableSettings: Obtiene/fija los ajustes de las
vistas en la tabla
 DataSet: Obtiene o fija el DataSet para crear la
vista
System.Data—DataSetView
Sample
 Creando un objeto DataSetView usando un
DataSet
// 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,
Data…Views
DataSet Tables
DataView

DataTable
DataSetView
DataRow(s)
TableSettings
DataColumn
Relations TableSetting
Constraint(s)
DataRelation TableSetting
DataRelation DataTable

DataTable
ADO.NET y Proveedores de
Administración
 Una colección de clases para el acceso a fuentes de
datos:
 Microsoft SQL Server™ 2000, SQL Server 7, y MSDE
 Cualquier OLE Database (OLE DB) providers
 Incluyendo: Oracle, JET, y SQL OLE DB Providers
 Establecer conexión entre DataSets y almacenes de datos
 Dos proveedores de administración:
 ADO: por medio del nombre de espacio System.Data.ADO
 SQL Server: por medio del nombre de espacio
System.Data.SQL

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


System.Data—Proveedores
administrados

System.Data
.SQL .ADO
SQLCommand ADOCommand
SQLConnection ADOConnection
SQLDataReader ADODataReader
SQLDataSetCommand ADODataSetCommand

 System.Data.Internal es confiable para varias


clases heredadas
ADOConnection y
SQLConnection
 Representa una sesión única con una fuente de datos
 Crear, abrir, cerrar una conexión a una fuente de
datos
 Funcionalidad y métodos para desarrollar
transacciones
 Ejemplos de 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 Class
aConn.Close();
Clase ADODataSetCommand
1/2
 Es un puente entre un objeto DataSet y el
almacén de datos
 Se hereda de la clase DataSetCommand
 Es el medio de modificación del DataSet y de
la fuente de datos

Data Store DataSetCommand DataSet


Clase ADODataSetCommand
2/2
 Propiedades de interés:
 DeleteCommand: El comando delete expresado en SQL
 InsertCommand: Obtener o fijar el comando insert
 SelectCommand: Obtener o fijar el comando select
 UpdateCommand: Obtener o fijar el comando update
 TableMappings: Maps source y DataTable
 ADOCommands recupera o fija mediante las propiedades
“command”
 Hereda métodos de la clase DataSetCommand
 public virtual int FillDataSet( DataSet dataSet );
 public virtual int Update( DataSet dataSet );
Clase ADOCommand
 Representa una consulta a ejecutar en la fuente de
datos
 Propiedades de interés :
 ActiveConnection: Obtiene o fija la conexión a la fuente de
datos
 CommandText: Obtiene o fija el comando de la consulta
(texto)
 CommandType: Obtiene o fija la interpretación del texto del
comando
 Texto, procedimiento almacenado, o nombre de la tabla
 CommandTimeout: Los segundos que faltan para terminar la
conexión
 RecordsAffected: Números de records afectados por la
consulta
ADODataReader 1/2

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


only
 Modelo de programación “Lightweight”
 Se gasta menos que al usar ADODataSetCommand
 Instanciado por la clase ADOCommand con el método
Execute
 Ties up the ADOCommand until it is finished reading
ADODataReader 2/2
 Propiedades de interés:
 FieldCount: Devuelve el número de campos en el
resultado
 HasMoreRows: Indica si hay más filas para
devolver
 RowFetchCount: Número de filas para devolver al
mismo tiempo
 HasMoreResults: Indica que hay más resultados
 Métodos para devolver datos:
 Por el tipo de la columna y el índice: GetString,
GetInt32, y otros
 Read: Lectura avanzada al próximo record
Ejemplo de ADODataReader
// Code for creating the ADOConnection “adoConn” not shown
String 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 done


myDataReader.Close();
adoConn.Close();
Sumario
 ADO.NET es la evolución de ADO
 Es un modelo centrado en Web, “desconectado”
 Flexible en su capacidad de trabajar con datos
 Incrementa su capacidad para organizar los datos
lógicamente
 Soporte extenso para XML
 Facilita el trabajo con datos y compartiendo
datos
 Interactúa con una amplia variedad de fuente de
datos
ASP.NET
Objetivos
 Introducción al ASP.NET
 Conceptos y Arquitectura interna
 Características ASP.NET
 ASP.NET avanzado

 ASP.NET y el Microsoft® .NET Framework


Contenido
 Sección 1: Descripción
 Sección 2: Arquitectura interna
 Microsoft .NET Framework y ASP.NET
Configuración
 Sección 3: Características de ASP.NET
 Administración, Seguridad, y Modelo de
eventos
 Sección 4: ASP.NET avanzado
 Web Forms
 Trabajando con Datos
 Migración desde ASP hacia ASP.NET
Sección 1: Descripción

 “Mirando hacia atrás ...“


 ASP.NET Conceptos fundamentales
Mirando atrás: Active
Server Pages
 Qué es ASP?
 Tecnología script del lado del servidor
 Ficheros contienen HTML y código script
 Accesos pedidos via HTTP
 Código script es interpretado en el
servidor
 Qué se podemos lograr con ASP?
 Fácil y de manera inmediata podemos
crear aplicaciones Web simples
 Generar contenido Web dinámico
 Script del lado cliente para validaciones
 Acceso a componentes COM para
extender funcionalidad
 Bases de datos
Qué está mal?
 Mezcla la forma (HTML) y la lógica (código
script)
 Interpretar el código ASP trae como
consecuencia una reducción del rendimiento
 Uso de lenguajes script que no son “strongly
typed“
 Microsoft JScript®
 Microsoft Visual Basic® Scripting Edition (VBScript)
 Compatibilidad con los navegadores
 No implementa una gestión real del “estado”
 No se pueden compartir estados entre servidores Web
 Estado se pierde si el IIS colapsa.
 Actualizar ficheros solamente cuando el
servidor esta fuera de servicio
ASP.NET Conceptos
fundamentales
 Plataforma de desarrollo Web
 Nuevo modelo de programación

Cliente Web

IIS Aplicaciones
ASP.NET

.NET
Framework

Sistema Operativo
ASP.NET Conceptos
fundamentales
 Separa forma de la lógica de negocios
 Usa servicios ofertados por el .NET
Framework
 EL código es compilado la primera vez
que la página es solicitada
 Gestión real del “estado”
 Hace uso de lenguajes “serios” de
programación
 Integración inter-lenguajes
 Actualización de ficheros sin sacar de
servicio el servidor!
Sección 2: Arquitectura
interna
 La arquitectura de .NET
Framework
 Modelo de aplicaciones Web
 Configuración
 Jerarquía de clases
Arquitectura .NET
Framework
Microsoft .NET Framework

ASP.NET
Windows Forms
Web Forms Web Services

Services Framework
Base Data Debug ...

Common Language Runtime

System Services
Modelo de aplicaciones
Web
Código no gestionado

Pedidos HTTP

Host (IIS, Internet Explorer)

HTTP Runtime

HTTP Module

HTTP Module

Request Handler ...

Código gestionado
HTTP Runtime
 Código gestionado
 Se ejecuta dentro de un proceso
host no gestionado
 Diseñada para una disponibilidad
del 100%
 Procesamiento asincrónico de los
pedidos
 Multihilo
 Sustitución de las ISAPI
 Internet Server Application
Programming Interface
Lista de módulos HTTP
 Lista de módulos HTTP
 Clases gestionadas
 Cada módulo implementa una interfaz
específica
 Por ejemplo: administración del estado o la
seguridad
 Todos los pedidos son enrutados a
través de la misma lista de módulos HTTP
 Adición de módulos se realiza a través
del Config.web
 Request handler
 Clases gestionadas
 Múltiples request handlers por cada
aplicación
 Pero solo uno por URL
Configuración 1/3
 Conceptos y arquitectura
 Fichero de configuración: Config.web
 Basado en XML
 Fichero es mantenido dentro del subdirectorio de
la aplicación
 Cambios son detectados automáticamente
 Arquitectura de configuración jerárquica
 Influye en el subdirectorio actual y en todos sus
subdirectorios

Root Config.web
Dir
Sub
Dir1
Sub
Dir2
Configuración 2/3
 Ejemplo de Config.web

<configuration>
<configsections>
<add names=“httpmodules“
type=“System.Web.Config.
HttpModulesConfigHandler“/>
<add names=“sessionstate“
type=“...“/>
</configsections>
<httpmodules>
<!--- http module subelements go here -->
</httpmodules>
<sessionstate>
<!--- sessionstate subelements go here -->
</sessionstate>
</configuration>
Configuración 3/3
 Configuración por defecto y personalidada
 Config.web está localizado en %windir
%\Microsoft.NET\Framework\Version
 Conjunto estándar manipuladores de la sección de
configuración
 Características de los navegadores soportados,
mensajes de error personalizados, etc
 Configuración personalizada
 Extienda el conjunto de manipuladores de sección con
los suyos propios
 Implementación de la interface:
 System.Web.Configuration.IConfigurationSectionHandler
 Problemas con
 Directorios virtuales
 Ficheros que no son ASP.NET
Jerarquía de clases
System.Object

System.Web.UI.Control

System.Web.UI. WebControl
WebControls
ListControl Table

ListBox Button

CheckBoxList
TextBox

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

 Sintaxis y lenguajes soportados


por ASP.NET
 Ejemplos
 Proceso de ejecución
 Ensamblado
 Administración de estado,
Seguridad, y manipulación de
eventos
Lógica de procesamiento
e interface
 No más unión del código HTML código script
 Fácil mantenimiento de la aplicación
 Completa separación entre la interfaz y la
lógica de procesamiento
 No existe código de implementación dentro de los
ficheros HTML
 Ficheros para los diseñadores y ficheros para los
programadores
.cs

.cs
.aspx
Lenguajes soportados

 Visual Basic
 VBScript no es gestionado !
 JScript
 C#
 Nuevo lenguaje basado en
componentes
 C++
 Extensiones gestionadas para C++
 Otros: Cobol, Smalltalk, ...
 Common Language Specification
Sintaxis 1/3
Directivas
 <%@ Page language=“VB“%>
Bloques de declaración de código
 <script runat=“server“ [language = ...]>
[ lines of code ]
</script>
“Render Blocks”
 <%
[ inline code or expression ]
%>
Sintaxis de control HTML
 <HTMLtag runat=“server“ [attribute = ...]>
</HTMLtag>
Sintaxis 2/3
 Sintaxis de controles personalizados
 Controles en el servidor personalizados
 <ASP:TextBox id=“MyTb1“ runat=“server“>
 Propiedad de control en el servidor
 <ASP:TextBox maxlength=“80“ runat=“server“>
 Subpropiedad
 <ASP:Label font-size=“14“ runat=“server“>
 Eventos asociados a un control en el
servidor
 <ASP:Button OnClick=“MyClick“ runat=“server“>
Sintaxis 3/3
Etiquetas de objetos en el servidor
 <object id=“id“ runat=“server“
identifier=“idName“>
Directivas Include en el servidor
 <!-- #include pathtype = filename -->
Comentarios en el servidor
 <%-- comment block --%>
Ejemplo ASP.NET 1/2
<html>
<script language="C#" runat=server>
void SubmitBtn_Click(Object Sender, EventArgs E)
{
Message.Text = "Hi "+Name.Text;
}
</script>
<body>
<form action="thisfile.aspx" method=post runat=server>
<h3> Name:
<asp:textbox id="Name" runat=server/>
<asp:button type=submit text="LookUp"
OnClick="SubmitBtn_Click" runat=server/>
<p>
<asp:label id="Message" runat=server/>
</form>
</body>
Ejemplo ASP.NET 2/2
Ciclo de ejecución de un
.aspx
Client Server

IIS
Request .aspx file
ASP.NET Runtime

Parse .aspx file

Generate page class

Instantiate controls

Response
Proceso de ejecución
 Compilación, cuando la página es
requerida por vez primera.
 Microsoft intermediate language (MSIL)
 Estilo lenguaje ensamblador
 Independiente del CPU
 Provee una capa de abstracción del
hardware
 MSIL es ejecutado por el common language
runtime
 Common language runtime
 Compilador Just-in-time (JIT)
 Código gestionado
Administración de
“Estado” 1/2
 Estado de la aplicación
 Qué es una “aplicación”?
 Ficheros, páginas, módulos, y código
ejecutable
 Un directorio virtual y sus subdirectorios
 Variables de estado de la aplicación
 Información global
 Reglas de Implementación
 Uso de recursos del sistema
 “Lock” y “unlock” su información global
 Cuidado con las variables globales en
ambientes multihilo
 Pérdida de estado cuando el servidor es
“destruido”
 Imposibilidad de compartir estados entre
Administración de
“Estado” 2/2
 Estado de la sesión
 Qué es una sesión?
 Restringido a aplicaciones lógicas
 Contexto en el cuál un usuario se comunica
con un servidor
 Funcionalidad
 Pedidos de identificación y clasificación
 Almacenamiento de datos a través de
multiples y sucesivos pedidos
 Eventos de Sesión
 Liberación automatica de datos de sesión
 Proceso servidor de estados en .NET
Modelo de eventos
 Eventos se generan en el cliente,
pero se manipulan en el servidor

event
Cliente Web message Server

parse message
evento
Llamada al
manipulador
apropiado

event handler

response
Sección 4: ASP.NET
avanzado
 Web Forms
 Controles en el Servidor
 Trabajando con datos
 Aplicaciones Web
 Migrando de ASP hacia ASP.NET
Resumen de Web Forms 1/2
thisfile.aspx thisfile.aspx.cs
... SubmitBtn_Click()
<asp:Button id=“LookUp“ { ...
OnClick=„SubmitBtn_Click“ />
...
Resumen de Web Forms 2/2
 Crear páginas web programables
 Usar cualquier lenguaje .NET
 Proveer un conjunto amplio de
controles del lado del servidor
 Modelo de eventos de Web Forms
 Ejecutarse en cualquier navegador
 Parte Visual y lógica de la
aplicación Web
 Espacio de nombres
System.Web.UI.WebControls
Resumen de controles del
servidor
 Controles Web Forms en el servidor
 Familias de controles en el Servidor
 HTML
 ASP.NET
 Validation
 User
 Mobile
 Data Binding
 Page Class
 Unión de código y contenido
Familias de controles del
servidor 1/2
 Controles HTML del servidor
 asociados directamente con elementos
HTML
 Atributos HTML
 Ejemplos: HtmlAnchor (<a>), HtmlTable
(<table>)
 Controles ASP.NET del servidor
 Controles abstractos
 No hay asociacion uno a uno con controles
html en el servidor
 Detección automática del navegador
 Conjunto amplio de controles
 Ejemplo: TextBox (<asp:textbox>)
Familias de controles del
servidor 2/2
 Controles de validación
 Chequeo de la entrada de datos por el
usuario
 Diferentes tipos de validación
 Entrada requerida
 Comparaciones, chequeo de rangos, matcheo
de patrones
 Definidos por el usuario
 Controles de Usuario
 Particion y remodelacion de la
funcionabilidad
 Extensión .ascx
 Soporta el modelo de objetos
 Controles para móviles
Sintaxis de los Server
Controls
 Analizando detenidamente la
sintaxis ASP.NET
 <asp:controlName attributes />
 controlName
 TextBox, DropDownList, etc
 attributes
 Id=controlID
 runat=server
Trabajando con datos 1/3

 SQL y XML
 Acceso y manipulación de los datos
 APIs de acceso gestionado a datos
provistas por el runtime
 Objetos esenciales
 SQLConnection, SQLCommand, y
DataSet
 Espacios de nombres
 System.Data y System.Data.SQL
Trabajando con datos 2/3
 Resumen ADO.NET
Windows
Form
Internet
Web Form Data Object
XML
B2B Dataset

 Arquitectura de datos
desconectada
 Datasets son vistas de datos
completamente relacionadas
 XML y XML esquemas
Trabajando con datos 3/3
 C#:
using System.Data;

ShoppingCart.CalculateOrderSummary();

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

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

 ASP.NET:
<table width=“100%“>
<tr><td>
<asp:Label id=lblSubTotal runat=server>
</asp:Label>
</td></tr>
</table>
Trabajando con la caché

 Mejora el desempeño de la
aplicación Web
 Caché de salida
 Almacena y devuelve páginas y
objetos
 Cacheo de páginas
 Cacheo fragmentado
 Reglas de expirado
 APIs de la Cache
 Personalizar los principios de la
Migración desde ASP
hacia ASP.NET
 ASP y ASP.NET pueden coexistir
en el mismo servidor
 Hacer uso de las características
ASP.NET
 Para migrar, los ficheros ASP
tienen que ser modificados
 Desempeño
 Código Gestionado vs. código sin
gestionar
 Asociacion temprana vs. tarde
Detalles de la migración

 Estructura
 Bloques de código y directivas
 Seguridad
 ASP.NET viene con un modelo de
seguridad comprehensivo
 Lenguajes
 C#, Visual Basic.NET
 Data Access
 ADO hacia ADO.NET
!!Preguntas!!
Servicios Web
XML
Contenido

 Antecedentes.
 Definición del concepto “servicio web
XML”.
 Características principales.
 Implementación de un “Hello world”
mediante servicios web xml.
Antecedentes

 Component Object Model (COM).


 Remote Method Invocation (RMI).
 Common Object Request Broker
Architecture (CORBA).
 Internet Inter-ORB Protocol.

No interoperan fácilmente, debido a


las dependencias de un lenguaje
particular o de un sistema operativo o
de protocolos específicos de modelos
de objetos.
Qué es un servicio web XML
1/3

 Diseñado para garantizar la


interoperabilidad entre las diversas
plataformas de desarrollo de
aplicaciones existentes hoy en día.
Qué es un servicio web XML
2/3

 Es una unidad de código que puede


activarse a través del uso de pedidos
HTTP.
 Permite además que programas
desarrollados en diferentes lenguajes
puedan comunicarse entre sí de un
modo estándar.
Qué es un servicio web XML
3/3

 La llave fundamental de su éxito ha sido


su diseño del uso de un modelo de
mensajes basados en texto para
implementar la comunicación.
Características principales

 Los servicios Web XML solo pueden ser


accedidos vía HTTP.
 Trabajan en un ambiente sin estado, de
forma que cada pedido origina un
nuevo objeto que se crea para
satisfacerlo.
 Solo puede manipular elementos que
puedan ser expresados totalmente en
XML.
“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
Contenido

 Definición de .NET Remoting.


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

 Es un sistema genérico cuyo objetivo


principal es la comunicación entre
diferentes aplicaciones.
 Los objetos .NET son expuestos a
procesos remotos, de forma que se
potencia la comunicación
interprocesos.
Definición de .NET Remoting

 Las aplicaciones que participan en la


comunicación pueden estar en
diferentes máquinas de la misma red e
inclusive en diferentes máquinas en
distintas redes.
Características principales

 Elimina las dificultades de DCOM


mediante el soporte de diferentes
formatos de protocolos de transporte y
de comunicación.
Características principales

 Pueden ser usados mediante cualquier


protocolo.
 Soporta opciones de manejo de estado y
callbacks.
 Se basa en la existencia de un common
language runtime que contenga las
informaciones sobre los tipos usados.
Características principales

 Requiere que los clientes sean


construidos usando Microsoft.NET o
cualquier otro framework que soporte
.NET Remoting (un ambiente
homogéneo).
Características principales

 Los objetos remotos son accesibles


mediante los “canales”.
 Existen dos tipos “TcpChannel” y
“HttpChannel”.
Hello world
Creando el objeto remoto.
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace CodeGuru.Remoting
{
public class SampleObject : MarshalByRefObject
{
public SampleObject()
{
}
public string HelloWorld()
{
return "Hello World!";
}
}
}
Hello world
Creando el servidor para exponer el objeto remoto.
public static int Main(string [] args)
{
// Create an instance of a channel
TcpChannel channel = new TcpChannel(8080);
ChannelServices.RegisterChannel(channel);
// Register as an available service with the name HelloWorld
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(SampleObject),
"HelloWorld",
WellKnownObjectMode.SingleCall );

System.Console.WriteLine("Press the enter key to exit...");


System.Console.ReadLine();
return 0;
}
Hello world
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
Communication
Engine
Contenido

 Definición de ICE.
 Características principales.
 “Hello world”.
WebParts y
personalización
en ASP.NET 2.0
Contenido

 Definición de Webpart.
 Descripción de las clases nuevas.
WebPartManager,
SqlPersonalizationProvider,
 Definición de un portal configurable y
personalizable
!!Preguntas!!

También podría gustarte