fundamental: desarrollo en capas david jirón arquitecto.net soluzionadjiron@cl.soluziona.com juan...
Post on 16-Feb-2015
3 Views
Preview:
TRANSCRIPT
Fundamental:Fundamental:Desarrollo en CapasDesarrollo en Capas
David JirónDavid JirónArquitecto .NETArquitecto .NETSoluzionaSoluzionadjiron@cl.soluziona.djiron@cl.soluziona.comcom
Juan Pablo GarcíaJuan Pablo GarcíaDeveloper ManagerDeveloper ManagerDATCO ChileDATCO Chilejpgarcia@datco.cljpgarcia@datco.cl
Temas a tratar hoyTemas a tratar hoy
¿Por qué desarrollo en capas?¿Por qué desarrollo en capas?Diseño en CapasDiseño en CapasEntidades y mensajesEntidades y mensajesAspectos transversalesAspectos transversalesDesafíos de los sistemas en capasDesafíos de los sistemas en capasDemos HOW TODemos HOW TO
¿Por qué?¿Por qué?
No está basado en Requerimientos No está basado en Requerimientos Funcionales Funcionales
¿Es de mayor rendimiento? No ¿Es de mayor rendimiento? No necesariamente…necesariamente…
¿Es mas rápido de implementar? No ¿Es mas rápido de implementar? No necesariamente…necesariamente…
¿Es mas fácil? No necesariamente…¿Es mas fácil? No necesariamente…
¿Entonces?¿Entonces?
¿Entonces?¿Entonces?
VentajasVentajasMantenibilidadMantenibilidad
Provee una Organización Lógica de Provee una Organización Lógica de Aplicación y DesarrolloAplicación y Desarrollo
EscalabilidadEscalabilidadPermite distribuir aplicación – cada capa Permite distribuir aplicación – cada capa puede residir en un computador distintopuede residir en un computador distinto
Agregar máquinas mejora rendimientoAgregar máquinas mejora rendimiento
SeguridadSeguridadPermite aislar componentesPermite aislar componentes
Alta DisponiblidadAlta DisponiblidadPermite tener componentes redundantesPermite tener componentes redundantes
Soporta multiples plataformasSoporta multiples plataformas
UI Components
UI Process Components
Data Access Components
User Devices
Service Agents
Op
eration
al Man
agem
ent
Secu
rity
Co
mm
un
ication
Service Interfaces
Owned Data Sources
External Services
External Service Agents
Messaging Infrastructure
Business Process Components
Business Components
Business Entities
Users
Presentation
BusinessLogic
DataLayer
Data andExternalSystems
Diseño en capasDiseño en capas
Diseño en capasDiseño en capas
Capa de PresentaciónCapa de PresentaciónComponentes de interfaz de usuarioComponentes de interfaz de usuario
Componentes de proceso de usuarioComponentes de proceso de usuario
UI Components
UI Process ComponentsPresentation
UI Components
UI Process Components
Data Access Components
User Devices
Service Agents
Op
era
tion
al M
an
ag
em
en
t
Se
cu
rity
Co
mm
un
ica
tion
Service Interfaces
Owned Data Sources
External Services
External Service Agents
Messaging Infrastructure
Business Process Components
Business Components
Business Entities
Users
Presentation
BusinessLogic
DataLayer
Data andExternalSystems
Diseño en capasDiseño en capas
PresentaciónPresentaciónIndependiente de implementación del Independiente de implementación del Resto de AplicaciónResto de Aplicación
ASP.NET, Windows Forms, Mobile, FLEX, ASP.NET, Windows Forms, Mobile, FLEX,
Envía y recibe Recibe Componentes de Envía y recibe Recibe Componentes de Entidades de Negocio (objetos, Entidades de Negocio (objetos, DataSets, XML).DataSets, XML).
Ej. DataGrid.DataSource = dataSet;Ej. DataGrid.DataSource = dataSet;
Ej. Repeater.DataSource = arrayUsuarios;Ej. Repeater.DataSource = arrayUsuarios;
Diseño en capasDiseño en capas
PresentaciónPresentaciónComponentes de Presentación: Componentes de Presentación:
No inician, participan, ni votan en No inician, participan, ni votan en transacciones transacciones Obtienen una referencia al proceso actual Obtienen una referencia al proceso actual del usuario si necesitan desplegar su data o del usuario si necesitan desplegar su data o actuar en su estado. actuar en su estado. Pueden encapsular tanto la funcionalidades Pueden encapsular tanto la funcionalidades de visualización como de controlador de visualización como de controlador
ProcesoProcesoPatrones de PresentaciónPatrones de Presentación
MVCMVC
Flujo de PresentaciónFlujo de PresentaciónBEA PageFlowBEA PageFlowMS UIP Application BlockMS UIP Application Block
UI Components
UI Process Components
Data Access Components
User Devices
Service Agents
Op
era
tion
al M
an
ag
em
en
t
Se
cu
rity
Co
mm
un
ica
tion
Service Interfaces
Owned Data Sources
External Services
External Service Agents
Messaging Infrastructure
Business Process Components
Business Components
Business Entities
Users
Presentation
BusinessLogic
DataLayer
Data andExternalSystems
Diseño en capasDiseño en capas
Capa de NegocioCapa de NegocioInterfaces de servicioInterfaces de servicio
Componentes de procesos de negocioComponentes de procesos de negocio
Componentes de negocioComponentes de negocio
Service Interfaces
Business Process Components
Business Components
Diseño en capasDiseño en capas
Capa de NegociosCapa de NegociosComponentes de NegocioComponentes de Negocio
Proveen lógica de negocio o encapsulan Proveen lógica de negocio o encapsulan otras lógicas de negociootras lógicas de negocio
Son invocados por la capa de presentación, Son invocados por la capa de presentación, interfaz de servicio, u otro proceso de interfaz de servicio, u otro proceso de negocio, usualmente en conjunto con alguna negocio, usualmente en conjunto con alguna data de negocio para operar (estructura o data de negocio para operar (estructura o documento) documento)
Diseño de capasDiseño de capas
Capa de NegociosCapa de NegociosComponentes de NegocioComponentes de Negocio
Son la raíz de las transacciones, y votan en Son la raíz de las transacciones, y votan en las transacciones donde participan las transacciones donde participan
Validan parámetros de entrada y salida Validan parámetros de entrada y salida
Exponen operaciones de compensación Exponen operaciones de compensación
Pueden llamarPueden llamarDALC para obtener o actualizar data DALC para obtener o actualizar data
Servicios externos a través de agentes de Servicios externos a través de agentes de servicios. servicios.
Otros componentes de negocio e iniciar workflows Otros componentes de negocio e iniciar workflows de negocio. de negocio.
Pueden levantar excepciones hacia el Pueden levantar excepciones hacia el llamador si existe un problema con las llamador si existe un problema con las transacciones atómicas transacciones atómicas
Diseño en capasDiseño en capas
Capa de NegociosCapa de NegociosComponentes de NegocioComponentes de Negocio
RecomendacionesRecomendacionesUsar comunicaciones basadas en mensajes cuando sea Usar comunicaciones basadas en mensajes cuando sea posible posible
Idempotent – aplicación no queda incosistente si el Idempotent – aplicación no queda incosistente si el mismo mensaje es recibido dos veces mismo mensaje es recibido dos veces
Escoger cuidadosamente los comienzos y finales de las Escoger cuidadosamente los comienzos y finales de las transacciones (atómicas o long-running) para permitir re-transacciones (atómicas o long-running) para permitir re-intentos y composición.intentos y composición.
Componentes deberían poder correr en un contexto Componentes deberían poder correr en un contexto independiente del usuario – si necesariamente independiente del usuario – si necesariamente impersonar al usuario actual. Esto permite usarlos sin impersonar al usuario actual. Esto permite usarlos sin tener que transmitir o delegar la identidad. tener que transmitir o delegar la identidad.
Escojer y utilizar en forma consistente los formatos de Escojer y utilizar en forma consistente los formatos de datos (XML, DataSet, etc) como parámetros o retornos. datos (XML, DataSet, etc) como parámetros o retornos.
Colocar el nivel de aislamiento de las transacciones Colocar el nivel de aislamiento de las transacciones (transaction isolation level) apropiadamente.(transaction isolation level) apropiadamente.
Exponer Interfaces en lugar de objetosExponer Interfaces en lugar de objetos
Diseño en capasDiseño en capas
Capa de NegociosCapa de NegociosInterfaces de ServicioInterfaces de Servicio
Punto de Entrada paraPunto de Entrada para
abstraer implementaciones internasabstraer implementaciones internas
FacadeFacade
Frontera de Confianza (Trust Boundary)Frontera de Confianza (Trust Boundary)
No debiera cambiar cuando implementación No debiera cambiar cuando implementación de Componente de Negocio cambiade Componente de Negocio cambia
Pueden existir distintas interfaces para Pueden existir distintas interfaces para misma funcionalidad de negociomisma funcionalidad de negocio
Necesidad de interoperabilidad y Necesidad de interoperabilidad y rendimiento influye en diseño de Interfaz de rendimiento influye en diseño de Interfaz de Negocio (ej. Web Services vs Llamada Negocio (ej. Web Services vs Llamada directa) directa)
Diseño en CapasDiseño en Capas
Capa de NegocioCapa de NegocioComponente de Proceso deComponente de Proceso deNegocioNegocio
Utilizar Integrador (ej. BizTalk) Utilizar Integrador (ej. BizTalk) Maneja procesos que involucranManeja procesos que involucranmúltiples pasos y transacciones largas múltiples pasos y transacciones largas Expone una interfaz que implementa un proceso que Expone una interfaz que implementa un proceso que permite a aplicación conversar con otro servicio permite a aplicación conversar con otro servicio Requieren mapas o manipulación extensiva de formatos Requieren mapas o manipulación extensiva de formatos
Utilizar solo componentes: Utilizar solo componentes: No necesita mantener estado conversacional mas allá de No necesita mantener estado conversacional mas allá de la actual actividad de negocio y la funcionalidad puede la actual actividad de negocio y la funcionalidad puede ser implementada como una transacción atómica única. ser implementada como una transacción atómica única. Necesita encapsular funcionalidad y lógica reutilizable Necesita encapsular funcionalidad y lógica reutilizable por muchos procesos por muchos procesos Lógica es intensiva o necesita llamar a APIs y estructuras Lógica es intensiva o necesita llamar a APIs y estructuras Necesita control fino sobre flujo de datos y lógica Necesita control fino sobre flujo de datos y lógica
UI Components
UI Process Components
Data Access Components
User Devices
Service Agents
Op
era
tion
al M
an
ag
em
en
t
Se
cu
rity
Co
mm
un
ica
tion
Service Interfaces
Owned Data Sources
External Services
External Service Agents
Messaging Infrastructure
Business Process Components
Business Components
Business Entities
Users
Presentation
BusinessLogic
DataLayer
Data andExternalSystems
Diseño en capasDiseño en capas
Capa de datosCapa de datosEntidades de negocioEntidades de negocio
Componentes de acceso a datosComponentes de acceso a datos
Data Access Components
Business EntitiesDataLayer
Diseño en capasDiseño en capas
Capa de Capa de datosdatos
Entidades de Entidades de negocionegocio
ComponenteComponentes de acceso s de acceso a datosa datos
Diseño en capasDiseño en capas
Capa de datosCapa de datosComponentes de acceso a datosComponentes de acceso a datos (DALC o DAC)(DALC o DAC)
Proveen los métodos CRUD:Proveen los métodos CRUD:CREATE, READ UPDATE and DELETECREATE, READ UPDATE and DELETE
Proveen método específicos para el motor de Proveen método específicos para el motor de datos.datos.
Encapsulan la complejidad del modelo de Encapsulan la complejidad del modelo de datos.datos.
Estas son clases sin estado (STATELESS Estas son clases sin estado (STATELESS CLASS).CLASS).
Típicamente invocan procedimientos Típicamente invocan procedimientos almacenados.almacenados.
Data Access Components
Business EntitiesDataLayer
Data Access Components
Business EntitiesDataLayer
Diseño en capasDiseño en capas
Capa de datosCapa de datosComponentes de acceso a datosComponentes de acceso a datos (DALC o DAC)(DALC o DAC)
Maneja los detalles de implementación de:Maneja los detalles de implementación de:Encapsula y administra los esquemas de bloqueosEncapsula y administra los esquemas de bloqueosManeja la seguridad y autorizaciónManeja la seguridad y autorizaciónManeja los aspectos transaccionales.Maneja los aspectos transaccionales.Realiza la paginación.Realiza la paginación.Implementa la estrategia de cacheImplementa la estrategia de cacheRealiza la serialización de los datos.Realiza la serialización de los datos.
Si se tienen varios DALC, use un HELPERSi se tienen varios DALC, use un HELPERPara generalizar funciones comunes, use Para generalizar funciones comunes, use herencia.herencia.Para soportar diversos procesos de negocio Para soportar diversos procesos de negocio considere usar como argumentos de los considere usar como argumentos de los métodos del DALC entidades de negociométodos del DALC entidades de negocio
Data Access Components
Business EntitiesDataLayer
Data Access Components
Business EntitiesDataLayer
Diseño en capasDiseño en capas
Capa de datosCapa de datosEntidades de negocioEntidades de negocio
Proveen acceso programático con estados a Proveen acceso programático con estados a los datos del sistema.los datos del sistema.
Son usados como argumentos de los Son usados como argumentos de los procesos de negocio.procesos de negocio.
Son serializables.Son serializables.
No acceden directamente a la base de datosNo acceden directamente a la base de datos
No manejan transacciones, eso lo hacen los No manejan transacciones, eso lo hacen los procesos de negocio.procesos de negocio.
Data Access Components
Business EntitiesDataLayer
Data Access Components
Business EntitiesDataLayer
Diseño en capasDiseño en capas
Capa de datosCapa de datosEntidades de negocioEntidades de negocio
Pueden ser representadas como:Pueden ser representadas como:XMLXML
Dataset genéricos.Dataset genéricos.
Dataset fuertemente tipiadosDataset fuertemente tipiados
Componentes propiosComponentes propios
Componentes propios con responsabilidades de Componentes propios con responsabilidades de CRUDCRUD
Data Access Components
Business EntitiesDataLayer
Data Access Components
Business EntitiesDataLayer
Diseño en capasDiseño en capas
Capa de datosCapa de datosDatos Relacionales a Entidades de Datos Relacionales a Entidades de negocio negocio
Identificar las entidades centrales que Identificar las entidades centrales que encapsulan la funcionalidad de la aplicación.encapsulan la funcionalidad de la aplicación.Para cada entidad implemente un DALC.Para cada entidad implemente un DALC.Recomendaciones:Recomendaciones:
No defina entidades separadas para representar No defina entidades separadas para representar las relaciones de tablas MANY-TO-MANY, eso es las relaciones de tablas MANY-TO-MANY, eso es mejor con métodos del DALC.mejor con métodos del DALC.Los métodos que Los métodos que retornanretornan un tipo en particular de un tipo en particular de entidad de negocio, impleméntelos en el DALC.entidad de negocio, impleméntelos en el DALC.Para cada fuente de datos use un DALC diferente y Para cada fuente de datos use un DALC diferente y llámelos desde el BPM hace la agregación.llámelos desde el BPM hace la agregación.
El control transaccional queda centralizadoEl control transaccional queda centralizadoGranularidad de la agregación (cero hasta 100%)Granularidad de la agregación (cero hasta 100%)
Data Access Components
Business EntitiesDataLayer
Data Access Components
Business EntitiesDataLayer
Diseño en capasDiseño en capas
Capa de datosCapa de datosDatos Relacionales a Entidades de Datos Relacionales a Entidades de negocio negocio
Data Access Components
Business EntitiesDataLayer
Data Access Components
Business EntitiesDataLayer
DEMODEMO
HOW TO: Representar EntidadesHOW TO: Representar Entidades
Diseño en capasDiseño en capas
Aspectos transversalesAspectos transversalesSeguridadSeguridad
ComunicacionesComunicaciones
Administración y operacionesAdministración y operaciones
Op
eration
al Man
agem
ent
Secu
rity
Co
mm
un
ication
UI Components
UI Process Components
Data Access Components
User Devices
Service Agents
Op
era
tion
al M
an
ag
em
en
t
Se
cu
rity
Co
mm
un
ica
tion
Service Interfaces
Owned Data Sources
External Services
External Service Agents
Messaging Infrastructure
Business Process Components
Business Components
Business Entities
Users
Presentation
BusinessLogic
DataLayer
Data andExternalSystems
Diseño en capasDiseño en capas
Aspectos transversales SeguridadAspectos transversales Seguridad
Op
eratio
na
l Ma
nag
emen
t
Secu
rity
Co
mm
un
ication
Op
eratio
na
l Ma
nag
emen
t
Secu
rity
Co
mm
un
ication
Diseño en capasDiseño en capas
SeguridadSeguridadAutenticaciónAutenticación
Windows Authentication / Forms Windows Authentication / Forms AuthenticationAuthentication
Credenciales (nombre/password, smartcards, Credenciales (nombre/password, smartcards, llaves, etc)llaves, etc)
Flujo de Identidad por las CapasFlujo de Identidad por las Capas
Diseño de capasDiseño de capas
SeguridadSeguridadAutenticaciónAutenticación
Flujo de IdentidadFlujo de IdentidadDelegaciónDelegación
Trusted SubsystemTrusted Subsystem<identity impersonate="false" /> <identity impersonate="false" />
Diseño en capasDiseño en capas
AutorizaciónAutorizaciónAccess Control List (ACLs)Access Control List (ACLs)Autorización Capa PresentaciónAutorización Capa Presentación
ASP URL AuthenticationASP URL Authentication<authorization><authorization> <allow users="DomainName\Bob" /><allow users="DomainName\Bob" /> <deny users="*" /><deny users="*" /></authorization> </authorization>
.NET Role-Based Security .NET Role-Based Security if(userPrincipal.IsInRole(“Managers"))if(userPrincipal.IsInRole(“Managers"))
Operacion();Operacion();
oo
[PrincipalPermission(SecurityAction.Demand, [PrincipalPermission(SecurityAction.Demand, role="Managers")]role="Managers")]
public void Operacion(…)public void Operacion(…){{// … // … }}
Diseño en capasDiseño en capas
SeguridadSeguridadSeguridad de ComunicaciónSeguridad de Comunicación
Establecer que la data que pase entre capas Establecer que la data que pase entre capas está seguraestá segura
Securitizar el mensajeSecuritizar el mensajeFirmar el mensajeFirmar el mensaje
Encriptar el mensajeEncriptar el mensaje
Encriptar parte sensible del mensajeEncriptar parte sensible del mensaje
Securitizar el canalSecuritizar el canalSSL, IPSec, VPNsSSL, IPSec, VPNs
Diseño en capasDiseño en capas
SeguridadSeguridadAuditoríaAuditoría
Presentación – logon/logoff, cambios de Presentación – logon/logoff, cambios de password, etcpassword, etc
Negocio – actividades, transaccionesNegocio – actividades, transacciones
Datos – actividades, transaccionesDatos – actividades, transacciones
Intercepción de mensajesIntercepción de mensajes
Almacenaje seguroAlmacenaje seguro
Manejo de PerfilesManejo de PerfilesBase de Datos o DirectorioBase de Datos o Directorio
AzManAzMan
Diseño en capasDiseño en capas
Aspectos transversales Aspectos transversales AdministraciónAdministración
Op
eratio
na
l Ma
nag
emen
t
Secu
rity
Co
mm
un
ication
Op
eratio
na
l Ma
nag
emen
t
Secu
rity
Co
mm
un
ication
Diseño de capasDiseño de capas
Manejo de ExcepcionesManejo de ExcepcionesSon excepcionales!Son excepcionales!Lanzando y Atrapando ExcepcionesLanzando y Atrapando ExcepcionesDiseño y Comportamiento de Diseño y Comportamiento de ExcepcionesExcepciones
PresentaciónPresentaciónReintentar, Exponer, o continuarReintentar, Exponer, o continuar
NegociosNegociosExcepciones de Negocio, Excepciones Técnicas – Excepciones de Negocio, Excepciones Técnicas – PropagarPropagarViolaciones de Validaciones, data insuficiente – Violaciones de Validaciones, data insuficiente – GenerarGenerarEn general, propagarEn general, propagar
DataDataRAISERROR de SQLRAISERROR de SQLMapear a Exception apropiada - PropagarMapear a Exception apropiada - Propagar
Diseño en capasDiseño en capas
Aspectos transversales Aspectos transversales ComunicacionesComunicaciones
Op
eratio
na
l Ma
nag
emen
t
Secu
rity
Co
mm
un
ication
Op
eratio
na
l Ma
nag
emen
t
Secu
rity
Co
mm
un
ication
Desafíos del diseño en Desafíos del diseño en CapasCapas
Mover Datos entre las capasMover Datos entre las capasNo existe una técnica universal, No existe una técnica universal, depende de la aplicación.depende de la aplicación.
Algunas recomendaciones:Algunas recomendaciones:Si es necesario poder ordenar, buscar y Si es necesario poder ordenar, buscar y hacer “Binding” es recomendable usar hacer “Binding” es recomendable usar DATASETDATASET
Si la aplicación trabaja principalmente con Si la aplicación trabaja principalmente con instancias de datos (no colecciones) use instancias de datos (no colecciones) use objetos entidades de negocio, para evitar el objetos entidades de negocio, para evitar el overhead de los DATASET.overhead de los DATASET.
El uso de XML es la mejor opción para El uso de XML es la mejor opción para interoperar, pero tiene costos asociados a la interoperar, pero tiene costos asociados a la validación de esquemas y serialización.validación de esquemas y serialización.
Desafíos del diseño en Desafíos del diseño en CapasCapas
Concurrencia y BloqueosConcurrencia y BloqueosAproximación “Last in Wins”Aproximación “Last in Wins”
Aproximación de ConcurrenciaAproximación de ConcurrenciaConcurrencia pesimista:Concurrencia pesimista:
El usuario que lee el registro con intención de El usuario que lee el registro con intención de actualizarlo lo bloquea hasta terminar su uso.actualizarlo lo bloquea hasta terminar su uso.
Concurrencia optimista:Concurrencia optimista:El usuario no bloquea el registro, al momento de El usuario no bloquea el registro, al momento de actualizarlo valida que no cambió desde que lo actualizarlo valida que no cambió desde que lo leyó. Si ha cambiado se genera una excepción.leyó. Si ha cambiado se genera una excepción.
Desafíos del diseño en Desafíos del diseño en CapasCapas
TransaccionesTransaccionesTípicamente iniciadas por el BPTípicamente iniciadas por el BP
ManualesManualesADO.NET y SQL.ADO.NET y SQL.
Usted escribe el código de control.Usted escribe el código de control.
Son las más rápidas.Son las más rápidas.
Simple para un solo origen de datosSimple para un solo origen de datos
AutomáticasAutomáticasUsan Enterprise Services (COM+)Usan Enterprise Services (COM+)
Funcionan con DTC.Funcionan con DTC.
Para múltiples orígenes de datos.Para múltiples orígenes de datos.
Desafíos del diseño en Desafíos del diseño en CapasCapas
TransaccionesTransaccionesNecesidad detransacción
BP llama alcomponente? ¿Se usa SP?NO Use ADO.NETNO
Use la DB
SI
¿Componentenecesita votar en la
TX?
SI
No implemente TXautomaticas
NO
Implemente TXque soporten
atributos
SI
DEMODEMO
HOW TO: .NET TIERHOW TO: .NET TIER
Desafíos del diseño en Desafíos del diseño en CapasCapas
ValidacionesValidacionesPuede ser hecha en cualquier capa.Puede ser hecha en cualquier capa.
BP puede validar los documentos que BP puede validar los documentos que recibe usando esquemas XDS.recibe usando esquemas XDS.
DALC y los store procedure pueden DALC y los store procedure pueden hacer validaciones complejas de hacer validaciones complejas de negocio.negocio.
Existen dos aproximacionesExisten dos aproximacionesPOINT-IN-TIMEPOINT-IN-TIME
Validación continua.Validación continua.
ConclusionesConclusiones
Es útil desarrollar en capas, aunque Es útil desarrollar en capas, aunque al principio sea más trabajo.al principio sea más trabajo.Diseñar toma su tiempo, hágalo.Diseñar toma su tiempo, hágalo.Si usa BP, todo se facilita. Por Si usa BP, todo se facilita. Por ejemplo exponer servicios en una ejemplo exponer servicios en una arquitectura SOA.arquitectura SOA.Si Entidades, todo se facilita. Por Si Entidades, todo se facilita. Por ejemplo intercambiar mensajes en ejemplo intercambiar mensajes en una arquitectura SOA.una arquitectura SOA.XML es una tecnología madura, use XML es una tecnología madura, use las herramientas disponibles.las herramientas disponibles.
ReferenciasReferencias
Arquitectura de aplicaciones de .NET: Arquitectura de aplicaciones de .NET: Diseño de aplicaciones y serviciosDiseño de aplicaciones y servicios
http://www.microsoft.com/spanish/msdn/arquhttp://www.microsoft.com/spanish/msdn/arquitectura/das/guias/AppArchCh1.aspitectura/das/guias/AppArchCh1.asp
Designing Data Tier Components and Designing Data Tier Components and Passing Data Through TiersPassing Data Through Tiers
http://msdn.microsoft.com/library/default.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/BOAGag.asp?url=/library/en-us/dnbda/html/BOAGag.asp
.NET Data Access Architecture Guide.NET Data Access Architecture Guidehttp://msdn.microsoft.com/library/default.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daag.asp?url=/library/en-us/dnbda/html/daag.asp
3-tier architecture in C# By 3-tier architecture in C# By RahmanRahman MahmoodiMahmoodi httphttp://://www.codeproject.comwww.codeproject.com//csharpcsharp//three_tier_architecture.aspthree_tier_architecture.asp
© 2006 Microsoft Corporation. © 2006 Microsoft Corporation. Todos los derechos reservadosTodos los derechos reservados
Muchas gracias por su participaciónMuchas gracias por su participación
Desarrollador 5 EstrellasDesarrollador 5 EstrellasCaracterísticas:Características:
¿Qué es?¿Qué es?Un conjunto de herramientas que te permite Un conjunto de herramientas que te permite incrementar tus conocimientos y habilidades en la incrementar tus conocimientos y habilidades en la tecnología .NETtecnología .NET
¿En qué consiste?¿En qué consiste?Cursos GratuitosCursos GratuitosCapacitación en líneaCapacitación en líneaExámenes de evaluaciónExámenes de evaluaciónReconocimiento del mercadoReconocimiento del mercado
¿Para quién es?¿Para quién es?Desarrolladores profesionalesDesarrolladores profesionalesEstudiantes universitariosEstudiantes universitarios
¿Dónde comenzar?¿Dónde comenzar?www.microsoft.com/spanish/msdn/comunidad/dce/www.microsoft.com/spanish/msdn/comunidad/dce/
Suscripciones MSDNSuscripciones MSDN
Acceso a Productos Microsoft (limitadas o Acceso a Productos Microsoft (limitadas o perpetuas) y garantía tecnológica por 2 años.perpetuas) y garantía tecnológica por 2 años.
Downloads electrónicos de los productos el día Downloads electrónicos de los productos el día de su publicación.de su publicación.
Soporte técnico para Desarrolladores, Soporte técnico para Desarrolladores, garantizado por Microsoft, dentro de las 48 hs.garantizado por Microsoft, dentro de las 48 hs.
Acceso a información preferencial en el site Acceso a información preferencial en el site MSDN, invitación a eventos y seminarios, etc. MSDN, invitación a eventos y seminarios, etc.
Soporte para el uso de los recursos MSDN a Soporte para el uso de los recursos MSDN a través de Chat.través de Chat.
Línea exclusiva de ayuda para administrar la Línea exclusiva de ayuda para administrar la suscripción MSDN. suscripción MSDN.
top related