Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.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
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
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)
}
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
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
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++
Regresar
ADO.NET
Contenido
Data y XML
ADO.NET XML ... ...
Clases Bajas
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
Relations DataColumn
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
// Bind to UI element(s)...
DataGrid myGrid = new DataGrid();
myGrid.SetDataBinding( view1, “Customer”);
//...
System.Data—DataSetView
// 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
.SQL .ADO
SQLCommand ADOCommand
SQLConnection ADOConnection
SQLDataReader ADODataReader
SQLDataSetCommand ADODataSetCommand
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 ...
System Services
Modelo de aplicaciones
Web
Código no gestionado
Pedidos HTTP
HTTP Runtime
HTTP Module
HTTP Module
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
.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
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();
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
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!!