Download Diapositiva 1

Document related concepts
no text concepts found
Transcript
Sistemas de Operación III (CI-4822)
Prof.: Yudith Cardinale
.net
mono
Rafael Chacón
Juan Danilow
Jesús De Abreu
Alexis Dos Santos
David Zaragoza
Martes, 06 de Febrero de 2006
DCOM
DCOM
Historia
(Distributed Component Object Model)
• OLE (Object Linking and Embedding) 1990.
• COM aparece en el mercado en 1993.
• En 1996, Microsoft lanza DCOM.
• COM y DCOM se convierten en parte fundamental de
Windows NT 4.0 y Windows 2000.
• Microsoft cede el control de COM y DCOM a Active X.
• El código fuente está disponible, sin cargo alguno, por
parte de The Open Group (OSF y X/open)
• DCOM fue uno de los mayores competidores de CORBA
Bases y Principios
DCOM
(COM)
(Distributed Component Object Model)
• COM es una Plataforma utilizada por
Microsoft que permite la interacción entre
componentes dentro de un ambiente
Windows.
• COM permitía a Objetos cruzar los límites de
Procesos y Lenguajes, mas no era capaz de ir
más allá de Objetos Locales.
Funcionamiento
(COM)
DCOM
(Distributed Component Object Model)
DCOM
DCOM
(Distributed Component Object Model)
• DCOM surge como una extensión para redes de
Component Objetc Model (COM) de Microsoft.
• Engloba un conjunto de conceptos e interfaces
de programas de Microsoft, en el cual Objetos de
un Cliente pueden solicitar servicios a un objeto
remoto en un Servidor de forma transparente al
Programador.
• Microsoft suele referirse a DCOM como:
“COM con un gran cable”
Funcionamiento
DCOM
(Distributed Component Object Model)
DCOM construye una capa que permite hacer llamadas de
procedimientos a Objetos remotos (ORPC) basado en la
arquitectura de un RPC normal.
Funcionamiento
DCOM
(Distributed Component Object Model)
DCOM
Características
(Distributed Component Object Model)
• El modelo COM permite gran flexibilidad binaria y
adaptabilidad entre distintas configuraciones y
máquinas.
• Seguridad basada en certificados de Internet.
• Funciona en LAN, WAN e Internet.
• DCOM soporta múltiples protocolos de comunicación,
TCP/IP, UDP/IP, IPX/SPX, entre otros.
• Debido a que las especificaciones de los métodos están
en binario, permite la integración de diversos lenguajes
como C++, Java, Visual Basic.
DCOM
Características
(Distributed Component Object Model)
•
•
•
Sincronización: A través del Mecanismo de Transacciones.
Replicación: Responsabilidad del Programador.
Tolerancia a Fallas: Es soportada por medio de
Transacciones automáticas.
Variable
Descripción
REQUIRES_NEW
Se crea una nueva transacción en cada invocación del objeto.
REQUIRED
Se crea una nueva transacción si no existe una creada por el
llamador.
SUPPORTED
Solo se une a una transacción en la que participe su llamador.
NOT_SUPPORTED
Nunca se une a una transacción.
DISABLE
Nunca se une a una transacción, aunque se indique que lo haga.
• Seguridad: Niveles de acceso según el Servicio.
• Escalabilidad: Puede escalar hasta grandes piscinas
de Servidores y/o robustecerse en las funcionalidades.
Ventajas
DCOM
(Distributed Component Object Model)
• Fácil uso.
• Rapidez en el desarrollo.
• Reducción de los Costos de Integración.
• Reducción de los Costos de Mantenimiento.
• DCOM se basa en la tecnología de componentes más
usada actualmente.
• DCOM es la mejor tecnología de redes para llevar la
tecnología de componentes al Internet.
• DCOM es una tecnología abierta que se ejecuta en
diversas Plataformas.
DCOM
Desventajas
(Distributed Component Object Model)
• Problemas de seguridad.
• IDL sin herencia de Objetos.
• Poco soporte para hilos.
• No tiene Servicio de Nombres.
• Futuras aspiraciones.
Importancia
DCOM
(Distributed Component Object Model)
• COM consiste en un Framework maduro, estable y de
especificación abierta, que ha sido ampliamente
probado y adoptado en todo el Mundo como un
estándar por defecto.
• COM provee el más rico conjunto de Herramientas de
Desarrollo entre una amplia gama de vendedores.
• COM está en uso en más de 150 millones de
Sistemas alrededor del Mundo.
.net
Microsoft .NET Framework es un
componente de Software que se integra con
Microsoft Windows y provee una amplia gama
de código prefabricado que incluye soluciones
para el desarrollo de:
Interfaces, Acceso a Datos, Criptografía,
Aplicaciones Web, Algoritmos Numéricos y
Comunicaciones en Redes.
Componentes
Está incluido en un paquete llamado Microsoft
.NET Framework 3.0 que consta de los
siguientes componentes:
• .NET Framework
• Microsoft Windows Communication
Foundation
• Microsoft Windows Presentation Foundation
• Microsoft Windows Workflow Foundation
.net
Está compuesto fundamentalmente por:
The Common Language Runtime: es conocido
como CLR y lo podemos ver como un agente que
maneja la Ejecución del Código y provee Servicios
importantes como: Mecanismos de Seguridad,
Manejo de Memoria, Gerencia de Excepciones,
Manejo de Hilos y Comunicación Remota.
The .NET Framework Class Library: esta es la
librería que provee todas las funcionalidades que
se nombraron el la definición del Framework.
Características
• Provee un ambiente de desarrollo consistente
(Ejecución remota o local con Código distribuido a
través de la red).
• Minimiza los conflictos de versiones entre Códigos
Distribuidos.
• Trata de eliminar los problemas de poco
desempeño de ambientes interpretados.
• La comunicación está construida sobre todos los
estándares de la industria para dar la mayor
compatibilidad con otras Plataformas.
Objetivos de
Diseño
• Interoperabilidad.
• Independencia del Lenguaje.
• Seguridad.
• Desarrollo Simple.
Arquitectura
• Common
Language
Infrastructure (CLI)
• Assemblies
• Metadata
• Base Class Library
(BCL)
Arquitectura
Arquitectura
Arquitectura
Arquitectura
Seguridad
.NET tiene su propio Sistema de Seguridad con
dos características principales: Code Access
Security (CAS), y validación y verificación. Code
Access Security se basa en la lectura de datos
sobre un determinado Assembly.
NOTA: Un Código ‘inseguro’ sólo se ejecutará si
tiene el permiso 'skip verification’, el cual
generalmente lo tienen códigos instalados en la
máquina local.
CAS
•
Regularmente la seguridad está centrada en el usuario (“¿Quién es y
qué quiere?”).
•
En un entorno orientado a componentes, la seguridad debe llegar
más lejos.
•
Algunas preguntas:
•
¿Quién generó los ensamblados?
•
¿Seguro que hacen lo que se espera de ellos?
•
¿Harán algo más?
•
¿Tenemos garantías de que el código no se aumenta los
privilegios?
•
¿Cómo controlamos si accede a recursos locales o remotos
fuera más allá de lo establecido?
CAS
• CAS es un mecanismo que provee el CLR, centrando la
seguridad en el código.
• Para invocar determinadas tareas los ensamblados deben
tener otorgados ciertos permisos.
• Acceder a un recurso, invocar un método de otra clase, etc.
• El CLR está notificado de los permisos otorgados a los
ensamblados.
• En ejecución debe constatar la identidad de los mismos, en
base a evidencias que estos presentan:
•
Sitio de procedencia, certificados digitales, firma
(strong name) de autencidad del proveedor, etc.
.NET vs.
Java y J2EE
.NET y J2EE tienen muchas similitudes:
• Corren usando el Modelo de Pagina Virtual
• Corren usando su propio byte-code intermedio.
•
Microsoft - Microsoft Intermediate Language (MSIL)
•
Sun - Java bytecode
• En .NET, el byte-code siempre es JIT-compiled
• En Java, puede ser JIT-compiled o interpretado
• .NET corre sobre Plataforma Microsoft Windows
• Java es Multiplataforma
.NET vs.
Java y J2EE
• .NET es código cerrado
• La implementación de Java está en transición a GPL
(incluyendo librerías, compilador, la Máquina Virtual)
• .NET se creó en base al soporte de varios Lenguajes de
Programación, siendo su Plataforma target Microsoft
Windows.
• La Plataforma Java se creó inicialmente para soportar sólo
el Lenguaje Java sobre varios Sistemas Operativos, bajo el
slogan:
"Write once, run anywhere."
Críticas
• Incompatibilidad entre Versiones. Es decir, arreglo de
Componentes de Seguridad, Códigos Obsoletos, etc.
• Necesita más recursos, que otras aplicaciones con acceso
directo a los recursos locales.
• Se encuentra muy ligado a Microsoft Windows (Crítica de
Negocio).
• La Ingeniería-Inversa es mucho más factible sobre este tipo
de Frameworks, lo cual obliga a muchos programadores a
hacer uso de códigos ofuscados.
• Problemas de Licencia.
• C#
• Visual Basic
.NET
• C++/CLI
• J#
• JScript .NET
• Windows
PowerShell
• IronPython
• F#
Non-Microsoft .NET
Microsoft .NET
Lenguajes
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Ada
APL
Boo
C
Chrome
COBOL
Component Pascal
Borland Delphi Studio
Eiffel
Forth
FORTRAN
Java
Haskell
KPL
Lexico
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Lisp
Mercury
Modula-2
Mondrian
Nemerle
Oberon
Perl
Prolog
Ruby
PHP
RPG
Scala
Scheme
Smalltalk
Standard
¿Qué es mono?
Es un proyecto liderado por Novell
(Anteriormente por Ximian) para crear un
conjunto de herramientas compatibles con el
estándar ECMA, incluyendo un compilador de
C# y el Common Language Runtime.
Mono se puede usar en Linux, FreeBSD,
Unix, Mac OS X, Solaris y Windows.
¿Por Qué mono?
What does the name
"Mono" mean?
Mono is the word for
'monkey' in Spanish. We
like monkeys.
http://www.mono-project.com/FAQ:_General
Historia
• La compañía Ximian (Ahora parte de
Novell) se interesó en la tecnología
.NET en diciembre 2000.
• Al carecer de suficiente personal, se
formó el proyecto Open Source
mono, en 2001. mono 1.0 fue
lanzado en Junio 2004.
Componentes
Consiste de tres grupos:
Core Components
• mono/Linux/GNOME Development Stack
• Microsoft Compatibility Stack
Componentes
Core Components
Incluye el compilador de C#, la Máquina
Virtual y las “base class libraries”.
Esto permite a mono proveer una máquina
Virtual CLI.
Componentes
Mono/Linux/GNOME Development Stack
Son herramientas para el desarrollo de
software en Linux, incluyendo GTK# y
conectividad a Bases de Datos (MySQL,
Oracle, Microsoft SQL Server, entre otros).
Componentes
Microsoft Compatibility Stack
Provee herramientas para convertir
aplicaciones .NET de Windows al ambiente
Linux. Incluyendo ADO.Net, ASP.Net y
Windows Forms.
Arquitectura
Arquitectura
Class Library
La class library proporciona un conjunto de
herramientas para el desarrollo de
aplicaciones.
Estas herramientas están escritas
principalmente en C#, pero gracias al
“Common Language Specification” se pueden
utilizar en cualquier lenguaje .NET.
Arquitectura
Namespaces
Son un mecanismo para agrupar clases
similares en una estructura jerárquica. Esto
evita conflictos de nombres.
Esta estructura se implementa utilizando
palabras separadas por puntos.
Arquitectura
Assemblies
Es el empaquetamiento físico de las class
libraries.
Los namespaces están generalmente
distribuidos en varios Assemblies.
Arquitectura
CLS (Common Language Specification)
Define una interfaz al CLI (Common
Language Interface).
El compilador de mono genera una imagen
que cumple con CLS en Common
Intermediate Language. mono runtime toma
esta imagen y la ejecuta.
MonoDevelop
Software
• f-spot: Una aplicación de
Administración de Imágenes,
diseñada para GNOME.
• Muine: Un Reproductor de
Audio para GNOME. Muine está
escrito en C# usando mono y
GTK#.
f-spot
Muine
Distribuciones
Debian (a partir de etch)
Gentoo 2006.1
Fedora Core 5
FreeBSD 4.7
SuSE Linux Enterprise
Sabayon 2.65.1
Desktop 10
Xandros 4.1
openSuSE 9.1
Arch Linux
Ubuntu 6.10 (edgy)
PCLinuxOS (desde apt)
Mandriva 2007
… y Patentes
Las partes del Microsoft Compatibility Stack
(ADO.Net, ASP.Net) no pertenecen al
estándar .Net, sino que fueron desarrolladas
por Microsoft sobre .Net.
Novell firmó un acuerdo con Microsoft para no
ser demandado por infracción de Patente. Sin
embargo esto sólo aplica a desarrolladores y
usuarios de Novell.