Download Microsoft .NET

Document related concepts
no text concepts found
Transcript
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