Presentation 23 .NET Remoting Introduced

Slides:



Advertisements
Similar presentations
Message Passing Vs Distributed Objects
Advertisements

What is RMI? Remote Method Invocation –A true distributed computing application interface for Java, written to provide easy access to objects existing.
RPC Robert Grimm New York University Remote Procedure Calls.
May 2, 2006Shawn Mulkey - EECS Distributed Computing & Object Oriented Middleware: Part 2 Presented By Shawn Mulkey.
Copyright © 2002 Landl Software, Inc. All Rights Reserved. Twin Cities.NET Users Group Next Meeting - Thursday, April 4, 2002 A Look Inside Reflection.
.NET Remoting in Delphi and C# Alain “Lino” Tadros President & CEO Falafel Software Inc. ComponentScience Inc. BORCON 2004.
.Net Remoting Pooja Panjala 06/17/10. Agenda What is.net Remoting? Explanation of terms Architecture Implementation of Remoting Sample example.net Security.
15-May-15 RMI Remote Method Invocation. 2 “The network is the computer” Consider the following program organization: If the network is the computer, we.
C# and Windows Programming Application Domains and Remoting.
.NET REMOTING CertSIG Tom Perkins. FUNDAMENTALS Distributed Applications Process A Process B Process C Objects can communicate across process boundaries.
Author: Bill Buchanan. Authentication (to identify the clients of your application) Authorization (to provide access controls for those clients) Secure.
.NET Remoting. .Net Remoting Replaces DCOM (Distributed Component Object Model – a proprietary Microsoft technology for communication among software components.
Windows Communication Foundation and Web Services.
1 Advanced Programming Topics - II Objectives:  Background  Remoting  Types of remoting  Marshalling  Farmatters  Channels.
Remote Method Invocation Chin-Chih Chang. Java Remote Object Invocation In Java, the object is serialized before being passed as a parameter to an RMI.
DISTRIBUTED FILE SYSTEM USING RMI
EEC-681/781 Distributed Computing Systems Lecture 5 Wenbing Zhao Department of Electrical and Computer Engineering Cleveland State University
Introduction to Remote Method Invocation (RMI)
.NET Deployment Matt Smouse CSE775 – Distributed Objects Spring 2003.
Task Bag A Distributed System using the.NET Framework and Remoting Frank McCown Old Dominion University Spring 2005 CS 875 Distributed Systems - Final.
.NET Remoting Architecture. Slide 2 CITE 4420.NET Remoting Topics Remoting Boundaries Crossing the Boundaries Distributed Applications Marshalling Channels.
.Net Remoting. 2 Distributed Computing under.Net In.Net, there are three levels of access to distributed computing machinery: In.Net, there are three.
1 Java Programming II Java Network II (Distributed Objects in Java)
Distributed Communication via ASP.Net Web Services and.Net Remoting By Richard King.
Presentation: Other Object Oriented Middlewares. Outline Web services Java RMI.NET Remoting WCF For each technology Compare: heterogenity (platform, OS,
Cli/Serv.: rmiCORBA/131 Client/Server Distributed Systems v Objectives –introduce rmi and CORBA , Semester 1, RMI and CORBA.
Lecture 15 Introduction to Web Services Web Service Applications.
15 - RMI. Java RMI Architecture Example Deployment RMI is a part of J2SE (standard edition), but is used by J2EE) A J2EE server is not nessesary for using.
11 Web Services. 22 Objectives You will be able to Say what a web service is. Write and deploy a simple web service. Test a simple web service. Write.
Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited
Presentation 23.NET Remoting Introduced. Ingeniørhøjskolen i Århus Slide 2 af 20 Outline.NET Framework introduced.NET Remoting strategies Architecture.
Spring/2002 Distributed Software Engineering C:\unocourses\4350\slides\DefiningThreads 1 RMI.
RMI remote method invocation. Traditional network programming The client program sends data to the server in some intermediary format and the server has.
RMI Remote Method Invocation Distributed Object-based System and RPC Together 2-Jun-16.
 Remote Method Invocation  A true distributed computing application interface for Java, written to provide easy access to objects existing on remote.
.Net Remoting The Other RPC Architecture Doug Gregory October 27, 2003.
Presentation 23:.NET Remoting Introduced Objektorienteret Middleware.
.NET Mobile Application Development XML Web Services.
1 Nordjyllands Erhvervakademi Net Remoting Architecture Marshalling –Marshalling By Reference(MBR) –Marshalling By Value(MBV) Activation by MBR.
Presentation 24 Ultra Simple.NET Remoting to CORBA bridge.
Netprog Java RMI1 Remote Method Invocation.
Topic 5: CORBA RMI Dr. Ayman Srour
Introduction to Web Services Srinath Vasireddy Support Professional Developer Support Microsoft Corporation.
.NET Remoting. Remoting Introduction The process of programs or components interacting across certain boundaries either different processes or machines.
Presentation: Advanced AXIS: Deployment Descriptors and Advanced Types.
CORBA Antonio Vasquez, John Shelton, Nidia, Ruben.
Java Distributed Computing
Windows Communication Foundation and Web Services
Jim Fawcett CSE775 – Distributed Objects Spring 2003
.NET Remoting Priyanka Bharatula.
Outline SOAP and Web Services in relation to Distributed Objects
Java Distributed Computing
Broker in practice: Middleware
Remote Method Invocation
Advanced .NET Programming II 10th Lecture
What is RMI? Remote Method Invocation
Matt Smouse CSE775 – Distributed Objects Spring 2003
Distribution of functionality Webservice using WCF
Outline SOAP and Web Services in relation to Distributed Objects
Windows Communication Foundation and Web Services
Remote Method Invocation
Knowledge Byte In this section, you will learn about:
Programming Models for Distributed Application
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Chapter 42 Web Services.
Java Remote Method Invocation
Matt Smouse CSE775 – Distributed Objects Spring 2003
Jim Fawcett CSE791 – Distributed Objects Spring 2002
Matt Smouse CSE775 – Distributed Objects Spring 2003
Presentation transcript:

Presentation 23 .NET Remoting Introduced

Outline .NET Remoting strategies Architecture Remoting object types Activation Lifetime Deployment Example application High-level introduction only!

.NET Framework Remoting strategies Two .NET Remoting strategies: Web services for inter-business purposes Is heterogeneous across platforms and languages Supported by the .NET compact framework Relies primarily on HTTP/SOAP protocols, but may be adapted for any type of protocol Heterogeneous Is slow when used with HTTP/SOAP .NET Remoting for intra-business purposes Is only heterogeneous across CLS languages Not supported by the .NET compact framework Relies on either HTTP/SOAP or TCP/Binary protocols, but may be adapted for any type of protocol Is fast when used with TCP/Binary Only heterogeneity within .NET runtime In many ways very similar to Java RMI in Java 5

Simplified .NET Remoting Architecture The Remoting System wraps most of the marshalling/unmarshalling work for you – like Java/CORBA Using the classic Proxy pattern Channel: Takes a stream of data and transports it to another computer or process: Default: TcpChannel & HttpChannel

The Remoting Architecture Proxy created dynamically by the CLR. Creates a message to the server All server objects must be of type MarshalByRefObject or an descendant hereof Dispatch to server object Serializes the message into a stream (SOAP or binary) Deserializes the message Optional extra handling Writes the stream to the wire, e.g. TCP or HTTP Developers are free to implement new channels or replace sink elements

Remotable Objects in .NET Remoting Marshal-by-reference objects By-reference – no state is transferred MarshalByRefObject Corresponds to CORBA Interface IDL and Java RMI Remote objects (UnicastRemote objects) Proxy created Marshal-by-value objects By-value – complete object is serialized and transferred Implements ISerializable or decorated with Serializable Attribute [Serializable] Very similar to Java RMI Serializable objects Some similarity with CORBA valuetypes (Objects by Value)

Activation All server objects needs to be activated before a client proxy may access it Two types of activation Server Activation (SAO) Activated when first client request arrives at server Singleton: only one server instance for all clients Single-call: a new server object pr. client request Lifetime is defined by server Client Activation (CAO) Activated by the client with the CreateInstance method on the Activator object Server object only associated with creating client Lifetime is controlled by client (using leases) Very different semantics than CORBA & RMI – closer to Web services (application, session, request scope) especially SAO

Lifetime management .NET Remoting uses leases for lifetime management All server objects has a lifetime lease – a time-to-live Lease manager controls the server object leases If expired – check all sponsors (clients) performs garbage collection on server objects In DCOM reference counting & pinging In CORBA ORB vendor specific Often implemented as “time since last request” In Java RMI uses leases (similar to .NET Remoting). Clients auto-update lease at 50% Web services Toolkit specific (HTTP primitives: Application, Session, Request) Application scope = runs for-ever / singleton

Configuration Configuration: Two types of configuration Need to inform runtime which servers are available and at which address (URL) Two types of configuration Programmatic (shown in example next) Configuration file Web.config (e.g. with IIS) or Machine.config

Deployment Server objects may be deployed as: Windows Form application Windows Console application Windows Service Internet Information Server deployment no need for a server bootstrapping application

Development Steps – Remoting vs. CORBA & Java RMI .NET Remoting Design J2SE JDK CORBA: IDL Interface Definition CLS Interface Start with Server Interface Coding: JAVA RMI: JAVA interface Implicit stub gen. Server Stub Generation Client Stub CORBA: IDL Java RMI: rmic CLS (C# …) RMI: JAVA C++, Java … Server Coding Client CLS (C# …) C++, Java … ORB Remoting Configuration with CLR rmiregistry Server Registration

Making the HelloWorld application Using Microsoft Visual Studio .NET may of course be done with .NET Framework alone Make Client & Server solutions Server: IHelloWorld.cs interface HelloWorld.cs class implementation Server.cs class implementation for boot-strapping Add Reference to assembly System.Runtime.Remoting Client Must add IHelloWorld.cs Client.cs class implementation

The IHelloWorld interface The “IDL” of .NET Remoting – similar to Java RMI using System; namespace RemotingHelloServer { // IHelloWorld is the interface for the HelloWorld server class. // It is the interface that is shared across the Internet public interface IHelloWorld string sayHello(string name); }

HelloWorld Implementation code using System; using System.Runtime.Remoting; namespace RemotingHelloServer { // HelloWorld is a server object that is available // "by-reference". It contains a constructor and a the // "sayHello" method taking a string parameter "name" public class HelloWorld : MarshalByRefObject, IHelloWorld private string greeting; public HelloWorld() greeting = "OOMI Christmas greetings from the server to: "; } public string sayHello(string name) return (greeting + name); A remote object “by-reference” that implements the IHelloWorld interface Implementing the sayHello method Like in Java RMI (& CORBA) – we need to have an implementation of the interface

Server code – Console bootstrapping using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; namespace RemotingHelloServer { public class Server [STAThread] static void Main(string[] args) //Create a TCP channel TcpChannel theChannel = new TcpChannel(8085) /* Register the channel so that clients can * connect to the server */ ChannelServices.RegisterChannel(theChannel); //Register the service on the channel RemotingConfiguration.ApplicationName = "HelloWorld App"; RemotingConfiguration.RegisterWellKnownServiceType( typeof(HelloWorld), "HelloWorld App", WellKnownObjectMode.SingleCall); /*Start the server and keep it running so that clients * can connect to it. May be aborted by keypress */ System.Console.WriteLine("Press Enter to end this server process"); System.Console.Read(); } Like in Java RMI (& CORBA) – we need some bootstrapping code – a server process This may become a Windows NT service or a simple application, e.g. a console or Windows Form application Register the channel on port 8085 Register the object

Client code – Console bootstrapping … include all the Remoting stuff namespace RemotingHelloClient { public class Client [STAThread] static void Main(string[] args) TcpChannel theChannel = new TcpChannel(); ChannelServices.RegisterChannel(theChannel); /* Activate the server object. Activation will bring * the server object to life, and create a proxy * stub class of the HelloWorld. In fact, as this is a * server-activated application, the call to the * server is NOT performed now, but instead waits until the * first request. It is thus the server who performs the * activation. This is the "Lazy-activation pattern" known * from e.g. CORBA */ IHelloWorld helloWorld = (IHelloWorld) Activator.GetObject( typeof(RemotingHelloServer.IHelloWorld), "tcp://localhost:8085/HelloWorld App"); System.Console.WriteLine("Please enter your name and press Enter"); string name = System.Console.ReadLine(); //Make the call string greeting = helloWorld.sayHello(name); System.Console.WriteLine("We recieved from server: "+greeting); System.Console.WriteLine("Press Enter to end"); System.Console.Read(); } Optional (may be done implicitly) Create Proxy Call via Proxy object