Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C#...

16
Introducción Microsoft .NET Enrique Hernández Orallo Arquitectura de Redes. Internet BANCAJA Índice Introducción Plataforma .NET Arquitectura .NET Visual Studio .NET Conclusiones

Transcript of Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C#...

Page 1: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

IntroducciónMicrosoft .NET

Enrique Hernández OralloArquitectura de Redes. Internet

BANCAJA

Índice

� Introducción� Plataforma .NET� Arquitectura .NET� Visual Studio .NET� Conclusiones

Page 2: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

Í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.

Page 3: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 4: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 5: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

Í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

Page 6: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 7: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 8: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 9: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

Í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

Page 10: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 11: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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.

Page 12: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 13: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 14: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 15: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

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

Page 16: Introducción Microsoft - Dpto. de Informática de ... · Componentes de la arquitectura C#C# C++C++ VBVB OtrosOtros ... Todas las mejoras son extensiones ... Sin archivos de cabecera

Í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