Distributed Objects Technologies: .NET and CORBA

advertisement
Distributed Objects Technologies:
.NET and CORBA
Naim R. El-Far, PhD Candidate
TA for SEG3202 Software Design and Architecture with N. ElKadri (Summer 2005)
Tutorial 4 of 4 – 24/6/2005
About Today’s Material
Some of today’s material has been
adapted from presentations by D. Schmitt
of Microsoft, and Dr. I. Stoica of UC
Berkeley.
In Perspective
1. Client/Server Architecture (Tutorial 1)
2. N-Tier Architecture (Tutorial 2)
3. Concept of Distributed Objects (Tutorial
3)
4. Technologies for Distributing Objects
Java RMI  J2EE (Tutorial 3)
.NET (Today’s tutorial)
CORBA (Today’s tutorial)
.NET Enterprise Vision
Users
Any device,
Any place,
Any time
Roles/Experiences
Get the right info
To the right user
At the right time
Customer
Operations
Sales
Supply
Engineering
XML Web Services
Scheduling
Authentication
Notification
Integrate and
orchestrate business
applications and
processes
Back Office
Heterogeneous application
and server infrastructure
ERP & Billing
Customer
Plant
Service
Operations
What is .NET?
A generic term for the MS vision
The successor to Windows DNA
Sometimes applied to product names
Such as Windows .NET Server
A specific software framework
Includes a common runtime
Common across OS and dev language
Includes baseline dev tools in an SDK
Includes powerful dev environment
Visual Studio .NET
.NET Workings
An evolution from COM/DCOM  Windows DNA  .NET
 Platform-independent
 Internet integration
 Security
Primary Components
 Common Language Infrastructure (CLI):
specifications for a runtime environment, including a
common type system, base class library, and a machineindependent intermediate code known as the Common
Intermediate Language (CIL) – MSIL.
 Common Language Runtime (CLR): Runtime
environment to run any CIL code that adheres to CLI
specs usually through JIT compilation.
.NET Workings
 All CIL is self-describing through .NET metadata.
 Language implementation  CIL  CLR  MSIL  .NET
languages
 .NET assemblies, DLL or EXE for Win32. The .NET unit of
deployment, versioning and security (64 bit public/private key).
 All code is compiled, not interpreted
 Converted to native machine code at install time (via NGEN) or run time
(via JIT compiler)
 Static code management
 Versioning, localizing, and signing
 Configurable assembly resolver
 Global assembly cache (GAC)
 Dynamic code management
 Memory allocation with garbage collection
 Lifecycle management via reference tracking
 Thread pooling
.NET Workings
 Fine-grained code access security
 Augments OS security (user credentials)
 Ensures that code only performs operations allowed by policies
set by user or administrator
 Based on code source, publisher signature, and other evidence
 Flexible deployment
 Simple XCOPY (since not bound to Windows registry)
 Windows installer
 Auto-deploy (aka no-touch or zero-impact)
 Flexible remoting
 Includes XML/SOAP and binary
 Remoting model is easily extended
 Integrates with web services
Compilation & Execution
Assembly
Unit of deployment,
similar to DLL or EXE
with added metadata
Compilation
Source
Code
Language
Compiler
Saved in cache
An assembly can also be
pre-compiled as part of
deployment
Execution
Native
Code
JIT
Compiler
Code
Metadata
Before
installation or
the first time
each method is
called
CLR Internals
Base Class Library
Thread Manager
COM Marshaler
Type Checker
Exception Manager
Security Services
Debug Services
IL to Native
Compilers
Code
Manager
Class Loader
Garbage
Collector
.NET Structure: CLR and Win32
Services
C#
VB
ASP.NET
ADO.NET
Same class library
across all programming
languages
J#...
Enterprise
Services
CLR
MSMQ
COM+
Active
Directory
IIS
WMI
Connects .NET to COM+
for transactional
components and other
enterprise services
Connects .NET to data
providers, including XML
documents
Win32
Provides WebForms for
thin clients, plus web
services via HTTP
.NET Framework: More generally
.NET Framework
Internet and Web Services
Framework Features
Other
Framework
Extensions
Windows
Framework Extensions
Standard .NET
Framework
Windows
Other OS
Application Reach across Devices
.NET Mobility Framework
Internet and Web Services
Framework Features
Device Vendor
Framework
Extensions
Windows CE
Framework Extensions
.NET Compact
Framework
Windows CE
Other OS
Application Reach across Devices
.NET on non-MS Operating Systems
Microsoft’s Shared Source Initiative:
 Rotor: Microsoft shared-source version of .NET
for FreeBSD
 Mono: Novell (formerly by Ximian) open-source
version of .NET for GNU/Linux, UNIX, Mac OS
X, and Windows based computers.
 Portable .NET: is part of the DotGNU project.
Introduction to CORBA








