Introducción Microsoft .NET Enrique Hernández Orallo Arquitectura de Redes. Internet BANCAJA Índice Introducción Plataforma .NET Arquitectura .NET Visual Studio .NET Conclusiones Índice Introducció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” Servicio Web Representación de datos XML eXtended Markup Language Utilización del servicio Single Object Access Protocol Definición del servicio Web Service Description Language Publicación del servicio WSDL UDDI Universal Description, Description, Discovery and Integration .NET My Services Índice SOAP Introducción Plataforma .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 Experiencias de usuario Servicios Web Servidores msn msn bCentral bCentral Office.NET Office.NET Acceso a datos Almacenamiento Programación .NET .NET Frameworl PC’s y dispositivos Control de accesos Índice Introducción Plataforma .NET Arquitectura .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 Componentes de la arquitectura Web Servicios Web XML Forms ASP.NET Windows Forms Clases XML y de Datos Clases básicas Ejecutivo de lenguaje común Arquitectura .NET C# C# C++ C++ VB VB Otros Otros Compilador Compilador Código MSIL Cargador Cargador Compilador CompiladorJIT JIT CLR Código Nativo Ejecución Ejecución Método no compilado Arquitectura .NET Re mo ti ng Aplicación WinForms Páginas IIS ASP.NET IIS o Servicio Windows Internet Explorer Servidor Componentes Re mo ti ng Servidor Web HTTP Cliente Serv. BDD Componentes .NET BLL COM+ DAL Servicios 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 Comparación J2EE vs .NET Característica Fabricantes Lenguaje Interprete Presentación Lógica negocio J2EE 30+ Java JRE JSP EJB Acceso BB.DD. JDBC Estándares SOAP, WSDL, UDDI .NET Microsoft VB, C++, C#,20+ CLR ASP.NET .NET Managed components ADO.NET SOAP, WSDL, UDDI Índice Introducción Plataforma .NET Arquitectura .NET Visual 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 Binario Java Soporte al lenguaje Java Fuente Java Heredado Conversor Fuente Conversor Binario MSIL MSIL Fuente Java dirigido a .NET MSIL MSIL Subc. Subc. de JDK 1.1.4 & librerías VJ++ 6.0 MSIL MSIL .NET Framework Entorno Entorno de deEjecución Ejecución.NET .NET Win32 Win32 Visual Studio .NET VB.NET Dim s as String s = "authors "authors" authors" Dim cmd As New SqlCommand(" SqlCommand("select ("select * from " & s, sqlconn) sqlconn) cmd.ExecuteReader() cmd.ExecuteReader() C# string s = "authors "authors"; authors"; SqlCommand cmd = new SqlCommand(" SqlCommand("select ("select * from "+s, +s, sqlconn); sqlconn); cmd.ExecuteReader(); cmd.ExecuteReader(); String *s = S"authors"; S"authors"; SqlCommand cmd = new SqlCommand(String:: SqlCommand(String::Concat(S"select ::Concat(S"select * from ", s), C++ sqlconn); sqlconn); cmd.ExecuteReader(); cmd.ExecuteReader(); 20 Visual Studio .NET String s = "authors "authors"; authors"; J# SqlCommand cmd = new SqlCommand(" SqlCommand("select ("select * from "+s, +s, sqlconn); sqlconn); cmd.ExecuteReader(); cmd.ExecuteReader(); Smalltalk |s| := 'authors 'authors'. authors'. |cmd| := SqlCommand(' SqlCommand('select ('select * from '+s, +s, sqlconn). sqlconn). cmd.ExecuteReader(). cmd.ExecuteReader(). 21 Visual Studio .NET JScript var s = "authors "authors" authors" var cmd = new SqlCommand(" SqlCommand("select ("select * from " + s, sqlconn) sqlconn) cmd.ExecuteReader() cmd.ExecuteReader() Perl String *s = S"authors"; S"authors"; SqlCommand cmd = new SqlCommand(String:: SqlCommand(String::Concat(S"select ::Concat(S"select * from ", s), sqlconn); sqlconn); cmd.ExecuteReader(); cmd.ExecuteReader(); Python s = "authors "authors" authors" cmd =SqlCommand(" =SqlCommand("select ("select * from " + s, sqlconn) sqlconn) cmd.ExecuteReader() cmd.ExecuteReader() 22 Visual Studio .NET Cobol ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. CLASS SqlCommand AS "System.Data.SqlClient.SqlCommand "System.Data.SqlClient.SqlCommand" System.Data.SqlClient.SqlCommand" CLASS SqlConnection AS "System.Data.SqlClient.SqlConnection "System.Data.SqlClient.SqlConnection". System.Data.SqlClient.SqlConnection". DATA DIVISION. WORKINGWORKING-STORAGE SECTION. 01 str PIC X(50). 01 cmdcmd-string PIC X(50). 01 cmd OBJECT REFERENCE SqlCommand. SqlCommand. 01 sqlconn OBJECT REFERENCE SqlConnection. SqlConnection. PROCEDURE DIVISION. *> Establish the SQL connection here somewhere. somewhere. MOVE "authors "authors" authors" TO str. str. STRING "select "select * from " DELIMITED BY SIZE, str DELIMITED BY " " INTO cmdcmd-string. string. INVOKE SqlCommand "NEW" USING BY VALUE cmdcmd-string sqlconn RETURNING cmd. cmd. INVOKE cmd "ExecuteReader". ExecuteReader". 23 Visual Studio .NET RPG 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() Fortran assembly_external(name="System.Data.SqlClient.SqlCommand") sqlcmdcharacter*10 xsqlcmd Cmd x='authors' cmd = sqlcmd("select * from "//x, sqlconn) call cmd.ExecuteReader() end 24 Soporte multilenguaje Scheme (let* ( (s "authors") (cmd (new-SqlCommand (string-append "select * from " s) sqlconn))) (execute-command cmd)) local s: STRING cmd: SQLCOMMAND Eiffel do s := "authors" create cmd("select * from " + s, sqlconn) cmd.ExecuteReader() end 26 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(); }; Mondrian Índice Introducción Plataforma .NET Arquitectura .NET Visual Studio .NET Conclusiones 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