Upload
hatuyen
View
225
Download
0
Embed Size (px)
Citation preview
IntroducciónMicrosoft .NET
Enrique Hernández OralloArquitectura de Redes. Internet
BANCAJA
Índice
� Introducción� Plataforma .NET� Arquitectura .NET� Visual Studio .NET� Conclusiones
Índice
�� IntroducciónIntroducción� Plataforma .NET� Arquitectura .NET� Visual Studio .NET� Conclusiones
Introducción
�¿Qué es Microsoft .NET?�Arquitectura para desarrollar y ejecutar
Servicios Web.� Plataforma .NET no es radicalmente nuevo.
– Microsoft ha integrado tecnologías – Facilita el desarrollo
� Pilares de la nueva plataforma– Integración: Ofrecer servicios b2b y b2c.– Nuevos dispositivos: Acceso a servicios Web.
Introducción“un programa que se puede
acceder a través de Internet utilizando PROTOCOLOS ESTÁNDAR”
�Representación de datos
ServicioServicioWebWeb
XMLXMLeXtendedeXtended MarkupMarkup LanguageLanguage
�Utilización del servicio SOAPSOAPSingle Single ObjectObject Access Access ProtocolProtocol
�Definición del servicio WSDLWSDLWeb Web ServiceService DescriptionDescription LanguageLanguage
�Publicación del servicio UDDIUDDIUniversal Universal DescriptionDescription, , DiscoveryDiscovery andand IntegrationIntegration
� .NET My Services
Índice
� Introducción�� Plataforma .NETPlataforma .NET� Arquitectura .NET� Visual Studio .NET� Conclusiones
Plataforma .NET
� Elementos que componen .NET– Modelo de programación basado en XML– Un conjunto de servicios Web XML– Software para servidores (.NET Enterprise
Servers)– Software para cliente (Windows, PDA,
Videoconsolas, etc.)– Herramientas de desarrollo: Visual Studio.NET
Plataforma .NET
msnmsn bCentralbCentral Office.NETOffice.NET
PC’s ydispositivos
Experiencias de usuario
ServiciosWeb
Servidores
Acceso a datos
AlmacenamientoControl de accesos
Programación .N
ET
.NE
T Framew
orl
Índice
� Introducción� Plataforma .NET�� Arquitectura .NETArquitectura .NET� Visual Studio .NET� Conclusiones
Arquitectura .NET
� Definición:– “Una plataforma independiente del lenguaje
para el desarrollo de servicios Web”� Objetivos
– Reducir complejidad servicios Web– Centrarse en el desarrollo de la lógica de
negocio
Arquitectura .NET
Ejecutivo de lenguaje comúnEjecutivo de lenguaje común
Clases básicasClases básicas
Clases XML y de DatosClases XML y de Datos
WindowsWindowsFormsForms
ASP.NETASP.NET
ServiciosServiciosWeb XMLWeb XML
WebWebFormsForms
Componentes de la arquitectura
C#C# C++C++ VBVB OtrosOtros
Código MSILCódigo MSIL
CompiladorCompiladorCompilador
CLR
Arquitectura .NET
CargadorCargadorCargador
Compilador JITCompilador JITCompilador JIT
Código NativoCódigo Nativo
EjecuciónEjecuciónEjecución
Método no Método no compiladocompilado
Arquitectura .NETServidor ComponentesServidor WebCliente
Servicios Servicios COM+COM+
Componentes Componentes .NET.NET
BLLBLL DALDALIIS oIIS o
Servicio Window
sServicio W
indows
IISIISPáginasPáginasASP.NETASP.NET
Serv. BDD
Remoting
Remoting
HTTP
HTTP
InternetInternetExplorerExplorer
Remoting
Remoting
AplicaciónAplicaciónWinFormsWinForms
Arquitectura .NET
� Desplieque (deploy)– Copiar ficheros: xcopy *.cab– Paquetes Windows Installer
� Incluir o no Framework .net� Instalar bajo demanda o desde el servidor
– Desde Internet Explorer� Carga de aplicaciones Windows desde Intranet.� No requiere instalación/desintalación: no instala nada ni
registra nada.� Descarga assemblies a demanda� Requisitos cliente: 98/NT/XP, IE 5.5, .Net Framework
Arquitectura .NET
� Seguridad– Basada en roles– Roles .NET = grupos de Windows Active Direct.
� CAS : Code access security– Lo que puede hacer el programa en una máquina
� El código .NET se puede bajar con seguridad
Arquitectura .NET
Característica J2EE .NETFabricantes 30+ MicrosoftLenguaje Java VB, C++, C#,20+Interprete JRE CLRPresentación JSP ASP.NETLógica negocio EJB .NET Managed
componentsAcceso BB.DD. JDBC ADO.NETEstándares SOAP, WSDL,
UDDISOAP, WSDL, UDDI
Comparación J2EE vs .NET
Índice
� Introducción� Plataforma .NET� Arquitectura .NET�� Visual Studio .NETVisual Studio .NET� Conclusiones
Visual Studio .NET
� Herramienta de desarrollo para .NET� Multilenguaje integrado
– Visual Basic .NET, C++, C# y J#.� Permite elegir tipos de aplicación
– Servicios– Windows tradicionales (con Windows Forms)– Web Forms– Servicios Web XML
� Integración con arquitectura COM
Visual Studio .NET
� Caracteristicas desarrollo .NET– Ejecutivo común: no existen módulos de
ejecución (vbrun.dll, msvc42.dll) – Clases unificadas: permite pasar de un lenguaje
a otro fácilmente (MFC, VB Framework) – Integración multilenguaje– ASP.NET: Equivalente a JSP.– ADO.NET: acceso a datos (BB.DD. y XML)– Plataforma abierta: añadir nuevos lenguajes
(Cobol, Perl, Eiffel) o nuevas herramientas.
Visual Studio .NET
� Herramientas ciclo de vida– Pruebas del centro de aplicaciones– Modelado: UML Visio, Visio Database
Modeling– Creación de plantillas de diseño– Visual Studio Analyzer.– Visual Source Safe 6.0c
Visual Studio .NET
� Visual Basic .NET– Nuevo lenguaje
� Totalmente orientado a objetos.� Estricta verificación de tipos� Gestión de excepciones estructurada.� Operador asignación único. Uso de paréntesis.
– Incompatible con VB6.0� Alto Coste de migración: 10% al 15 % coste del
proyecto (Herramienta de migración)
Visual Studio .NET
� Visual C++– Sigue siendo C++
� Todas las mejoras son extensiones� Migración incremental: Puede recompilarse a MSIL
– Mejores optimizaciones/ runtime más seguro– Mejoras en las librerías
� Más clases MFC (Criptografía, Seguridad, GDI+)� Mejora soporte STL
– Con WebForms permite un diseño con controles y forms.
Visual Studio .NET
� C#– “Es el Java que Microsoft hubiera querido.”– Características
� Propiedades, delegados, eventos,� Sin archivos de cabecera ni IDL� Documentación integrada
� J#– Es Java pero sin las librerías Java. (JFC, etc.)– JUMP (Java User Migration Path).– No se ejecuta en la máquina Virtual Java.
Visual Studio .NET
MSILMSILMSIL
Fuente Java dirigido a Fuente Java dirigido a .NET .NET
Entorno de Ejecución .NETEntorno de Ejecución .NETEntorno de Ejecución .NET
.NET .NET FrameworkFramework
Win32Win32Win32
SubcSubc. de JDK 1.1.4 & librerías . de JDK 1.1.4 & librerías VJ++VJ++ 6.06.0
MSILMSILMSIL
Conversor Conversor BinarioBinario
Binario Binario JavaJava
Conversor Conversor FuenteFuente
MSILMSILMSIL
Fuente Java Fuente Java HeredadoHeredado
Soporte al lenguaje JavaSoporte al lenguaje Java
stringstringstringstring s = "s = "s = "s = "authorsauthorsauthorsauthors";";";";SqlCommandSqlCommandSqlCommandSqlCommand cmdcmdcmdcmd = = = = newnewnewnew SqlCommandSqlCommandSqlCommandSqlCommand("("("("selectselectselectselect * * * * fromfromfromfrom """"+s+s+s+s, , , , sqlconnsqlconnsqlconnsqlconn););););cmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReader();();();();
C#C#
DimDimDimDim s as s as s as s as StringStringStringStrings = "s = "s = "s = "authorsauthorsauthorsauthors""""DimDimDimDim cmdcmdcmdcmd As As As As NewNewNewNew SqlCommandSqlCommandSqlCommandSqlCommand("("("("selectselectselectselect * * * * fromfromfromfrom " & s, " & s, " & s, " & s, sqlconnsqlconnsqlconnsqlconn))))cmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReader()()()()
VB.NETVB.NET
Visual Studio .NET
C++C++StringStringStringString *s = *s = *s = *s = S"authorsS"authorsS"authorsS"authors"; "; "; "; SqlCommandSqlCommandSqlCommandSqlCommand cmdcmdcmdcmd = = = = newnewnewnewSqlCommand(StringSqlCommand(StringSqlCommand(StringSqlCommand(String::::::::Concat(S"selectConcat(S"selectConcat(S"selectConcat(S"select * * * * fromfromfromfrom ", s), ", s), ", s), ", s),
sqlconnsqlconnsqlconnsqlconn); ); ); ); cmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReader();();();();
2020
Visual Studio .NETJ#J#StringStringStringString s = "s = "s = "s = "authorsauthorsauthorsauthors";";";";
SqlCommandSqlCommandSqlCommandSqlCommand cmdcmdcmdcmd = = = = newnewnewnew SqlCommandSqlCommandSqlCommandSqlCommand("("("("selectselectselectselect * * * * fromfromfromfrom """"+s+s+s+s, , , , sqlconnsqlconnsqlconnsqlconn););););
cmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReader();();();();
2121
|s||s||s||s| := ':= ':= ':= 'authorsauthorsauthorsauthors'.'.'.'.|cmd||cmd||cmd||cmd| := := := := SqlCommandSqlCommandSqlCommandSqlCommand('('('('selectselectselectselect * * * * fromfromfromfrom ''''+s+s+s+s, , , , sqlconnsqlconnsqlconnsqlconn).).).).cmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReader().().().().
SmalltalkSmalltalk
StringStringStringString *s = *s = *s = *s = S"authorsS"authorsS"authorsS"authors"; "; "; "; SqlCommandSqlCommandSqlCommandSqlCommand cmdcmdcmdcmd = = = = newnewnewnew SqlCommand(StringSqlCommand(StringSqlCommand(StringSqlCommand(String::::::::Concat(S"selectConcat(S"selectConcat(S"selectConcat(S"select * * * * fromfromfromfrom", s), ", s), ", s), ", s), sqlconnsqlconnsqlconnsqlconn); ); ); ); cmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReader(); (); (); ();
PerlPerl
s = "s = "s = "s = "authorsauthorsauthorsauthors""""cmdcmdcmdcmd =SqlCommand=SqlCommand=SqlCommand=SqlCommand("("("("selectselectselectselect * * * * fromfromfromfrom " + s, " + s, " + s, " + s, sqlconnsqlconnsqlconnsqlconn))))cmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReader()()()()
PythonPython
varvarvarvar s = "s = "s = "s = "authorsauthorsauthorsauthors""""varvarvarvar cmdcmdcmdcmd = = = = newnewnewnew SqlCommandSqlCommandSqlCommandSqlCommand("("("("selectselectselectselect * * * * fromfromfromfrom " + s, " + s, " + s, " + s, sqlconnsqlconnsqlconnsqlconn))))cmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReadercmd.ExecuteReader()()()()
JScriptJScriptVisual Studio .NET
2222
ENVIRONMENT DIVISION.ENVIRONMENT DIVISION.ENVIRONMENT DIVISION.ENVIRONMENT DIVISION.CONFIGURATION SECTION.CONFIGURATION SECTION.CONFIGURATION SECTION.CONFIGURATION SECTION.REPOSITORY.REPOSITORY.REPOSITORY.REPOSITORY.
CLASS CLASS CLASS CLASS SqlCommandSqlCommandSqlCommandSqlCommand AS "AS "AS "AS "System.Data.SqlClient.SqlCommandSystem.Data.SqlClient.SqlCommandSystem.Data.SqlClient.SqlCommandSystem.Data.SqlClient.SqlCommand""""CLASSCLASSCLASSCLASS SqlConnectionSqlConnectionSqlConnectionSqlConnection AS "AS "AS "AS "System.Data.SqlClient.SqlConnectionSystem.Data.SqlClient.SqlConnectionSystem.Data.SqlClient.SqlConnectionSystem.Data.SqlClient.SqlConnection".".".".
DATA DIVISION.DATA DIVISION.DATA DIVISION.DATA DIVISION.WORKINGWORKINGWORKINGWORKING----STORAGE SECTION.STORAGE SECTION.STORAGE SECTION.STORAGE SECTION.01 01 01 01 strstrstrstr PIC X(50).PIC X(50).PIC X(50).PIC X(50).01 01 01 01 cmdcmdcmdcmd----stringstringstringstring PIC X(50).PIC X(50).PIC X(50).PIC X(50).01 01 01 01 cmdcmdcmdcmd OBJECT REFERENCE OBJECT REFERENCE OBJECT REFERENCE OBJECT REFERENCE SqlCommandSqlCommandSqlCommandSqlCommand....01 01 01 01 sqlconnsqlconnsqlconnsqlconn OBJECT REFERENCE OBJECT REFERENCE OBJECT REFERENCE OBJECT REFERENCE SqlConnectionSqlConnectionSqlConnectionSqlConnection....PROCEDURE DIVISION.PROCEDURE DIVISION.PROCEDURE DIVISION.PROCEDURE DIVISION.*> *> *> *> EstablishEstablishEstablishEstablish thethethethe SQL SQL SQL SQL connectionconnectionconnectionconnection herehereherehere somewheresomewheresomewheresomewhere....MOVE "MOVE "MOVE "MOVE "authorsauthorsauthorsauthors" TO " TO " TO " TO strstrstrstr....STRING "STRING "STRING "STRING "selectselectselectselect * * * * fromfromfromfrom " DELIMITED " DELIMITED " DELIMITED " DELIMITED BYBYBYBY SIZE,SIZE,SIZE,SIZE,
strstrstrstr DELIMITED DELIMITED DELIMITED DELIMITED BYBYBYBY " " INTO " " INTO " " INTO " " INTO cmdcmdcmdcmd----stringstringstringstring....INVOKE INVOKE INVOKE INVOKE SqlCommandSqlCommandSqlCommandSqlCommand "NEW" USING "NEW" USING "NEW" USING "NEW" USING BYBYBYBY VALUE VALUE VALUE VALUE cmdcmdcmdcmd----stringstringstringstring sqlconnsqlconnsqlconnsqlconn RETURNING RETURNING RETURNING RETURNING cmdcmdcmdcmd....INVOKE INVOKE INVOKE INVOKE cmdcmdcmdcmd """"ExecuteReaderExecuteReaderExecuteReaderExecuteReader".".".".
CobolCobolVisual Studio .NET
2323
assembly_external(name="System.Data.SqlClient.SqlCommand")sqlcmdcharacter*10 xsqlcmdCmd x='authors'cmd = sqlcmd("select * from "//x, sqlconn)call cmd.ExecuteReader()end
FortranFortran
DclFld MyInstObj Type( System.Data.SqlClient.SqlCommand )DclFld s Type( *string )s = "authors"MyInstObj = New System.Data.SqlClient.SqlCommand("select *
from "+s, sqlconn)MyInstObj.ExecuteReader()
RPGRPGVisual Studio .NET
2424
(let* ( (s "authors")(cmd (new-SqlCommand (string-append "select * from " s)
sqlconn)))(execute-command cmd))
SchemeScheme
ExecuteReader = invoke System.Data.SqlClient.ExecuteReader();SqlCommand = create System.Data.SqlClient.SqlCommand(String,\
System.Data.SqlClient.SqlConnection);query = sqlconn -> let{ s = "authors"; } in {
cmd <- SqlCommand ("select * from "+s, sqlconn);cmd # ExecuteReader();
}; MondrianMondrian
locals: STRINGcmd: SQLCOMMAND
dos := "authors"create cmd("select * from " + s, sqlconn)cmd.ExecuteReader()
end
EiffelEiffel
Soporte multilenguaje
2626
Índice
� Introducción� Plataforma .NET� Arquitectura .NET� Visual Studio .NET�� ConclusionesConclusiones
Conclusiones
� Respuesta al mundo Java (J2EE)� Buena integración de tecnologías� Elección del lenguaje � C# no tiene sentido técnicamente� Futuro:
– MONO: Porting de la máquina virtual a Linux– Borland también desarrolla para .NET