Common Object Request Broker Architecture (CORBA)
A standard for software componentry.
Created and controlled by the Object Management Group (OMG).
Defines APIs, communication protocol, and object/service information
models to enable heterogeneous applications written in various languages
running on various platforms to interoperate  platform and location
transparency for sharing well-defined objects across a distributed computing
platform.
CORBA "wraps" code written in some language into a bundle containing
additional information on the capabilities of the code inside, and how to call
it. The resulting wrapped objects can then be called from other programs (or
CORBA objects) over the network.
CORBA can be considered as a machine-readable documentation format.
Interface Definition Language (IDL) to specify the interfaces that objects will
present to the world.
A "mapping" from IDL to a specific implementation language like C++ or
Java. Standard mappings exist for Ada, C, C++, Lisp, Smalltalk, Java, and
Python. There are also non-standard mappings for Perl and Tcl
implemented by ORBs written for those languages.
High-Level Overview of CORBA
 CORBA applications are composed of objects.
 For each object type you define an interface in OMG IDL.
 CORBA = Separation of interface from implementation.
 Well-defined, strict interfaces.
 Hidden implementation.
 Clients access objects only through their advertised interface.
CORBA Architecture
Server
Client
Java Object
C++ Object
Skeleton
Stub
Object Adapter
ORB
IIOP
ORB
Stub
Provides interface between client object and
ORB
Marshalling: client invocation
Unmarshalling: server response
Server
Client
Java Object
C++ Object
Skeleton
Stub
Object Adapter
ORB
IIOP
ORB
Skeleton
Provides iterface between server object and
ORB
Unmarshaling: client invocation
Marshaling: server response
Server
Client
Java Object
C++ Object
Skeleton
Stub
Object Adapter
ORB
IIOP
ORB
(Portable) Object Adapter (POA)
Register class implementations
Creates and destroys objects
Handles method invokation
Handles client authentication and access control
Server
Client
Java Object
C++ Object
Skeleton
Stub
Object Adapter
ORB
IIOP
ORB
Object Request Broker (ORB)
 Communication infrastructure sending messages
between objects
 Communication type:
GIOP (General Inter-ORB Protocol)
IIOP (Internet Inter-ORB Protocol) (GIOP on TCP/IP)
Server
Client
Java Object
C++ Object
Skeleton
Stub
Object Adapter
ORB
IIOP
ORB
CORBA Object
Server
CORBA
Interoperable Object Reference
Object
Interface
IDL
C++/Java
Implementation
Servant
Example of CORBA Services
Naming: Keeps track of association between
object names and their reference. Allows ORB
to locate referenced objects
Life Cycle: Handles the creation, copying,
moving, and deletion objects
Trader: A “yellow pages” for objects. Lets you
find them by the services they provide
Event: Facilitates asynchronous
communications through events
Concurrency: Manages locks so objects can
share resources
Query: Locates objects by specified search
criteria
Remote Invocation in CORBA
Oversimplification:
 Client first obtains its object reference (E.g. Naming Service and the Trader
Service).
 Remote invocation = local invocation + substituting the object reference for
the remote instance.
 ORB examines the object reference and discovers that the target object is
remote  routes the invocation out over the network to the remote object's
ORB.
Remote Invocation in CORBA
In more detail:
 IDL  the client knows exactly which operations
it may invoke, what the input parameters are,
and where they have to go in the invocation
 IIOP (ORBs may use other protocols)
 Although the ORB can tell from the object
reference that the target object is remote, the
client can not.
Object Invocation Models
Invocation models supported in CORBA
Request type Failure semantics
Description
Synchronous
At-most-once
Caller blocks until a
response is returned or an
exception is raised
One-way
Best effort delivery
Caller continues immediately
without waiting for any
response from the server
Deferred
synchronous
At-most-once
Caller continues immediately
and can later block until
response is delivered
Interoperability
Allow multi-vendor ORB implementations to
communicate with each other
General Inter-ORB Protocol (GIOP) message
types
Message type
Originator
Description
Request
Client
Contains an invocation request
Reply
Server
Contains the response to an invocation
LocateRequest
Client
Contains a request on the exact location of an object
LocateReply
Server
Contains location information on an object
CancelRequest
Client
Indicates client no longer expects a reply
CloseConnection
Both
Indication that connection will be closed
MessageError
Both
Contains information on an error
Fragment
Both
Part (fragment) of a larger message
Object References
The organization of an IOR with specific
information for IIOP
Secure Object Invocation in CORBA
CORBA Application
1) Define interface using IDL
2) Compile interface
3) Implement interface
4) Instantiate server:
• Register object as a CORBA object
5) Instantiate client:
• Invoke CORBA object
• Example using a Java client and server
J2EE vs. .NET
 Cola vs. Pepsi
 Are you starting from scratch?
 Are you migrating from a legacy system?
 One day, J2EE and .NET will become “legacy”
systems.
 Past, Present, and Future.
 Web Services  Body Organs
 For more details (a little out of date by
comprehensive:
http://www.theserverside.com/articles/article.tss?
l=J2EE-vs-DOTNET)
Where does CORBA fit it?
Purpose of CORBA
IIOP, a pillar of CORBA
J2EE support for IIOP
.NET support for IIOP (IIOP.NET, Janeva)
CORBA, J2EE, and .NET: like everything
else, the mix depends on your purpose,
the past, the present, and the future of
your system.
Download