La plataforma.NET Aurelio Porras [email protected] [email protected] División de...
-
Upload
feliciano-pinta -
Category
Documents
-
view
14 -
download
2
Transcript of La plataforma.NET Aurelio Porras [email protected] [email protected] División de...
La plataforma .NETLa plataforma .NET
Aurelio Porras Aurelio Porras [email protected]@microsoft.com
División de Desarrolladores y PlataformaDivisión de Desarrolladores y PlataformaMicrosoft IbéricaMicrosoft Ibérica
AgendaAgenda.NET Framework y Visual Studio .NET.NET Framework y Visual Studio .NET
.NET Framework.NET Framework
Visual Studio .NETVisual Studio .NET
Guías para desarrollar mejor: Patterns & Guías para desarrollar mejor: Patterns & PracticesPractices
Arquitectura de Referencia en .NETArquitectura de Referencia en .NETOpciones para la capa lógica de DatosOpciones para la capa lógica de Datos
Opciones para la capa lógica de NegocioOpciones para la capa lógica de Negocio
Opciones para la capa lógica de PresentaciónOpciones para la capa lógica de Presentación
Despliegue de las capas lógicas en niveles físicosDespliegue de las capas lógicas en niveles físicos
Interoperabilidad o MigraciónInteroperabilidad o Migración
Mejores prácticas en el Ciclo de Vida softwareMejores prácticas en el Ciclo de Vida software
RecursosRecursos
Microsoft .NETMicrosoft .NET
Arquitectura .NETArquitectura .NETRetos del desarrollo en MicrosoftRetos del desarrollo en Microsoft
Integración de aplicacionesIntegración de aplicaciones
Múltiples lenguajes de programaciónMúltiples lenguajes de programación
Múltiples modelos de programaciónMúltiples modelos de programación
Complejidad del desarrollo y despliegueComplejidad del desarrollo y despliegue
Seguridad no inherenteSeguridad no inherente
Preservar la inversión del desarrolladorPreservar la inversión del desarrollador
Elevar la productividad del Elevar la productividad del desarrolladordesarrollador
Arquitectura .NETArquitectura .NET.NET Framework y Visual Studio .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
Mobile Web Forms (MIT)Mobile Web Forms (MIT)
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.NET FrameworkCommon Language RuntimeCommon 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
Mobile Web Forms (MIT)Mobile Web Forms (MIT)
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.NET FrameworkCommon Language RuntimeCommon Language Runtime
El CLR es el entorno donde se ejecutan El CLR es el entorno donde se ejecutan todas las aplicaciones .NETtodas las aplicaciones .NET
El CLR determina para las El CLR determina para las aplicaciones .NET:aplicaciones .NET:
Un conjunto de tipos de datos: Un conjunto de tipos de datos: CTSCTS
Un lenguaje intermedio: Un lenguaje intermedio: CILCIL
Un empaquetado de código: Un empaquetado de código: AssemblyAssembly
El código que ejecuta el CLR se llama El código que ejecuta el CLR se llama código gestionadocódigo gestionado ( (managed codemanaged code))
Common Language RuntimeCommon Language RuntimeProceso del código gestionadoProceso 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 RuntimeCommon Language RuntimeAnatomía de un assemblyAnatomí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 RuntimeCommon Language RuntimeBeneficiosBeneficios
Entorno de ejecución robustoEntorno de ejecución robusto
Seguridad inherenteSeguridad inherente
Desarrollo simplificadoDesarrollo simplificado
Fácil gestión y despliegue de Fácil gestión y despliegue de aplicacionesaplicaciones
Preserva inversión de desarrolladorPreserva inversión de desarrollador
El CLREl CLR
.NET Framework.NET Framework
.NET Framework Class Library.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
Mobile Web Forms (MIT)Mobile Web Forms (MIT)
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 Library.NET Framework Class LibraryModelo de programación unificadoModelo 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 Library.NET Framework Class LibrarySystem namespaceSystem 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 Library.NET Framework Class LibraryBeneficiosBeneficios
Completa, Organizada, ExtensibleCompleta, Organizada, ExtensiblePara cualquier Arquitectura de AplicaciónPara cualquier Arquitectura de Aplicación
Acceso a DatosAcceso a DatosADO.NETADO.NETXMLXML
Lógica de NegocioLógica de NegocioEnterprise Services (COM+)Enterprise Services (COM+)Servicios Web XMLServicios Web XML.NET Remoting.NET Remoting
PresentaciónPresentaciónWindows FormsWindows FormsWeb Forms y Mobile Web FormsWeb Forms y Mobile Web Forms
.NET Framework.NET FrameworkLenguajes .NETLenguajes .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
Mobile Web Forms (MIT)Mobile Web Forms (MIT)
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 .NETLenguajes .NETCLSCLS
COBOLCOBOL C++C++
CLRCLR
MicrosoftMicrosoftManaged Managed C++C++ExtensionsExtensions
FujitsuFujitsuCOBOLCOBOLExtensionsExtensions
CLS
Los lenguajes no tienen que exponer toda la Los lenguajes no tienen que exponer toda la funcionalidad definida por la CLRfuncionalidad definida por la CLR
.NET es .NET es neutralneutral con respecto al lenguaje con respecto al lenguaje
Microsoft suministra: Microsoft suministra: Visual C# .NET, Visual Basic .NET, Visual C+Visual C# .NET, Visual Basic .NET, Visual C++ .NET, + .NET,
JScript, Visual J# .NETJScript, Visual J# .NET
Terceros suministran:Terceros suministran:COBOL, RPG, APL, Perl, Pascal, Smalltalk, Eiffel, COBOL, RPG, APL, Perl, Pascal, Smalltalk, Eiffel, Fortran, Haskell, Mercury, Oberon, Oz, Python, Fortran, Haskell, Mercury, Oberon, Oz, Python, Scheme, Standard ML, … hasta Scheme, Standard ML, … hasta +26 lenguajes+26 lenguajes
Lenguajes .NETLenguajes .NETMúltiples lenguajes soportadosMúltiples lenguajes soportados
Lenguajes .NETLenguajes .NETSoporte multilenguajeSoporte 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 .NETLenguajes .NETSoporte multilenguajeSoporte 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 .NETLenguajes .NETSoporte multilenguajeSoporte 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 Independencia de las aplicaciones del lenguaje de programación utilizadolenguaje de programación utilizado
Desarrollo de aplicaciones multi-Desarrollo de aplicaciones multi-lenguajelenguaje
Preserva inversión del desarrolladorPreserva inversión del desarrollador
Facilita adopción de .NETFacilita adopción de .NET
Lenguajes .NETLenguajes .NETBeneficiosBeneficios
MultilenguajeMultilenguaje
.NET Framework.NET FrameworkEstandarizaciónEstandarización
CLI y C# CLI y C# Common Language Infrastructure, Common Language Infrastructure, funcionalidad e interfaces del CLR y la Base funcionalidad e interfaces del CLR y la Base Class LibraryClass Library
Lenguaje de programación C#Lenguaje de programación C#
CLI y C# cedidos a organismos de CLI y C# cedidos a organismos de estandarización (ECMA, ISO, IEEE)estandarización (ECMA, ISO, IEEE)
.NET Compact Framework.NET Compact Framework
.NET Framework para dispositivos.NET Framework para dispositivos
Diseñado para dispositivos inteligentesDiseñado para dispositivos inteligentesPocket PC y Pocket PC Phone Edition (v1.1)Pocket PC y Pocket PC Phone Edition (v1.1)
Smart PhoneSmart Phone
Windows CEWindows CE
Amplia disponibilidad planeadaAmplia disponibilidad planeada
Mismo modelo de desarrollo que .NET Mismo modelo de desarrollo que .NET FrameworkFramework
Misma herramienta de desarrollo Visual Misma herramienta de desarrollo Visual Studio .NETStudio .NET
Visual Studio .NETVisual Studio .NETEntorno de Desarrollo IntegradoEntorno 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
Mobile Web Forms (MIT)Mobile Web Forms (MIT)
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 .NETVisual Studio .NETProductividadProductividad
ÚnicaÚnica herramienta de desarrollo para todo herramienta de desarrollo para todo
Plataforma Plataforma completacompleta para creación, pruebas e para creación, pruebas e integración de Servicios Webintegración de Servicios Web
Plataforma RAD de alta Plataforma RAD de alta productividadproductividadDiseñadores visuales de FormulariosDiseñadores visuales de Formularios
Diseñadores visuales de ComponentesDiseñadores visuales de Componentes
Depuración extremo a extremo, a través de Depuración extremo a extremo, a través de lenguajeslenguajes
Tecnología Tecnología IntelliSense IntelliSense y Ayuda Dinámicay Ayuda Dinámica
Extensible y AbiertoExtensible y Abierto
Visual Studio .NETVisual Studio .NETPara todo el ciclo de vidaPara todo el ciclo de vida
Modelado de Sistemas y Bases de DatosModelado de Sistemas y Bases de DatosVisio for Enterprise ArchitectsVisio for Enterprise Architects
Patrones de ArquitecturaPatrones de ArquitecturaEnterprise Templates, Application Building BlocksEnterprise Templates, Application Building Blocks
Gestión de Versiones del códigoGestión de Versiones del códigoVisual SourceSafeVisual SourceSafe
Diseño, Codificación y DepuraciónDiseño, Codificación y DepuraciónVisual Studio: Designers, Editors, DebuggerVisual Studio: Designers, Editors, Debugger
Monitorización y OptimizaciónMonitorización y OptimizaciónVisual Studio AnalyzerVisual Studio Analyzer
PruebasPruebasApplication Center TestApplication Center Test
Despliegue e InstalaciónDespliegue e InstalaciónVisual Studio: Setup ProjectsVisual Studio: Setup Projects
Arquitectura .NETArquitectura .NETRetos del desarrolloRetos del desarrollo
Integración de Integración de aplicacionesaplicaciones
Servicios Web XMLServicios Web XML
Múltiples lenguajes de Múltiples lenguajes de programaciónprogramación
Múltiples modelos de Múltiples modelos de programaciónprogramación
Complejidad del desarrollo Complejidad del desarrollo y desplieguey despliegue
Seguridad no inherenteSeguridad no inherente
Preservar la inversión del Preservar la inversión del desarrolladordesarrollador
Elevar la productividad del Elevar la productividad del desarrolladordesarrollador
.NET Framework.NET Framework Common Language Common Language
RuntimeRuntime .NET Framework Class .NET Framework Class
LibraryLibrary Componentes .NET Componentes .NET
assembliesassemblies
.NET Framework.NET Framework Lenguajes .NETLenguajes .NET Interoperatividad COMInteroperatividad COM
Visual Studio .NETVisual Studio .NET
Patterns & Practices
ProvenBased 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 & Practices
Guías publicadas y próximasReference Architectures Reference Building Blocks 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
…
Patterns
.NET Enterprise Patterns
Data Patterns
Network Infrastructure Patterns
…
UI Components
UI Process Components
Data Access Components
Business Workflows
Business Components
Users
Business Entities
Service Agents
Service Interfaces
Data Sources
Services
Ope
rational Managem
ent
Security
Com
munication
Development LifecycleDevelopment Lifecycle
Disponibles
En desarrollo
ProfilingProfilingTeam DevTeam Dev DeploymentDeployment DebuggingDebugging .NET Ops.NET Ops
Persistent Asynch InvocationPersistent Asynch Invocation
CachingCaching
Service Data Aggregation & CachingService Data Aggregation & Caching
Rich ClientRich Client
User Interface ProcessUser Interface Process
Web ClientWeb Client
Configuration Configuration
Data Exchange & FormatData Exchange & Format
En
d-to
-en
d A
pp
licatio
n &
Se
rvice D
esig
nE
nd
-to-e
nd
Ap
plica
tion
& S
ervice
De
sign
Data AccessData Access
DNA InteropDNA Interop
AuthenticationAuthentication
InstrumentationInstrumentation
Exception MgmtException Mgmt
Application AuthZApplication AuthZ
Secure ASP.NETSecure ASP.NET
Patterns & PracticesArquitectura de Aplicaciones
Patterns & Practices
Disponibilidad
Online en MSDN y TechNet:http://www.microsoft.com/resources/practices
Guías escritas disponibles en:http://shop.microsoft.com/practices
Distribuidas en CD-ROM Library en eventos
Arquitectura de Arquitectura de Referencia .NETReferencia .NETArquitectura de Aplicación en capas Arquitectura de Aplicación en capas lógicasló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 Tradicional3 capas lógicas
CAPA DE PRESENTACIÓN
CAPA DE NEGOCIO
CAPA DE DATOS
Arquitectura de Arquitectura de Aplicación .NETAplicación .NETCapas en aplicaciones y serviciosCapas en aplicaciones y servicios
1.1. Comunicación débilmente acopladaComunicación débilmente acoplada
2.2. Aplicaciones/Servicios con arquitectura en Aplicaciones/Servicios con arquitectura en capascapas
3.3. Algunos servicios pueden no tener IUAlgunos servicios pueden no tener IU
4.4. Cada servicio gestiona sus propios datosCada servicio gestiona sus propios datos
Orders
Credit Authorization
Courier
12
3
4
Arquitectura de Arquitectura de Referencia .NETReferencia .NETCapa de DatosCapa 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 DatosCapa de DatosXMLXML
Funcionalidad tradicionalFuncionalidad tradicionalAcceso en memoria: DOM niveles 1 y 2Acceso en memoria: DOM niveles 1 y 2Acceso secuencial: XmlReaderAcceso secuencial: XmlReaderBúsquedas: XPath, con posibilidad de Búsquedas: XPath, con posibilidad de compilacióncompilaciónDefinición y validación de esquemas XSDDefinición y validación de esquemas XSDTransformaciones XSLTTransformaciones XSLT
Funcionalidad en .NET: Serialización XMLFuncionalidad en .NET: Serialización XMLControlable con atributosControlable con atributosXmlSerializer: Instancias de objetos XmlSerializer: Instancias de objetos XMLXMLXSD.EXE: Clases XSD.EXE: Clases XSD XSD
XMLXMLSerialización XMLSerialización XML
XSDXSDXSDXSDXMLXMLXMLXML
C#, VB, JSC#, VB, JSC#, VB, JSC#, VB, JS
XSD.EXEXSD.EXE
XSD.EXEXSD.EXE
ValidatorValidator
XmlSerializerXmlSerializer
Serialización XMLSerialización XML
Capa de DatosCapa de DatosADO.NETADO.NET
Independiente de la fuente de datosIndependiente de la fuente de datosIDbConnectionIDbConnection
Conexión a cualquier base de datos con Conexión a cualquier base de datos con proveedores proveedores
Generales: .NET OLE DB y .NET ODBCGenerales: .NET OLE DB y .NET ODBC
Específicos: .NET SQL Client, .NET Oracle ClientEspecíficos: .NET SQL Client, .NET Oracle Client
Modelo conectado de acceso a datosModelo conectado de acceso a datosIDbCommand: sentencias SQL IDbCommand: sentencias SQL (parametrizables con IDbParameter), (parametrizables con IDbParameter), procedimientos almacenados procedimientos almacenados
IDbDataReader: para recuperar resultadosIDbDataReader: para recuperar resultados
Acceso conectado con Acceso conectado con ADO.NETADO.NET
Capa de DatosCapa de DatosADO.NET (II)ADO.NET (II)
Modelo Desconectado de acceso a datosModelo Desconectado de acceso a datosDatasetDataset
Modelo de datos en memoriaModelo de datos en memoria
Desconectado de la base de datos Desconectado de la base de datos
Mantiene memoria de los cambiosMantiene memoria de los cambios
Es serializable en XMLEs serializable en XML
DataAdapterDataAdapterRellenan un Dataset desde la fuente de datosRellenan un Dataset desde la fuente de datos
Concilian los cambios de un Dataset hacia la Concilian los cambios de un Dataset hacia la fuente de datosfuente de datos
Capa de DatosCapa de DatosADO.NET: Modelo desconectadoADO.NET: Modelo desconectado
Capa de negociosCapa de negocios
Capa deCapa dedatosdatos
Capa de presentaciónCapa de 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 Acceso desconectado con ADO.NETcon ADO.NET
Arquitectura de Arquitectura de Referencia .NETReferencia .NETCapa de NegocioCapa 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 NegocioCapa de NegocioConsumidores de componentes de Consumidores de componentes de NegocioNegocio
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 NegocioCapa de NegocioIntegrando servicios en un flujo de Integrando servicios en un flujo de procesoproceso
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 NegocioCapa de NegocioServicios Web: reduciendo Servicios Web: reduciendo dependenciasdependencias
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 Componente de aplicación programable, accesible a través de programable, accesible a través de protocolos estándar de Internetprotocolos estándar de Internet
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 NegocioCapa de NegocioASP.NET Web ServicesASP.NET Web Services
Capa de NegocioCapa de NegocioASP.NET Web Services (II)ASP.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 NegocioCapa de NegocioASP.NET Web Services (III)ASP.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 NegocioCapa de NegocioASP.NET Web Services (IV)ASP.NET Web Services (IV)
Sencillo modelo de programaciónSencillo modelo de programaciónAplicación Web especial (.asmx), sin interfaz de Aplicación Web especial (.asmx), sin interfaz de usuariousuario
En el servidor: ASP.NET permite exponer En el servidor: ASP.NET permite exponer clases .NET como servicios webclases .NET como servicios web
Atributos [WebService], [WebMethod]Atributos [WebService], [WebMethod]Traduce peticiones SOAPTraduce peticiones SOAPGenera automáticamente WSDL y páginas de Genera automáticamente WSDL y páginas de pruebaprueba
En el cliente: .NET genera un proxy para En el cliente: .NET genera un proxy para comunicar con el servidorcomunicar con el servidor
Integrado con Visual StudioIntegrado con Visual Studio
La serialización XML hace el restoLa serialización XML hace el resto
Web ServicesWeb Services
Capa de NegocioCapa de Negocio.NET Remoting.NET Remoting
Acceso remoto a objetosAcceso remoto a objetos
3 modelos de acceso remoto:3 modelos de acceso remoto:Objetos activados por el cliente (similar a DCOM)Objetos activados por el cliente (similar a DCOM)
Objetos activados por el servidorObjetos activados por el servidorSingle-CallSingle-Call
SingletonSingleton
Hospedaje de objetos de acceso remoto:Hospedaje de objetos de acceso remoto:ASP.NETASP.NET
Aplicación dedicada .EXEAplicación dedicada .EXE
Capa de NegocioCapa de NegocioEnterprise Services y Enterprise Services y System.MessagingSystem.Messaging
Enterprise ServicesEnterprise ServicesModelo de programación simplificado para el uso Modelo de programación simplificado para el uso de servicios COM+de servicios COM+Servicios empresariales:Servicios empresariales:
TransaccionesTransaccionesInteroperabilidad XA Interoperabilidad XA Seguridad basada en rolesSeguridad basada en rolesPooling Pooling de objetosde objetosComponentes encoladosComponentes encolados……
System.MessagingSystem.MessagingModelo de programación para el uso de colas Modelo de programación para el uso de colas MSMQMSMQ
Arquitectura de Arquitectura de Referencia .NETReferencia .NETCapa de PresentaciónCapa 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ónCapa de PresentaciónASP.NET Web Forms: modelo de ASP.NET Web Forms: modelo de códigocódigoModelo de programación similar a Modelo de programación similar a
WinFormsWinFormsRAD Visual: Formularios, Controles servidor, RAD Visual: Formularios, Controles servidor, EventosEventos
El código “está detrás”El código “está detrás”
Separación entre lógica y presentaciónSeparación entre lógica y presentación
<tags><tags>
Form1.asp
códigocódigocódigocódigo
<tags><tags>
Form1.aspx
códigocódigo
Form1.vbForm1.vb
ASPASP ASP .NETASP .NET
Capa de PresentaciónCapa de PresentaciónASP.NET: modelo de ejecució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ónCapa de PresentaciónASP.NET: Sesión y CachéASP.NET: Sesión y Caché
SesiónSesiónSoporta granjas de servidoresSoporta granjas de servidores
No requiere obligatoriamente cookiesNo requiere obligatoriamente cookies
Mejor tolerancia a fallos (más opciones para guardar estado):Mejor tolerancia a fallos (más opciones para guardar estado):Servicio Windows en otro equipo (alta disponibilidad)Servicio Windows en otro equipo (alta disponibilidad)
SQL Server (alta disponibilidad + tolerancia a fallos)SQL Server (alta disponibilidad + tolerancia a fallos)
CachéCachéa nivel de páginaa nivel de página
Caché fragmentadoCaché fragmentado
Modos cliente y servidorModos cliente y servidor
Dependencias de caché (tiempo, fichero, consulta SQL)Dependencias de caché (tiempo, fichero, consulta SQL)
Cache APICache API
ASP.NET Web FormsASP.NET Web Forms
Capa de PresentaciónCapa de PresentaciónWindows FormsWindows Forms
Combinación de productividad Combinación de productividad formularios VB con potencia MFC C++formularios VB con potencia MFC C++
Herencia visual de controles y Herencia visual de controles y formulariosformularios
Soporte gráfico mejorado GDI+Soporte gráfico mejorado GDI+
Fácil enlazado de datos con ADO.NETFácil enlazado de datos con ADO.NET
Fácil consumo de Servicios Web XMLFácil consumo de Servicios Web XML
Controles Windows hospedados en IEControles Windows hospedados en IE
Impresión de formularios, ayuda, …Impresión de formularios, ayuda, …
Windows FormsWindows Forms¿Otra? pero si ya los hemos visto … ¿Otra? pero si ya los hemos visto … (pesao!)(pesao!)
Cliente Rico
Cliente Ligero
Cliente Inteligente
Experienciarica de usuario
Productividaddesarrollo
Infierno delas DLLs
Instalacióncostosa
Mínima/nulainstalación
Respuestarápida
Dependenciade la red
Facilidad dedespliegue
Experienciapobre de usuarioVersionado y
mantenimiento
Dificultad dedespliegue
Complejidad dedesarrollo
Capa de PresentaciónCapa de PresentaciónCliente Rico o Cliente Ligero: “Smart Cliente Rico o Cliente Ligero: “Smart Client”Client”
Opción 1: File Copy (XCOPY, FTP)Opción 1: File Copy (XCOPY, FTP)Instalación sin ejecutar nada en el clienteInstalación sin ejecutar nada en el cliente
Opción 2: paquetes WindowsOpción 2: paquetes Windows®® Installer InstallerIncluyendo o no .NET Framework RedistributableIncluyendo o no .NET Framework Redistributable
Ejecutar Setup en el cliente o desplegar con Systems Ejecutar Setup en el cliente o desplegar con Systems Management Server o IntelliMirrorManagement Server o IntelliMirror®®
Opción 3: Despliegue “sin tocar” desde Internet Opción 3: Despliegue “sin tocar” desde Internet Explorer (“No-Touch” Deployment)Explorer (“No-Touch” Deployment)
Descarga de Controles Windows en páginas WebDescarga de Controles Windows en páginas Web
Descarga de Aplicaciones Windows de IntranetDescarga de Aplicaciones Windows de Intranet
El código se mantiene y se versiona en un único punto: El código se mantiene y se versiona en un único punto: el el servidor de Intranetservidor de Intranet
Cliente Rico o Cliente LigeroCliente Rico o Cliente LigeroDespliegue de aplicacionesDespliegue de aplicaciones
Sin instalación ni desinstalaciónSin instalación ni desinstalación
Aplicaciones .NET son ligeras Aplicaciones .NET son ligeras ““Hello World” = ~3.5 KbHello World” = ~3.5 Kb
No se instala nada en la carpeta SystemNo se instala nada en la carpeta System
No se escribe en el Windows RegistryNo se escribe en el Windows Registry
Requerimientos del clienteRequerimientos del clienteWindows 98/Windows NTWindows 98/Windows NT®® 4.0 o superior 4.0 o superior
Internet Explorer 5.5 o superiorInternet Explorer 5.5 o superior
.NET Framework Redistributable (~20 MB).NET Framework Redistributable (~20 MB)
Cliente Rico o Cliente LigeroCliente Rico o Cliente LigeroDespliegue sin tocar (No-Touch Despliegue sin tocar (No-Touch Deployment)Deployment)
Web ServerWeb Server
Web Web ServerServer
Assembly Assembly CacheCache
HTTPHTTP
ClientClient
Windows AppWindows App
Form1Form1
Form2Form2
Cliente Rico o Cliente LigeroCliente Rico o Cliente LigeroDespliegue de aplicaciones WindowsDespliegue 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
Cliente Rico o Cliente LigeroCliente Rico o Cliente LigeroDespliegue de controles WindowsDespliegue de controles Windows
Windows FormsWindows FormsSmart Client y el despliegue sin tocarSmart Client y el despliegue sin tocar
Escenarios de Aplicaciones Escenarios de Aplicaciones MóvilesMóvilesVisión generalVisión general
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
Servicios Web XMLServicios Web XML
Aplicaciones multi-dispositivo difícil:Aplicaciones multi-dispositivo difícil:• 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
Escenarios de aplicaciones Escenarios de aplicaciones móvilesmóvilesRetos tradicionalesRetos tradicionales
Operativa “off-line”Operativa “off-line”Ejecución LocalEjecución LocalDatos LocalesDatos Locales
IU enriquecidoIU enriquecidoMultimediaMultimediaIU elaboradoIU elaborado
Integración con Integración con elementos dispositivoelementos dispositivo
Lectores tarjetasLectores tarjetasLectores código Lectores código barrasbarrasReceptores GPSReceptores GPSTelefonía / mensajeríaTelefonía / mensajería
Presentación Presentación adaptableadaptable
Soporte dinámico de Soporte dinámico de múltiples navegadores múltiples navegadores de dispositivosde dispositivosSoporte navegador en Soporte navegador en dispositivos bajo costedispositivos bajo coste
Código base únicoCódigo base únicoMantenimiento Mantenimiento simplificadosimplificadoExtensión natural de Extensión natural de las apl. Web existenteslas apl. Web existentes
Ejecución en servidorEjecución en servidorSin instalación en Sin instalación en clienteclienteSin ejecució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
Escenarios de aplicaciones Escenarios de aplicaciones móvilesmóvilesVentajas arquitectónicasVentajas arquitectónicas
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
Escenarios de aplicaciones Escenarios de aplicaciones móviles móviles Desarrollo Microsoft para Desarrollo Microsoft para dispositivos dispositivos
Capa de PresentaciónCapa de PresentaciónDesarrollo para dispositivosDesarrollo para dispositivos
Desarrollo del lado del clienteDesarrollo del lado del clienteWindows Forms de .NET Compact Windows Forms de .NET Compact FrameworkFramework
Desarrollo del lado del servidorDesarrollo del lado del servidorASP.NET Mobile Web FormsASP.NET Mobile Web Forms
Soporte multi-cliente automáticoSoporte multi-cliente automáticoWML, HTML 3.2, cHTML, XHTML, XMLWML, HTML 3.2, cHTML, XHTML, XML
Desarrollo para Desarrollo para dispositivos dispositivos ASP.NET Mobile Web ASP.NET Mobile Web FormsFormsWindows Forms de .NET Compact Windows Forms de .NET Compact FrameworkFramework
Arquitectura de Arquitectura de Referencia .NETReferencia .NETArquitectura de Aplicación en capas Arquitectura de Aplicación en capas lógicasló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 Arquitectura de Referencia .NETReferencia .NETEntornos de Despliegue FísicoEntornos de Despliegue Físico
Infrastructure VLAN Data & Management VLAN
DMZ
VPN
Entornos de Despliegue FísicoEntornos de Despliegue FísicoTecnologías de Clustering MicrosoftTecnologías de Clustering Microsoft
Network Load BalancingNetwork Load Balancing ( (NLBNLB))Balancea tráfico TCP/IP entre múltiples Balancea tráfico TCP/IP entre múltiples servidoresservidores
Hasta 32 nodosHasta 32 nodos
Proporciona Proporciona alta disponibilidadalta disponibilidad y y escalabilidadescalabilidad
Microsoft Cluster Service Microsoft Cluster Service (MSCS)(MSCS)Tolerancia a fallos (Tolerancia a fallos (failoverfailover))
2 ó 4 nodos2 ó 4 nodos
Proporciona Proporciona alta disponibilidadalta disponibilidad
Interoperabilidad o MigraciónInteroperabilidad o MigraciónInteroperabilidad con COM y código Interoperabilidad con COM y código nativonativoCOM Interop bidireccionalCOM Interop bidireccional
Utilizar componentes COM desde .NETUtilizar componentes COM desde .NETTlbImp.exeTlbImp.exe: genera un proxy .NET de un componente COM (: genera un proxy .NET de un componente COM (early bindingearly binding))
AxImp.exeAxImp.exe: genera proxy .NET de un control ActiveX: genera proxy .NET de un control ActiveX
System.ReflectionSystem.Reflection ( (late bindinglate binding))
Utilizar componentes .NET desde COMUtilizar componentes .NET desde COMTlbExp.exeTlbExp.exe: genera una librería de tipos de un componente .NET (: genera una librería de tipos de un componente .NET (early early bindingbinding))
RegAsm.exeRegAsm.exe: registra un componente .NET en el registro del sistema (: registra un componente .NET en el registro del sistema (late late bindingbinding))
Platform InvokePlatform Invoke (P/Invoke) (P/Invoke)Llamadas a puntos de Llamadas a puntos de
entrada estáticas en entrada estáticas en
DLLs de código nativoDLLs de código nativo
desde código gestionadodesde 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ónInteroperabilidad o MigraciónActualizar de DNA a .NETActualizar de DNA a .NET
Visual C++Visual C++Visual C++ .NETVisual C++ .NET: MFC, ATL y extensiones manejadas .NET: MFC, ATL y extensiones manejadas .NET
Visual BasicVisual BasicVisual Basic .NETVisual Basic .NET: asistente de migración automática en : asistente de migración automática en VS.NETVS.NET
ASPASPASP.NETASP.NET: Compatible casi al 100% con ASP: Compatible casi al 100% con ASPJScript no sufre cambios, VBScript se reemplaza por Visual JScript no sufre cambios, VBScript se reemplaza por Visual Basic.NETBasic.NETSe soporta Late Binding con COM (Server.CreateObject / Se soporta Late Binding con COM (Server.CreateObject / CreateObject)CreateObject)Posibilidad de ejecución ASP y ASP.NET en la misma máquinaPosibilidad de ejecución ASP y ASP.NET en la misma máquinaGuía de migración con recomendaciones y mejores prácticasGuía de migración con recomendaciones y mejores prácticasAsistente de migración automática (versión beta) en Asistente de migración automática (versión beta) en www.asp.netwww.asp.net
ADOADOADO.NETADO.NET es la tecnología de acceso a datos en .NET es la tecnología de acceso a datos en .NETADO está soportado vía COM InteropADO está soportado vía COM InteropRDO y DAO también están soportados vía COM InteropRDO y DAO también están soportados vía COM InteropData Binding a controles sólo soportado en ADO (no RDO ni Data Binding a controles sólo soportado en ADO (no RDO ni DAO)DAO)
Migración de ASP a ASP.NETMigración de ASP a ASP.NETEstrategia de MigraciónEstrategia de Migración
Coexistencia de DNA y .NETCoexistencia de DNA y .NETComponentes COM y Componentes .NETComponentes COM y Componentes .NET
Interoperabilidad bidireccional COMInteroperabilidad bidireccional COM.NET vía COM .NET vía COM InteropInterop
ASP y ASP.NET en el mismo IISASP y ASP.NET en el mismo IISPermite desarrollar nuevas páginas y aplicaciones Web Permite desarrollar nuevas páginas y aplicaciones Web ASP.NETASP.NET
No comparten Session ni Application… pero ¿pueden?No comparten Session ni Application… pero ¿pueden?
¿Cómo migro de DNA a .NET? una estrategia:¿Cómo migro de DNA a .NET? una estrategia:1º migración de código1º migración de código: herramientas : herramientas automáticas de migración sintáctica que hace gran automáticas de migración sintáctica que hace gran parte del trabajoparte del trabajo
2º migración de componentes2º migración de componentes: manualmente, : manualmente, usar componentes .NET en lugar de componentes usar componentes .NET en lugar de componentes COMCOM
3º migración de conceptos3º migración de conceptos: refactorización, : refactorización, arquitecturaarquitectura
RecursosRecursos
Guías de Arquitectura “Patterns & Practices” Guías de Arquitectura “Patterns & Practices” http://www.microsoft.com/resources/practiceshttp://www.microsoft.com/resources/practicesDesarrollo Web “Server Side”Desarrollo Web “Server Side”
http://www.asp.nethttp://www.asp.net
Desarrollo Windows “Smart Client”Desarrollo Windows “Smart Client”http://www.windowsforms.nethttp://www.windowsforms.net
Servicios Web de MicrosoftServicios Web de Microsofthttp://www.microsoft.com/webserviceshttp://www.microsoft.com/webservices
MSDN Online, “El Recurso” del desarrolladorMSDN Online, “El Recurso” del desarrolladorhttp://www.microsoft.com/Spanish/msdn/spainhttp://www.microsoft.com/Spanish/msdn/spainhttp://http://msdn.microsoft.commsdn.microsoft.com
Comunidad de GotDotNetComunidad de GotDotNethttp://http://www.gotdotnet.comwww.gotdotnet.com
Crea tu web... ¡y al cine!Concurso de programación web con ASP.NET
¿Te gusta la programación? ¿Te gusta el cine? ¿Lo tuyo escrear sitios web? Pues esta es tu oportunidad de hacerlo yllevarte premios ¡de película!
Empresas de alojamiento web patrocinadoras:
Patrocinan:
Del 1 de abril al 15 de junio de 2004 participa en el concurso de programación web con ASP.NET (el alojamiento de los sitios web participantes es gratuito durante el concurso), y solo por hacerlo ya tienes dos entradas para ir al cine cuando quieras en más de 2.000 salas en toda España. Y si tu web es una de las ganadoras en alguna de las seis categorías contempladas, te esperan fantásticos premios: consolas y juegos Xbox, mandos para ver DVDs en la consola, películas en DVD, cajas de Visual Studio .NET, alojamiento gratuito ASP.NET durante un año y suscripciones a revistas patrocinadoras durante un año.
Un concurso
Más información en www.microsoft.com/spanish/msdn/concuasp
¡Adéntrate!
Amsterdam, Holanda29 junio – 2 julio
El evento definitivo de Microsoft en Europa sobre creación, implantación, protección y
gestión de soluciones conectadas
© 2004 Microsoft Corporation. Todos los derechos reservados.Esta presentación tiene propósitos informativos únicamente. Microsoft no ofrece garantías, implícitas o explícitas, de este contenido.