Arquitectura .NET

Anuncio
Arquitectura .NET
César Julio Bustacara M.
2008
Agenda
Guías de arquitectura, diseño y código
Arquitectura del .NET Framework y la CLR
Acceso a datos: ADO.NET
Guías de arquitectura / diseño y
código
Guías de Arquitectura (PAG)
Estándares de desarrollo
Application Blocks
Guías de migración
Guías de arquitectura
Guías de diseño para aplicaciones .NET
Muestran como encaja todo junto
Blueprint para decisiones a nivel de diseño
Alto riesgo en la etapa de diseño
Arquitectos son contrarios al riesgo
No es una solución para todos los diseños
Hay escenarios específicos
Preservar las inversiones
“¿Tendré que rehacer todo en el futuro?”
Guías de Arquitectura
Security
Security
Operational Management
Management
Operational
Communication
Communication
Users
Users and
and Devices
Devices
Presentation
Presentation
Business
Business
Svc
Svc Interfaces
Interfaces
Svc
Svc Agents
Agents
Data
Data
Data Sources
Services
Guías de Arquitectura
Security
Security
Operational Management
Management
Operational
Communication
Communication
Users
Users and
and Devices
Devices
UI
UI Components
Components
UI
UI Process
Process Components
Components
Business
Business Workflows
Workflows
Svc
Svc Interfaces
Interfaces
Business
Business Components
Components
Business
Business Entities
Entities
Data
Data Access
Access Components
Components
Data Sources
Svc
Svc Agents
Agents
Services
Guías de Arquitectura
Application Architecture for .NET:
Designing Applications and Services
.NET Data Access Architecture Guide
Building Secure ASP.NET Applications
Debugging .NET Applications
Exception Management in .NET
Guías de Arquitectura
.NET/COM Migration and Interoperability
Monitoring in .NET
Deploying .NET Applications
Team Development with SourceSafe
UNIX Code Migration Guide
http://msdn.microsoft.com/practices/
Estándares de desarrollo
Ayudan a escribir código robusto y seguro
que funciona de manera consistente con el
Framework .NET
Facilitan la propiedad colectiva del código
.NET Framework Design Guidelines
http://msdn.microsoft.com/library/enus/cpgenref/html/cpconnetframeworkdesigngu
idelines.asp
FxCop: analiza el código managed para
chequear las prácticas recomendadas
http://www.gotdotnet.com/team/libraries/
Application Blocks
Data Access Application Block for .NET
Componente .NET que contiene código
optimizado de acceso a datos
Exception Management Application Block
for .NET
Provee un framework simple y extensible para
manejar excepciones
Arquitectura del Framework
de .NET y la CLR
Objetivos de diseño
Arquitectura
Beneficios
Compilación
Introducción a .NET
Objetivos de diseño de .NET Framework
Entorno consistente de orientación a
objetos:
mismo modelo para ejecución local,
código remoto o entorno distribuido en
Internet
Minimizar conflictos: implantación y
versiones
Proporcionar ejecución segura de
código
Introducción a .NET
Objetivos de diseño de .NET Framework
Eliminar problemas de rendimiento
de código interpretado o con
scripting
Mayor productividad del
desarrollador tanto para aplicaciones
Windows como Web
Comunicación basada en estándares
de la industria
Introducción a .NET
Framework, Lenguajes y Herramientas
VB
C++
C#
JScript
®
J#
Common Language Specification
Windows
Forms
(.NET CF)
ADO.NET y XML
Base Class Library
Common Language Runtime
Sistema Operativo
Visual Studio® .NET
ASP.NET
Web Forms Web Services
Mobile Internet Toolkit
Introducción a .NET
Framework, Languajes y herramientas
System.Web
Services
Description
UI
HtmlControls
Discovery
WebControls
System.Windows.Forms
Design
Protocols
ComponentModel
System.Drawing
Caching
Security
Drawing2D
Printing
Configuration
SessionState
Imaging
Text
System.Data
System.Xml
OleDb
SqlClient
XSLT
Common
SQLTypes
XPath
Serialization
System
Collections
IO
Security
Runtime
InteropServices
Configuration
Net
ServiceProcess
Diagnostics
Reflection
Text
Remoting
Globalization
Resources
Threading
Serialization
Introducción a .NET
Beneficios del .NET Framework
Simplifica el desarrollo y la implantación
Proporciona un entorno de ejecución
seguro y robusto
Unifica modelos de programación
Soporta múltiples lenguajes de
programación
Independiente de la plataforma
Introducción a .NET
Beneficios del .NET Framework
Sistema común de tipos
Instancias y definición de tipos comunes
Orientación a objetos:
Clases e interfaces
Constructores, propiedades, métodos, eventos
Herencia cruzada entre lenguajes
Interoperabilidad
Con COM
Con DLLs nativas (del estilo Win32)
Introducción a .NET
Beneficios del .NET Framework
Elimina la “fontanería” de COM
No más …
Registro
=>Aps autodescriptivas
GUIDs
=>namespaces jerárquicos
Archivos .IDL
=>objetos autodescriptivos
HRESULTs
=>excepciones estructuradas
IUnknown
=>objeto raiz común
AddRef/Release
=>garbage collector
CoCreateInstance
=>operador ”new”
Introducción a .NET
Compilación y ejecución
Compilación
Código
fuente
Compilador
del lenguaje
Código
Nativo
Compilador
JIT
Ejecución
Código (IL)
Assembly
Metadatos
En instalación o la
primera vez que se
invoca a cada método
Acceso a datos: ADO.NET
ADO vs ADO.NET
Características de ADO.NET
Arquitectura
Enlace a datos (binding)
ADO vs ADO.NET
ADO trabaja bien, pero:
Necesita COM y Windows
Los recordsets no viajan bien a través de Internet
ADO.NET resuelve estos problemas:
Utiliza XML (a bajo nivel) para realizar el transporte
de datos
XML no tiene requisitos específicos de
runtime/transporte
⌧ No se necesita un código especial para hacer el
marshaling a través de Internet
ADO .NET, una nueva mentalidad:
Entorno desconectado
Todo el transporte de datos utiliza XML
ADO.NET
DBLib, ODBC, DAO, RDO, ADO, ….
ADO.NET
System.Data: la clase raiz
A partir de ahí, principales namespaces:
System.Data.OleDB
System.Data.SQLClient
System.Data.ODBC, System.Data.OracleClient
System.XML: para trabajar directamente
con XML
ADO.NET
System.Data.OleDb: trabaja con
todas las fuentes OLE DB
Soporta unmanaged providers de ADO
System.Data.SQLClient: sólo SQL
Server (managed)
VStudio 2003: System.Data.ODBC,
System.Data.OracleClient
Arquitectura de ADO.NET
Presentación
Windows Forms
MiAp.Exe
DataSet
Negocio
Web forms
Internet
intranet
IE
DataSet
Business to business
(BizTalk, por ejemplo)
Xml
Datos
Data object (class)
Data adapter
DataSet
Data adapter
Diferencia fundamental
En ADO:
Recordset
Buffer de
datos
Acceso a
datos
En ADO.NET:
Buffer de
datos
DataSet
Acceso a
datos
DataAdapter
ADO.NET: Connection
OleDbConnection/SQLConnection
Representa la sesión contra la BD
Utilizado por objetos Data Adapter y Command
para recuperar/actualizar
Inicia las transacciones
Connection.BeginTransaction() devuelve un objeto
Transaction
xxxTransaction
⌧Un comando se enlista en una transacción
⌧IsolationLevel
⌧Commit() / Rollback()
Configuración del pool de conexiones en el
connection string
ADO.NET: Command
OleDbCommand/SQLCommand
Representa Transact-SQL o procedimientos
almacenados
Devuelve un resultset (ExecuteReader), un
valor (ExecuteScalar), o ejecuta sentencias
de modificación (ExecuteNonQuery)
Generación automática con el objeto
CommandBuilder
ADO.NET: DataReader
OleDbDataReader/SQLDataReader
Stream forward-only read-only
Utilizado por el DataAdapter
Muy rápido
Creado por un objeto Command
(ExecuteReader)
ADO.NET: DataAdapter
OleDbDataAdapter/SQLDataAdapter
Representa un conjunto de Commands y una
Connection
Puente entre el DataSet y la BD
Lee y actualiza la BD:
SelectCommand, UpdateCommand, InsertCommand,
DeleteCommand
ADO.NET – DataAdapter
DataAdapter
SelectCommand
Base de datos
InsertCommand
UpdateCommand
DeleteCommand
TableMappings
DataSet
ADO.NET: DataSet
Objeto estrella en ADO.NET
Representa una caché de datos en
memoria
Contiene DataTables
Lee y escribe datos y esquemas en XML
Serializable
ADO.NET: DataSet
Puede ser tipado o no tipado:
Ambos heredan de la clase DataSet
El tipado se apoya en un esquema XML
(.XSD) para generar la clase
El tipado tiene ventajas:
⌧Expone estructura como propiedades y métodos:
Intellisense
⌧Recoge la Primary key
ADO.NET: Otros objetos
DataTable
Representa una tabla en memoria
Lo rellena un DataAdapter o a mano
Componente principal de los objetos DataSet y
DataView
DataView
Vista personalizada de un objeto DataTable
Filtros, ordenación, búsquedas …
DataRelation
Define relaciones entre tablas
Utiliza columnas de un DataTable
ADO.NET - DataSet
DataSet
DataTable
DataColumn
DataTable
DataRow
Relations
XML Schema
Constraints
ADO.NET: Lecturas
Método Fill del objeto DataAdapter
Se utiliza el SelectCommand del
DataAdapter
Inserta/actualiza datos del DataSet
Si la tabla existe, actualiza datos
Si no existe, crea y rellena la tabla
Una tabla por cada resultset
Mantiene la conexión en su estado
original
ADO.NET: Actualizaciones
La funcionalidad en ADO es implícita.
Recordset = caja negra.
Ejemplo: UpdateBatch
En ADO.NET: Se crea un modelo más
explícito y transparente.
InsertCommand, UpdateCommand,
DeleteCommand
Eventos de Update
CommandBuilder: generación automática
de los comandos de Insert, Update y
Delete a partir del SelectCommand
ADO.NET: Actualizaciones
DataAdapter.Update:
Analiza los cambios del DataSet
Ejecuta los comandos Insert,
Update y Delete necesarios
Refresca el DataSet
Orden de ejecución por defecto:
Insert, Update y Delete.
ADO.NET: Enlace a datos
ADO.NET soporta enlazar (binding)
DataSets a Windows Forms / Web
Forms y sus controles
VStudio .NET incluye bastantes
wizards para hacer el enlace entre
datos y controles
Resumen
Resumen
Ejemplo
Solo lectura
Descargar