Title: Applications Blocks for 'NET
1Applications Blocks for .NET
- Franco A. Ceruti
- MCT MCSD MCP
- VBNext
- endor_at_fibertel.com.ar
2Agenda
- Application Blocks for .NET
- Idea
- Momento en el Tiempo
- Migración
- Desarrollo
- Bloques actuales
- Data Acces Application Block
- Exception Management Application Block
- Bloques a Futuro
- Office Reporting Application Block
- Feedback
- Preguntas
3Agenda
- Application Blocks for .NET como idea
- Momento en el tiempo
- Migracion
- Desarrollo
- Bloques actuales
- Data Acces Application Block
- Exception Management Application Block
- Bloques a Futuro
- Office Reporting Application Block
- Feedback
- Preguntas
4Application Blocks como Idea
- Ayudar a los Desarrolladores
- Adopcion temprana
- Reduccion de errores
- Producir
- Lo que los desarrolladores necesitan.
- Arquitectura abierta.
- Promover Best Practices
- Alinear el desarrollo actual con el desarrollo a
futuro.
5Problemas de los Arquitectos de Software
6Momento en el Tiempo (Ciclo de Adopción)
Late Majority
Early Majority
Early Adopters
Laggards
Innovators
Technology Enthusiasts
Conservatives
Pragmatists
Visionaries
Skeptics
Current Version
V.Next
Product Dev
Product Dev
Product Dev
7Escenario
Custom Biz Logic
Custom Data Layer
Custom UIs
Internationalization
6
- Objetivo
- Acelerar la adopción de la tecnología .NET y
generar código testeado, confiable y documentado
que se pueda consumir desde las aplicaciones. - Ayudar a los arquitectos a la adopción temprana
de .NET.
Security
4
User Interface
Monitoring Exception Handling
State Management
LifecycleGuidance
Data Access
7
2
Human and computer interfaces
1
3
5
8Blocks y Guias
Canonical Architecture
Operational Management
Security
Communication
Dialogs
Dialog Flow
Business Flow layer
EMAB
Business / Service Objects
Data Access
Lifecycle
9Migracion y Desarrollo
- Migración
- Reemplazar algunos componentes con los
propuestos. - Desarrollo
- Desarrollar para incorporar la funcionalidad
propuesta. - Implica una tendencia hacia Best Practices
10Interrelación Escenario ICliente - Servidor
11Interrelación Escenario IIModelo en Capas
12Interrelación Escenario IIIModelo en Capas
Componentizado
13Balance
- Reducción de código
- Reducción de errores
- Alineación y Próxima versión
- Arquitectura recomendada por MS
- Reducción de tiempos
- Focalización
14Data Access Application Block
- Nile Case Study
- Nile is a common ecommerce industry benchmark
application - 34 Custom Code Reduction
- 0 Performance Loss
- IBuySpy Case Study
Potential Feature
Attributes Pre/Post
Monitoring Component E.g. Perfmon
Data Access Accel
Monitoring
66 Code
Routing (Coyote)
Data Access AB
Potential Features
- Data Access Application Block
- Provide Roadmap from other RDBMSs to SQL Server
- Performance, Availability and Scalability
- Multiple Output Formats
- Sprocs, SQL statements, BLOBs, indexing tables
- Single point to modify for special features
- Opportunity for monitoring interception point
- Opportunity for SQL Scale-out routing
- Opportunity for Method-Sproc mapping
15Data Access Application Block
- El Data Access Application Block
- Componente que expone clases con metodos para
ejecutar comandos sobre un SQL server de una
manera robusta y eficiente. - Incorpora las mejores practicas de ADO.NET (Best
Practices). - Managed Code
- Static
16Interfase Básica
17Overload - Sobrecarga
- Como identificar
- Método que necesito ejecutar
- El overload es abrumador
- Clasificar primero por el formato de respuesta
que necesito. - Int cuando ejecuto me devuelve el numero de
registros afectados. - DataSet el transporte de datos en .NET
- SQLDataReader datos de solo lectura.
- Object puede devolverme un valor solamente.
- XMLReader los datos en formato XML para ser
consumidos.
18Como Elegir el método
- Luego decidir el tipo de Conexión
- String de Conexión
- SQLConnection
- SQLConnection SQLTransaction
- Por ultimo decidir si pasamos Parámetros
- No parámetros
- Array de SQLParameters
- Array de values
- Primero elegir el formato de respuesta
- Int
- DataSet
- SQLDataReader
- Object
- XMLReader
SqlHelper.ExecuteDataset( tuconnectionstring,S
ystem.Data.CommandType.StoredProcedure ,Select
from XXX)
SqlHelper
SqlHelper.ExecuteDataset(
SqlHelper.ExecuteDataset(tuconnectionstring,Sel
ect from XXX)
SqlHelper.ExecuteDataset(tuconnectionstring,
19Métodos Principales
- ExecutenonQuery devuelve un integer con el
numero de registros afectados. - ExecuteDataSet devuelve un dataset con una o mas
tablas. - ExecuteReader devuelve un SQLDataReader.
- ExecuteScalar devuelve un object que contiene un
simple valor. - ExecuteXMLReader devuelve un objeto XMLReader.
20Reduce la complejidad
21Detalles
- DataReader no cierra la conexión hasta cerrado el
datareader. - SQLCommand debe setearsele la Transaccion.
- Nombrar las tablas subsecuentes
- Engloba las llamadas en una
22Ahora vos lo vas a usar
- Qué le cambiarias?
- Nombres de las Tablas?
- Multiples Tablas en Dataset?
- De multiples Fuentes?
- Manejo de string de conexión?
- Qué mas?
23Preguntas sobre DAAB?
24Links Importantes I
- Guias
- Authentication in ASP.NET .NET Security Guidance
- http//msdn.microsoft.com/library/en-us/dnbda/htm
l/authaspdotnet.asp - Exception Management in .NET
- http//msdn.microsoft.com/library/en-us/dnbda/htm
l/exceptdotnet.asp - Microsoft .NET/COM Migration and Interoperability
- http//msdn.microsoft.com/library/en-us/dnbda/html
/cominterop.asp - Monitoring in .NET Distributed Application Design
- http//msdn.microsoft.com/library/en-us/dnbda/html
/monitordotnet.asp
25Exception Management Application Block(EMAB)
- Es un framework de manejo de excepciones
- Flexible
- Extensible
- Consistente
26EMAB
27Interfaces
- BaseApplicationException debe ser usada como
base de las clases de manejo de error definidas
por el desarrollador. - ExceptionManagerSectionHandler encargada de la
configuracion. - ExceptionManager Invoca publishers para publicar
el error. - DefaultPublisher publicador de errores por
default, utiliza el event log. - IPublishException y IPublishXMLException solo
son interfaces para implemetar las rutinas de
publicacion de errores propias.
28Lo Importante
- Crear tu propia clase de errores para grabar en
- SQL?
- Email?
- Log Files?
- Log Files con formato XML?
29Que cambiarias?
- Que agregarías?
- Usarías esto en tus aplicaciones?
30Office Reporting Application Block(ORAB en
desarrollo)
31Links Importantes I
- Authentication in ASP.NET .NET Security Guidance
- http//msdn.microsoft.com/library/en-us/dnbda/htm
l/authaspdotnet.asp - Exception Management in .NET
- http//msdn.microsoft.com/library/en-us/dnbda/htm
l/exceptdotnet.asp - Microsoft .NET/COM Migration and Interoperability
- http//msdn.microsoft.com/library/en-us/dnbda/html
/cominterop.asp - Monitoring in .NET Distributed Application Design
- http//msdn.microsoft.com/library/en-us/dnbda/html
/monitordotnet.asp
32Links Importantes II
- Application Blocks for .NET
- Data Access http//msdn.microsoft.com/library/?ur
l/library/en-us/dnbda/html/daab-rm.asp?frametrue
- Exception Mgmt http//msdn.microsoft.com/library/
?url/library/en-us/dnbda/html/emab-rm.asp?framet
rue
33Links Importantes III
- Newsgroup Web-Based Reader
- http//msdn.microsoft.com/newsgroups/loadframes.as
p?icpmsdnslcidusnewsgroupmicrosoft.public.dot
net.distributed_apps - Newsgroup NNTP Reader
- news//msnews.microsoft.com/microsoft.public.dotne
t.distributed_apps
34 Preguntas ?
35Muchas Gracias.
- Franco A. Ceruti
- VBNext endor_at_fibertel.com.ar