la plataforma.net. agenda.net framework y visual studio.net.net framework visual studio.net guías...
TRANSCRIPT
La plataforma .NET
<Nombre>
<e-mail>
<Empresa>
Agenda .NET Framework y Visual Studio .NET
.NET Framework Visual Studio .NET
Guías para desarrollar mejor: Patterns & Practices Arquitectura de Referencia en .NET
Opciones para la capa lógica de Datos Opciones para la capa lógica de Negocio Opciones para la capa lógica de Presentación Despliegue de las capas lógicas en niveles físicos
Interoperabilidad o Migración Recursos
Microsoft .NET
Arquitectura .NETRetos del desarrollo en Microsoft Integración de aplicaciones Múltiples lenguajes de programación Múltiples modelos de programación Complejidad del desarrollo y despliegue Seguridad no inherente
Preservar la inversión del desarrollador Elevar la productividad del desarrollador
Arquitectura .NET.NET Framework y Visual Studio .NET
Sistema OperativoSistema Operativo
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
XML, ADO .NET, Enterprise ServicesXML, ADO .NET, Enterprise Services
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# ……
Visu
al S
tud
io .N
ET
Visu
al S
tud
io .N
ET
.NET FrameworkCommon Language Runtime
Sistema OperativoSistema Operativo
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
XML, ADO .NET, Enterprise ServicesXML, ADO .NET, Enterprise Services
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# ……
Visu
al S
tud
io .N
ET
Visu
al S
tud
io .N
ET
.NET FrameworkCommon Language Runtime El CLR es el entorno donde se ejecutan todas
las aplicaciones .NET El CLR determina para las aplicaciones .NET:
Un conjunto de tipos de datos: CTS Un lenguaje intermedio: CIL (MSIL) Un empaquetado de código: Assembly
El código que ejecuta el CLR se llama código gestionado (managed code)
Common Language RuntimeProceso del código gestionado
Código Fuente
Compilación
En instalación o la primera vez que se llama a un método
Compiladorlenguaje
Assembly
Ejecución
Compilador JIT
Código Nativo
Código (IL)
Metadatos
Common Language RuntimeAnatomía de un assembly
Metadatos Tipos P y Q
app2.exe
Código IL Tipo P
Assembly B
Mod.netmodule
Manifesto
Módulo 2 M. 3
Código IL Tipo Q
Metadatos Tipo R
Código IL Tipo R Recurso
grafico.jpg
Assembly A
Metadatos para Tipos X, Y y Z
app1.dll
Código IL Tipo XManifesto
Módulo 1
Código IL Tipo Y
Código IL Tipo Z
Common Language RuntimeBeneficios Entorno de ejecución robusto Seguridad inherente Desarrollo simplificado Fácil gestión y despliegue de aplicaciones Preserva inversión de desarrollador
El CLR
.NET Framework
.NET Framework Class Library
Sistema OperativoSistema Operativo
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
XML, ADO .NET, Enterprise ServicesXML, ADO .NET, Enterprise Services
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# ……
Visu
al S
tud
io .N
ET
Visu
al S
tud
io .N
ET
.NET Framework Class LibraryModelo de programación unificado
Windows API
.NET Framework
Disponibilidad de API consistente en cualquier lenguaje y modelo de programación
ASP
Sin estado,Sin estado,Código embebido Código embebido en páginas HTMLen páginas HTML
MFC/ATL
Subclassing,Subclassing,Potencia,Potencia,
ExpresividadExpresividad
VB Forms
RAD,RAD,Composición,Composición,
DelegaciónDelegación
.NET Framework Class LibrarySystem namespace
SystemSystem
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalization
DiagnosticsDiagnostics
ConfigurationConfiguration
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
ThreadingThreading
TextText
ServiceProcessServiceProcess
SecuritySecurity
CommonCommon
OleDbOleDb
SQLTypesSQLTypes
SqlClientSqlClient
XPathXPath
XSLTXSLT
RuntimeRuntimeInteropServices
Remoting
Serialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServicesDescription
Discovery
Protocols
UIUIHtmlControls
WebControls
System.DrawingSystem.Drawing
ImagingImaging
Drawing2DDrawing2D
TextText
PrintingPrinting
System.Windows.FormsSystem.Windows.Forms
DesignDesign ComponentModelComponentModel
.NET Framework Class LibraryBeneficios Completa, Organizada, Extensible Para cualquier Arquitectura de Aplicación
Acceso a Datos ADO.NET XML
Lógica de Negocio Enterprise Services (COM+) Servicios Web XML .NET Remoting
Presentación Windows Forms Web Forms y Mobile Web Forms
.NET FrameworkLenguajes .NET
Sistema OperativoSistema Operativo
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
XML, ADO .NET, Enterprise ServicesXML, ADO .NET, Enterprise Services
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
WindowsWindowsFormsForms
Common Language Specification (CLS)Common Language Specification (CLS)
VBVB C++C++ C#C# J#J# ……
Visu
al S
tud
io .N
ET
Visu
al S
tud
io .N
ET
Lenguajes .NETCLS
COBOLCOBOL C++C++
CLRCLR
MicrosoftMicrosoftManaged Managed C++C++ExtensionsExtensions
FujitsuFujitsuCOBOLCOBOLExtensionsExtensions
CLS
Los lenguajes no tienen que exponer toda la funcionalidad definida por el CLR
.NET es neutral con respecto al lenguaje Microsoft suministra:
Visual C# .NET, Visual Basic .NET, Visual C++ .NET,
JScript, Visual J# .NET
Terceros suministran: COBOL, RPG, APL, Perl, Pascal, Smalltalk, Eiffel,
Fortran, Haskell, Mercury, Oberon, Oz, Python, Scheme, Standard ML, … hasta +26 lenguajes
Lenguajes .NETMúltiples lenguajes soportados
Lenguajes .NETSoporte multilenguaje
string s = "authors";SqlCommand cmd = new SqlCommand("select * from "+s,
sqlconn);cmd.ExecuteReader();
C#
Dim s as Strings = "authors"Dim cmd As New SqlCommand("select * from " & s,
sqlconn)cmd.ExecuteReader()
VB.NET
C++String *s = S"authors"; SqlCommand cmd = new SqlCommand(String::Concat(S"select * from ", s),
sqlconn); cmd.ExecuteReader();
Lenguajes .NETSoporte multilenguaje
J#String s = "authors";SqlCommand cmd = new SqlCommand("select * from "+s,
sqlconn);cmd.ExecuteReader();
String *s = S"authors"; SqlCommand cmd = new SqlCommand(String::Concat
(S"select * from ", s), sqlconn); cmd.ExecuteReader();
Perl
var s = "authors"var cmd = new SqlCommand("select * from " + s, sqlconn)cmd.ExecuteReader()
JScript
Lenguajes .NETSoporte multilenguaje
ENVIRONMENT DIVISION.CONFIGURATION SECTION.REPOSITORY. CLASS SqlCommand AS "System.Data.SqlClient.SqlCommand" CLASS SqlConnection AS "System.Data.SqlClient.SqlConnection".DATA DIVISION.WORKING-STORAGE SECTION.01 str PIC X(50).01 cmd-string PIC X(50).01 cmd OBJECT REFERENCE SqlCommand.01 sqlconn OBJECT REFERENCE SqlConnection.PROCEDURE DIVISION. *> Establish the SQL connection here somewhere.MOVE "authors" TO str.STRING "select * from " DELIMITED BY SIZE, str DELIMITED BY " " INTO cmd-string.INVOKE SqlCommand "NEW" USING BY VALUE cmd-string sqlconn RETURNING cmd.INVOKE cmd "ExecuteReader".
CobolCobol
Independencia de las aplicaciones del lenguaje de programación utilizado
Desarrollo de aplicaciones multi-lenguaje Preserva inversión del desarrollador Facilita adopción de .NET
Lenguajes .NETBeneficios
Multilenguaje
.NET FrameworkEstandarización CLI y C#
Common Language Infrastructure, funcionalidad e interfaces del CLR y la Base Class Library
Lenguaje de programación C#
CLI y C# cedidos a organismos de estandarización (ECMA, ISO, IEEE)
.NET Compact Framework
.NET Framework para dispositivos Diseñado para dispositivos inteligentes
Pocket PC y Pocket PC Phone Edition (v1.1) Smart Phone Windows CE Amplia disponibilidad planeada
Mismo modelo de desarrollo que .NET Fw. Mismo modelo de ejecución que .NET Fw. Misma herramienta de desarrollo VS .NET
Visual Studio .NETEntorno de Desarrollo Integrado
Sistema OperativoSistema Operativo
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
XML, ADO .NET, Enterprise ServicesXML, ADO .NET, Enterprise Services
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# ……
Visu
al S
tud
io .N
ET
Visu
al S
tud
io .N
ET
Visual Studio .NETProductividad Única herramienta de desarrollo para todo Plataforma completa para creación, pruebas e
integración de Servicios Web Plataforma RAD de alta productividad
Diseñadores visuales de Formularios Diseñadores visuales de Componentes Depuración extremo a extremo, a través de lenguajes Tecnología IntelliSense y Ayuda Dinámica
Extensible y Abierto
Visual Studio .NETPara todo el ciclo de vida
Modelado de Sistemas y Bases de Datos Visio for Enterprise Architects
Patrones de Arquitectura Enterprise Templates, Application Building Blocks
Gestión de Versiones del código Visual SourceSafe
Diseño, Codificación y Depuración Visual Studio: Designers, Editors, Debugger
Monitorización y Optimización Visual Studio Analyzer
Pruebas Application Center Test
Despliegue e Instalación Visual Studio: Setup Projects
Arquitectura .NETRetos del desarrollo
Integración de aplicaciones Servicios Web
Múltiples lenguajes de programación
Múltiples modelos de programación
Preservar la inversión del desarrollador
Elevar la productividad del desarrollador
.NET Framework Common Language Runtime .NET Framework Class Library Lenguajes .NET
.NET Framework Lenguajes .NET CLR: COM-Interop y P/Invoke
Visual Studio .NET
.NET Framework CLR: Assembly (componentes .NET)
Complejidad del desarrollo y despliegue
Seguridad no inherente .NET Framework CLR: Seguridad Acceso Código (CAS)
Patterns & PracticesProvenBased on field experience
AuthoritativeBest advice available
AccurateTechnically validated and tested
ActionableProvide the steps to success
RelevantAddress real world scenarios
“Proven practices for predictable results”
Patterns & PracticesGuías publicadasArquitecturas de ReferenciaReference Architectures)
Componentes de Aplicación(Application Blocks)
Prácticas de Ciclo de Vida(Lifecycle Practices)
Application Architecture for .NET
Microsoft Systems Architecture
Enterprise Data Center
Internet Data Center
.NET and J2EE Interoperability
WSI Base Profile and Security
.NET Line of Business Application
UNIX Migration
…
Exception Management App Block
Logging App Block
Configuration App Block
Data Access App Block
Updater App Block
User Process Interface App Block
Designing Data Tier Components and Passing Data Through Tiers
Building Secure ASP.NET Applications
Authoring ASP.NET Applications …
Team Development with Visual Studio.NET & Visual SourceSafe
Debugging Microsoft .NET Applications
Deploying .NET Applications
Operating .NET-Based Applications
Operations Guides (…)
Security Operations Guides (…)
Backup and Restore for MSA Operations
…
Patrones (Patterns)
Enterprise Solution Patterns using Microsoft .NET
Data Patterns
Integration Patterns …
Patterns & PracticesCobertura de las guías de desarrollo
Ciclo de Vida del software
Servicios
Recursos
Componentes de Interfaz de Usuario
Componentes de Proceso de IU
Procesos de Negocio
Componentesde Negocio
Entidadesde Negocio
Componentes deAcceso a Recursos
Ad
min
istr
aci
ón
Op
erat
iva
Co
mu
nic
aci
on
es
Agentes Servicios
Agentes Servicios
Interfaces Servicios
Agentes Servicios
Interfaces Servicios
Seg
uri
dad
Arquitectura de Referencia en .NETDiseño de aplicaciones y servicios
Arquitectura de Referencia en .NETDiseño de aplicaciones y servicios
Proceso de Interfaz de Usuario (UIP)Proceso de Interfaz de Usuario (UIP)
Cliente WebCliente WebInterop. DNAInterop. DNA
ExcepcionesExcepciones
ConfiguraciónConfiguración
AutenticaciónAutenticación
AutorizaciónAutorización
MonitorizaciónMonitorización
Trazas (logs)Trazas (logs)
Acceso a DatosAcceso a Datos
Agregación y Formato de Datos
Agregación y Formato de Datos
Desarrollo en equipo
Desarrollo en equipo DespliegueDespliegue Depuración
en producciónDepuración
en producción OptimizaciónOptimización OperacionesOperaciones
Com. SegurasCom. Seguras
Auto-actualizaciónAuto-actualización
Paso de Datosentre CapasPaso de Datosentre Capas
CachéDatosCachéDatos
Invocación Asincrónicade Servicios
Invocación Asincrónicade Servicios
Fachadas deServicios
paraaplicacionesheredadas
Fachadas deServicios
paraaplicacionesheredadas
Cliente WindowsSmart Client
Cliente WindowsSmart Client
Online en MSDN y TechNet:http://www.microsoft.com/resources/practices
Guías escritas disponibles en:http://shop.microsoft.com/practices
Patterns & PracticesDisponibilidad
Arquitectura de Referencia .NETArquitectura de Aplicación en capas lógicas
Servicios
Datos
Componentes de Interfaz de Usuario
Componentes de Proceso de IU
Procesos de Negocio
Componentesde Negocio
Entidadesde Negocio
Componentes deAcceso a Datos
Ciclo de Vida del software
Ad
min
istr
aci
ón
Op
erat
iva
Co
mu
nic
aci
on
es
Agentes Servicios
Agentes Servicios
Interfaces Servicios
Agentes Servicios
Interfaces Servicios
Seg
uri
dad
Arquitectura OrientadaA Servicios
Arquitectura Tradicional3 capas lógicas
CAPA DE PRESENTACIÓN
CAPA DE NEGOCIO
CAPA DE DATOS
Arquitectura de Aplicación .NETCapas en aplicaciones y servicios
1. Cada servicio gestiona sus propios datos2. Comunicación débilmente acoplada3. Cada servicio tiene su arquitectura en capas4. Las aplicaciones son servicios con IU
Pedidos
Transporte
Autorización Crédito
12
3
4
Arquitectura de Referencia .NETCapa de Datos
ServiciosFuentes de Datos (Recursos)
Capa de Datos
Capa de Presentación
Capa de Negocio
Componentes de Acceso a Datos (Recursos)
Ciclo de Vida del software
Adm
inis
trac
ión
Ope
rativ
a
Com
uni
caci
ones
Seg
urid
ad
Usuarios
Capa de DatosXML
Funcionalidad tradicional Acceso en memoria: DOM niveles 1 y 2 Acceso secuencial: XmlReader Búsquedas: XPath, con posibilidad de
compilación Definición y validación de esquemas XSD Transformaciones XSLT
Funcionalidad en .NET: Serialización XML Controlable con atributos XmlSerializer: Instancias de objetos XML XSD.EXE: Clases XSD
XMLSerialización XML
XSDXSDXSDXSDXMLXMLXMLXML
C#, VB, JSC#, VB, JSC#, VB, JSC#, VB, JS
XSD.EXEXSD.EXE
XSD.EXEXSD.EXE
ValidatorValidator
XmlSerializerXmlSerializer
Serialización XML
Capa de DatosADO.NET (I)
Soporte de cualquier fuente de datos a través de diferentes proveedores de acceso a datos: Generales: .NET OLE DB y .NET ODBC Específicos: .NET SQL Client, .NET Oracle Client
Modelo conectado de acceso a datos IDbConnection IDbCommand: sentencias SQL (parametrizables
con IDbParameter), procedimientos almacenados
IDataReader: para recuperar resultados
Acceso conectado con ADO.NET
Capa de DatosADO.NET (II) Modelo Desconectado de acceso a datos
DataSet Modelo de datos en memoria Desconectado de la base de datos Mantiene memoria de los cambios Es serializable en XML
IDataAdapter Rellenan un Dataset desde la fuente de datos Concilian los cambios de un Dataset hacia la
fuente de datos
Capa de DatosADO.NET: Modelo desconectado
Capa NegocioCapa Negocio
CapaCapaDatosDatos
Capa PresentaciónCapa Presentación
Web formsWeb forms
Negocio a NegocioNegocio a Negocio
DataSetDataSetDataSetDataSet
InternetInternetIntranetIntranet
DataAdapterDataAdapter
DataAdapterDataAdapterXmlXml
Aplicación.ExeAplicación.Exe
IEIE
DataSetDataSet
Windows formsWindows forms
Acceso desconectado con ADO.NET
Arquitectura de Referencia .NETCapa de Negocio
Servicios
Capa de Datos
Capa de Presentación
Capa de Negocio
Procesos de Negocio
Componentesde Negocio
Entidadesde Negocio
Ciclo de Vida del software
Adm
inis
trac
ión
Ope
rativ
a
Com
uni
caci
ones Agentes Servicios
Agentes Servicios
Interfaces Servicios
Agentes Servicios
Interfaces Servicios
Seg
urid
ad
Recursos
Usuarios
Capa de NegocioConsumidores de componentes de Negocio
Capa de Presentación
Interfaz de Servicios
Componentede Negocio
Componentes de Acceso a Datos
Componentede Negocio
Proceso de Negocio
Llamadas desde otros Agentes de Servicios
Llamadas a otros ServiciosDatos
Llamadas a otros Servicios
Agentes de Servicios
Capa de NegocioIntegrando servicios en un flujo de proceso
Interfaz de Servicio
Capa de Presentación
Agente de Servicio
Componentes de Acceso a Datos
Agente de Servicio
Interfaz de Servicio
Interfaz de Servicio
Componentesde Negocio
Procesode Negocio
Servicios
Esquemas
Acuerdos
Lenguaje deprogramacion
Modelo deobjetos
Servidor deaplicaciones
Base de datos
Sistema operativo
Base dedatos
Sistemaoperativo
Lenguaje deprogramacion
Modelo deobjetos
Servidor deaplicaciones
Aplicación A Aplicación B
Ejemplo de una solucion fuertemente acopladaArquitectura Orientada a Servicio (SOA)
Capa de NegocioServicios Web: reduciendo dependencias
SOAPSOAPSOAPSOAP Los consumidores de Servicios Web Los consumidores de Servicios Web
pueden enviar y recibir mensajes XMLpueden enviar y recibir mensajes XML
WSDLWSDLWeb Services Web Services
Description LanguageDescription Language
WSDLWSDLWeb Services Web Services
Description LanguageDescription Language
Los Servicios Web se definen en términos Los Servicios Web se definen en términos de formatos y ordenación de mensajesde formatos y ordenación de mensajes
Construido empleando protocolos Construido empleando protocolos abiertos de Internetabiertos de Internet XML & HTTPXML & HTTP
Componente de aplicación programable, Componente de aplicación programable, accesible a través de protocolos estándar de accesible a través de protocolos estándar de InternetInternet
ProtocolosProtocolos InternetInternet Abiertos Abiertos
ServicioServicioWebWeb
UDDIUDDIUniversal Description, Universal Description,
Discovery, and IntegrationDiscovery, and Integration
UDDIUDDIUniversal Description, Universal Description,
Discovery, and IntegrationDiscovery, and Integration
Suministra un Directorio de Servicios en Suministra un Directorio de Servicios en La RedLa Red
Capa de NegocioASP.NET Web Services (I)
Capa de NegocioASP.NET Web Services (II)
Servicios publicados
Registro UDDI
AplicaciónCliente
Descubrimientomediante
UDDI
Servicio 1Servicio 1
tModel
Servicio Web
Invocación / Acceso mediante SOAP
Transporte mediante HTTP / SMTP / …MensajeSOAP
Publicaciónmediante
UDDI
Descripción mediante WSDLXMLSchemaWSDL
Capa de NegocioASP.NET Web Services (III)
Datos
Esquemas
Servicios
Invocaciones
Framework
Objetos
Clases
Métodos
Llamadas
Web
XML
XSD
WSDL
SOAP
Conceptos de Aplicación
.NET Framework facilitaUn mapeo bi-direccional
Capa de NegocioASP.NET Web Services (IV)
Sencillo modelo de programación Aplicación Web especial (.asmx), sin interfaz de usuario
En el servidor: ASP.NET permite exponer clases .NET como servicios web Atributos [WebService], [WebMethod] Traduce peticiones SOAP Genera automáticamente WSDL y páginas de prueba
En el cliente: .NET genera un proxy para comunicar con el servidor Integrado con Visual Studio
La serialización XML hace el resto
Servicio Web con ASP.NET Web Services
Capa de NegocioASP.NET Web Services
ASP.NET Web Services de .NET Fx 1.0/1.1 Servicios Web Básicos
basado en estándares abiertos Mensajería SOAP Transporte HTTP
Hospedados en ASP.NET / IIS Soporte de servicios Web “interoperables”
WS-I Basic Profile 1.0
Capa de Negocio.NET Remoting
Acceso remoto a objetos 3 modelos de acceso remoto:
Objetos activados por el cliente (similar a DCOM) Objetos activados por el servidor
Single-Call Singleton
Hospedaje de objetos de acceso remoto: ASP.NET Aplicación dedicada .EXE
Capa de NegocioEnterprise Services y System.Messaging
Enterprise Services Modelo de programación simplificado para el uso de
servicios COM+ Transacciones heterogéneas Otros servicios empresariales:
Interoperabilidad XA Seguridad basada en roles Pooling de objetos Componentes encolados …
System.Messaging Modelo de programación para el uso de colas MSMQ Mensajería fiable
Capa de NegocioTecnologías distribuidas en .NET ASP.NET Web Services (ASMX)
Orientación a mensajes, SOA, interoperabilidad .NET Remoting
Orientado a objetos, amplia visión, extensible Enterprise Services
Orientado a objetos, componentes, transacciones
System.Messaging Orientación a mensajes, fiable, colas¿Cual usar?
Seguridad Fiabilidad Transaccional
Mensajería
XML
Meta
dato
s
TransportesTransportes
AplicacionesAplicaciones
Capa de NegocioArquitectura de Servicios Web y Microsoft
SOAPXSD
SOAPXSD
HTTPHTTP
UDDIWSDLUDDIWSDL
WS-SecurityWS-Security
WS-RoutingWS-Referral
DIME
WS-RoutingWS-Referral
DIME
TCPin-process
TCPin-process
WS-AddressingWS-AttachmentsWS-Addressing
WS-Attachments
WS-PolicyWS-Policy WS-TrustWS-SecureConversation
WS-TrustWS-SecureConversation
WS-ReliableMessagingWS-ReliableMessaging
WS-DiscoveryWS-MetadataExchange
WS-DiscoveryWS-MetadataExchange WS-BusinessActivity
WS-AtomicTransactionWS-BusinessActivity
WS-AtomicTransaction
MTOMWS-Eventing
MTOMWS-Eventing
WS-FederationWS-Federation
WS-InspectionWS-Inspection
WS-CoordinationWS-Transaction
WS-CoordinationWS-Transaction
ASP.NET Web Services.NET FX 1.0 / 1.1
ASP.NET Web Services.NET FX 1.0 / 1.1
WSE 1.0WSE 1.0 WSE 2.0WSE 2.0
“Indigo”(con “Longhorn”)
“Indigo”(con “Longhorn”)
IndigoIndigo
ASMX + WSEASMX + WSE .NET Remoting.NET Remoting Enterprise ServicesEnterprise Services
Simple ConfigSimple ConfigInteroperableInteroperable
Service-OrientedService-Oriented
AttributesAttributesTransactionsTransactionsComponentsComponents
Broad VisionBroad VisionExtensibilityExtensibility
Object-OrientedObject-Oriented
Indigo será el superconjunto de las capacidades de Indigo será el superconjunto de las capacidades de las tecnologías de comunicaciones actualeslas tecnologías de comunicaciones actuales
System.MessagingSystem.Messaging
QueuingQueuingReliable MsgReliable MsgDurable MsgDurable Msg
Capa de Negocio“Indigo” y la unificación
Capa de NegocioTecnologías distribuidas en .NET ¿Cuál usar? Guía Prescriptiva (1)
Construir servicios con ASMX WSE si es necesario (ej. seguridad)
Usar objetos remotos dentro de servicios Enterprise Services si es necesario (ej. transacciones) .NET Remoting si no es necesario servicios
empresariales
Usar System.Messaging si es necesaria fiabilidad
Capa de NegocioTecnologías distribuidas en .NET ¿Cómo usar? Guía Prescriptiva (2) – Migración a Indigo
El código existente funcionará sin cambios, por interoperabilidad con tecnologías anteriores
Si se quiere migrar el código: Evitar o abstraer el uso de la extensibilidad de
bajo nivel de ASMX (ej. HTTP Context) Evitar o abstraer el uso de la extensibilidad de
bajo nivel de .NET Remoting (ej. Sinks y Channels)
Evitar el paso de referencias de objetos dentro Enterprise Services
No usar APIs de COM+ – usar Enterprise Services No usar APIs de MSMQ – usar System.Messaging
Arquitectura de Referencia .NETCapa de Presentación
Capa de Datos
Capa de Presentación
Componentes de Interfaz de Usuario
Componentes de Proceso de Interfaz de Usuario
Capa de Negocio
Ciclo de Vida del software
Adm
inis
trac
ión
Ope
rativ
a
Com
uni
caci
ones
Seg
urid
ad
ServiciosRecursos
Usuarios
Capa de PresentaciónASP.NET Web Forms: modelo de desarrollo
Modelo de programación similar a WinForms RAD Visual: Formularios, Controles servidor,
Eventos El código “está detrás”
Separación entre lógica y presentación
<tags><tags>
Form1.asp
códigocódigocódigocódigo
<tags><tags>
Form1.aspx
códigocódigo
Form1.aspx.vbForm1.aspx.vb
ASPASP ASP .NETASP .NET
Capa de PresentaciónASP.NET: modelo de ejecución
FicheroFicheroASPXASPX
óóASMXASMX
PeticiónPetición
MotorMotor
ASP.NETASP.NETParsingParsing
Clase de Clase de página página
generadagenerada
RespuestaRespuesta
PeticiónPetición
InstanciarInstanciar
RespuestaRespuesta
ClaseClaseCode-Code-behindbehind
Clase Clase compiladacompilada
CompilarCompilar
GenerarGenerar
Capa de PresentaciónASP.NET: Sesión y Caché Sesión
No requiere obligatoriamente cookies Soporta granjas de servidores Más opciones para guardar estado:
Servicio Windows en otro equipo (alta disponibilidad)
SQL Server (alta disponibilidad + tolerancia a fallos) Caché
a nivel de página Caché fragmentado Modos cliente y servidor Dependencias de caché (tiempo, fichero, consulta SQL) Cache API
Aplicación Web conASP.NET Web Forms
Capa de PresentaciónWindows Forms
Combinación de productividad formularios VB con potencia MFC C++
Herencia visual de controles y formularios Soporte gráfico mejorado GDI+ Fácil enlazado de datos con ADO.NET Fácil consumo de Servicios Web XML Controles Windows hospedados en IE Impresión de formularios, ayuda, …
Cliente Rico
Cliente Ligero
“Smart Client”
Experienciade usuario rica
Desarrolloproductivo
Infierno delas DLLs
Instalacióncostosa
Instalaciónmínima/nula
Interactivo
Dependenciade la red
Facilidad dedespliegue
Experiencia de usuario pobre
Versionadocentralizado
Dificultad dedespliegue
Desarrollocomplejo
Capa de PresentaciónCliente Rico o Cliente Ligero: “Smart Client”
Aplicación Windows “Smart Client” con Windows Forms
Capa de Presentación“Smart Client”: atributos clave Utiliza la potencia del procesador local
Experiencia de usuario rica, interactiva
Consume servicios Servicios Web y SOA
Puede funcionar de forma desconectada Exige incorpora lógica de negocio y acceso a
datos en el cliente
Se despliega y actualiza de forma centralizada
Opción 1: File Copy (XCOPY, FTP) Instalación sin ejecutar nada en el cliente
Opción 2: paquetes Windows® Installer Incluyendo o no .NET Framework Redistributable Ejecutar Setup en el cliente o desplegar con
Systems Management Server o IntelliMirror®
Opción 3: Despliegue “sin tocar” con Internet Explorer (“No-Touch” Deployment) Descarga de Aplicaciones Windows de Intranet Descarga de Controles Windows en páginas Web El código se mantiene y se versiona en un único
punto: servidor de Intranet
Capa de PresentaciónDespliegue de aplicaciones .NET
Capa de PresentaciónDespliegue sin tocar (No-Touch Deployment) Sin instalación ni desinstalación Aplicaciones .NET son ligeras
código gestionado IL < código nativo No se instala nada en la carpeta System No se escribe nada en el Windows Registry Requerimientos del cliente
Windows 98/Windows NT® 4.0 o superior Internet Explorer 5.5 o superior .NET Framework Redistributable (~20 MB)
El futuro del despliegue de aplicaciones (“Whidbey”) Click-Once = No-Touch Deployment + Updater App. Block
Web ServerWeb Server
Web Web ServerServer
Assembly Assembly CacheCache
HTTPHTTP
ClientClient
Windows AppWindows App
Form1Form1
Form2Form2
Capa de PresentaciónDespliegue de aplicaciones Windows
Web ServerWeb Server
Web Web ServerServer
Assembly Assembly CacheCache
HTTPHTTP
Chart.htmlChart.html
ChartEngine.DLLChartEngine.DLLCustomizer.DLLCustomizer.DLL
ClientClient
HTTPHTTP
Internet Explorer 5.5Internet Explorer 5.5
Charting.DLLCharting.DLL
Capa de PresentaciónDespliegue de controles Windows
Aplicación Windows“Smart Client” yel despliegue sin tocar
Capa de PresentaciónEscenarios de Aplicaciones Móviles
Experiencia Web móvil
Ejemplo: titulares de noticias
Muchos tipos de dispositivos
Entrada de datos muy limitada
Uso breve e intermintente
Dispositivo Inteligente
Ejemplo: trabajo de campo
Funcionalidad online y offline
Integración de dispositivos
Interfaz de usuario enriquecida
Todo el potencial del PC
Ejemplo: gestión de conocimiento
Pantalla a tamaño completo
Aplicaciones compatibles PC
Anotación y edición enriquecidas
Operativa “off-line” Ejecución Local Datos Locales
IU enriquecido Multimedia IU elaborado
Integración con elementos dispositivo Lectores tarjetas Lectores código barras Receptores GPS Telefonía / mensajería
Presentación adaptable Soporte dinámico de
múltiples navegadores de dispositivos
Soporte navegador en dispositivos bajo coste
Código base único Mantenimiento
simplificado Extensión natural de las
apl. Web existentes Ejecución en servidor
Sin instalación en cliente Sin ejecución en cliente
Ventajas de apl. Web móvilVentajas de apl. Web móvil Ventajas de apl. cliente inteligenteVentajas de apl. cliente inteligente
Capa de PresentaciónVentajas arquitectónicas de apl. móviles
Soporte multi-dispositivo complejoSoporte multi-dispositivo complejo• Diferentes dimensionesDiferentes dimensiones
• Diferentes característicasDiferentes características
• Diferentes estándares WebDiferentes estándares Web
Código Código LocalLocal
Página Web Página Web MóvilMóvil
Sistema Operativo del DispositivoSistema Operativo del Dispositivo
Navegador Web Navegador Web del Dispositivodel Dispositivo
Poca reutilizaciónPoca reutilización
• Diferentes plataformasDiferentes plataformas
• Diferentes APIsDiferentes APIs
• Diferentes lenguajesDiferentes lenguajes
Capa de PresentaciónRetos tradicionales de aplicaciones móviles
Código Código LocalLocal
Página Web Página Web MóvilMóvil
Sistema Operativo del DispositivoSistema Operativo del Dispositivo
Navegador Web Navegador Web del Dispositivodel Dispositivo
Controles Web Controles Web Móviles ASP.NETMóviles ASP.NET
.NET Compact .NET Compact FrameworkFramework
Extensiones para Extensiones para Dispositivos Dispositivos InteligentesInteligentes
Capa de PresentaciónSoluciones Microsoft para apl. móviles
Aplicaciones para dispositivosAplicación Web para dispositivos con ASP.NET Mobile Web Forms
Aplicación Windows “Smart Client” para dispositivos con Windows Forms de .NET Compact Framework
Capa de PresentaciónAmplio abanico de posibilidades Cliente ligero, basado en Web
Navegador estándar: ASP.NET Web Forms Navegador de dispositivo: ASP.NET Mobile Web Forms
Cliente inteligente (“smart client”) basado en Windows PC: Windows Forms de .NET Framework TabletPC: Windows Forms de .NET Framework +
controles especiales de manejo de tinta y de lápiz Pocket PC, Pocket PC PE, Smartphone, Windows CE:
Windows Forms de .NET Compact Framework Cliente inteligente (“smart client”) basado en Office
Word y Excel: Visual Studio Tools for Office (VSTO) InfoPath
Arquitectura de Referencia .NETArquitectura de Aplicación en capas lógicas
Servicios
Recursos
Componentes de Interfaz de Usuario
Componentes de Proceso de IU
Procesos de Negocio
Componentesde Negocio
Entidadesde Negocio
Componentes deAcceso a Recursos
Ciclo de Vida del software
Ad
min
istr
aci
ón
Op
erat
iva
Co
mu
nic
aci
on
es
Agentes Servicios
Agentes Servicios
Interfaces Servicios
Agentes Servicios
Interfaces Servicios
Seg
uri
dad
Arquitectura OrientadaA Servicios
Arquitectura de Referencia .NETEntornos de Despliegue Físico
Infrastructure VLAN Data & Management VLAN
DMZ
VPN
Entornos de Despliegue FísicoTecnologías de Clustering Microsoft Network Load Balancing (NLB)
Balancea tráfico TCP/IP entre múltiples servidores
Hasta 32 nodos Proporciona alta disponibilidad y escalabilidad Con Windows Server 2003 (todas las ediciones)
Cluster Service (MSCS) Tolerancia a fallos (failover) Hasta 8 nodos Proporciona alta disponibilidad Con Windows Server 2003 (sólo las ediciones
Enterprise, DataCenter y 64-bit)
Interoperabilidad o MigraciónCoexistencia de DNA y .NET Aplicaciones DNA y aplicaciones .NET coexisten
en la misma máquina (tanto Web como Windows) Componentes COM y Componentes .NET
coexisten en la misma máquina Componentes COM y Componentes .NET pueden
usar los servicios de COM+ en la misma máquina ASP y ASP.NET pueden ejecutarse en el IIS de la
misma máquina Páginas .asp son procesadas por ASP Páginas .aspx y .asmx son procesadas por ASP.NET ASP y ASP.NET no comparten Session ni Application (aunque es
posible hacerlo)
Interoperabilidad o MigraciónInteroperabilidad entre DNA y .NET
COM Interop: interoperabilidad COM bidireccional Utilizar componentes COM desde .NET
TlbImp.exe: genera un proxy .NET de un componente COM (early binding) AxImp.exe: genera proxy .NET de un control ActiveX System.Reflection (late binding)
Utilizar componentes .NET desde COM TlbExp.exe: genera una librería de tipos de un componente .NET (early binding) RegAsm.exe: registra un componente .NET en el registro del sistema (late binding)
P/Invoke: interoperabilidad código nativo Llamadas a puntos de
entrada estáticas en
DLLs de código nativo
desde código gestionado
Class EjemploPInvoke{ // Declarar la función externa no gestionada [sysimport(dll=“user32.dll”)] public static extern int MessageBoxA (int modal, string mensaje, string titulo, int opciones); public static void Main (string[] args) { // Invocar a la función externa no gestionada MessageA(0, “P/Invoke funciona!”, “Ejemplo P/Invoke”, 0); }}
Interoperabilidad o MigraciónActualización de DNA a .NET (I) Visual C++
Visual C++ .NET: MFC, ATL y extensiones gestionadas .NET Visual Basic
Visual Basic .NET: lenguaje orientado a objetos puro Asistente de migración automática VB a VB.NET [Visual Studio .NET]
ASP ASP.NET: Compatible casi al 100% con ASP JScript no sufre cambios, VBScript se reemplaza por Visual Basic.NET Se soporta Late Binding con COM (Server.CreateObject / CreateObject) Asistente de migración automática ASP a ASP.NET [http://www.asp.net]
ADO ADO.NET: tecnología de acceso a datos en .NET ADO está soportado vía COM Interop DAO y RDO también están soportados vía COM Interop Data Binding a controles sólo soportado con ADO (no con DAO ni RDO)
Interoperabilidad o MigraciónActualización de DNA a .NET (II) Gracias a la coexistencia y la interoperabilidad
entre DNA y .NET Es posible construir nueva funcionalidad en .NET Es posible actualizar de DNA a .NET gradualmente
¿Cómo migro de DNA a .NET? una estrategia: Utilizar .NET para desarrollo de nueva funcionalidad 1º migración de código: herramientas automáticas de
migración sintáctica que hace gran parte del trabajo 2º migración de componentes: manualmente, usar
componentes .NET en lugar de componentes COM 3º migración de conceptos: refactorización, arquitectura
Interoperabilidad o MigraciónJava y Visual J++
Interoperabilidad con Java Servicios Web (WS-I) Brokers de mensajes (tipo BizTalk Server) Puentes de tecnología (Bridges: Janeva, Ja.Net, …)
Migración de Visual J++ y Java a .NET Visual J# .NET
Sintaxis Java en .NET Visual J# .NET 2003: soporte JDK 1.1.4 Visual J# .NET 2005: soporte JDK 1.3 (con “Whidbey”)
JLCA Conversión de Java y JDK a Visual C# y .NET Framework JLCA 2.0: conversión JDK 1.1.4 JLCA 3.0: conversión JDK 1.3 (con “Whidbey”)
Referencias Guías de Arquitectura “Patterns & Practices”
http://www.microsoft.com/resources/practices Desarrollo Web “Server Side”
http://www.asp.net Desarrollo Windows “Smart Client”
http://www.windowsforms.net Servicios Web de Microsoft
http://www.microsoft.com/webservices MSDN Online, “El Recurso” del desarrollador
http://www.microsoft.com/Spanish/msdn/spain http://msdn.microsoft.com
Comunidad de GotDotNet http://www.gotdotnet.com