Download presentation
Presentation is loading. Please wait.
Published byOpal Whitehead Modified over 9 years ago
1
.Net Remoting Pooja Panjala 06/17/10
2
Agenda What is.net Remoting? Explanation of terms Architecture Implementation of Remoting Sample example.net Security
3
What is Remoting in.Net? It is a mechanism for communicating between objects which are not in the same process. Enables different applications located on same computer or different computer to communicate with objects. Provides a framework that allows objects to interact with each other across application domains..net Security
4
Remoting Components A remotable object: Which is an object that contain some properties and methods located in one application domain and you need to call its methods or properties from another application domain or process. A host application: This is the host of the remotable object also called as the server application. The main task of this host is to listen to requests for the hosted remotable object. A client application: This is the application which makes requests for the remotable object..net Security
5
Remote Objects It is an object outside the application domain of the caller application. Any object can be changed into a remote object by deriving it from MarshalByRefObject, or by making it serializable either by adding the [Serializable]tag or by implementing the ISerializable interface..net Security
6
Types of.NET Remotable Objects Single Call object: Service one and only one request coming in. Singleton Call object : Service multiple clients and is useful when data needs to be shared explicitly between several clients. Client-Activated object : Richer than singleton in many aspects as they can store the state information between method calls for its specific client..net Security
7
Proxy object A proxy object is an object that acts in place of some other object. Created when client activates a remote object. It is an instance of the TransparentProxy class, directly available to the client to communicate with the remote object..net Security
8
Marshalling Specifies how a remote object is exposed to the client application. It is the process of packaging an object access request in one application domain and passing that request to another domain..net Security
9
Two methods Marshalling objects by value ▫analogous to having a copy of the server object at the client. ▫Marshal by value classes must either be marked with the [Serilaizable] attribute in order to use the default serialization, or must implement the ISerializable interface. Marshalling objects by reference ▫analogous to having a pointer to the object. ▫Marshal by reference classes must inherit from System.MarshalByRefObject..net Security
10
Channels It is a mechanism by which a stream of bytes is sent from one point to the other. Two pre-defined.NET Remoting channels existing in System.Runtime.Remoting.Channels are TCPChannel and the HTTPChannel..net Security
11
Serialization formatters.NET Remoting uses serialization to copy marshal-by-value objects, and to send reference of objects which are marshal-by-reference, between application domains. Formatters are used for encoding and decoding the messages before they are transported by the channel..net Security
12
Two types of formatters binary(System.Runtime.Serialization.Formatters.Binary) ▫Use binary encoding where performance is critical ▫Small size SOAP (System.Runtime.Serialization.Formatters.Soap) ▫Use XML encoding where interoperability with other remoting frameworks is essential..net Security
13
Architecture Client’s call proxy to remote object method invocation on remote object Message encoded Call sent to the server using channel.net Security
14
Implementation of Remoting Create a Remotable Object MyRemotableObject.cs namespace RemotableObjects { public class MyRemotableObject : MarshalByRefObject { public MyRemotableObject() { } public void SetMessage(string message) { Cache.GetInstance().MessageString = message; }.net Security
15
Create a Server to Expose the Remotable Object namespace RemotableObjects { public class frmRServer : System.Windows.Forms.Form, IObserver { private System.Windows.Forms.TextBox textBox1; private MyRemotableObject remotableObject; private System.ComponentModel.Container components = null; public frmRServer() { InitializeComponent(); remotableObject = new MyRemotableObject(); // using TCP protocol TcpChannel channel = new TcpChannel(8080); ChannelServices.RegisterChannel(channel); RemotingConfiguration.RegisterWellKnownServiceType( typeof(MyRemotableObject),"HelloWorld", WellKnownObjectMode.Singleton); RemotableObjects.Cache.Attach(this); }
16
.net Security Create a Client to Use the Remotable Object namespace RemotableObjects { public class frmRCleint : System.Windows.Forms.Form { private System.Windows.Forms.TextBox textBox1; MyRemotableObject remoteObject; private System.ComponentModel.Container components = null; public frmRCleint() { InitializeComponent(); // using TCP protocol // running both client and server on same machines TcpChannel chan = new TcpChannel(); ChannelServices.RegisterChannel(chan); // Create an instance of the remote object remoteObject = (MyRemotableObject) Activator.GetObject( typeof(MyRemotableObject),"tcp://localhost:8080/HelloWorld"); } private void textBox1_TextChanged(object sender, System.EventArgs e) { remoteObject.SetMessage(textBox1.Text); }
17
.net Security Step 1: Creating the Server Server.cs using System; using System.IO; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels.HTTP; namespace Server { public class ServiceClass : MarshalByRefObject { public void AddMessage (String msg) { Console.WriteLine (msg); } } public class ServerClass { public static void Main () { HTTPChannel c = new HTTPChannel (1095); ChannelServices.RegisterChannel (c); RemotingServices.RegisterWellKnownType ("Server","Server.ServiceClass","ServiceClass",Server WellKnownObjectMode.Singleton); Console.WriteLine ("Server ON at 1095"); Console.WriteLine ("Press enter to stop the server..."); Console.ReadLine (); } } }
18
.net Security Compile this file using csc /r:system.runtime.remoting.dll /r:system.dll Server.cs This will generate a executable Server.exe, run this file and on the console u should see Server ON at 1095 Press enter to stop the server...
19
.net Security Step 2: a) Creating Client Proxy soapsuds -url:http:// :1095/ServiceClass -oa:Server.dll This will create a proxy called Server.dll which will be used to access the remote object
20
.net Security Step 2: b) Creating Client Code TheClient.cs using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels.HTTP; using Server; public class TheClient { public static void Main (string[] args) { HTTPChannel c = new HTTPChannel (1077); ChannelServices.RegisterChannel (c); ServiceClass sc = (ServiceClass) Activator.GetObject (typeof (ServiceClass),http:// :1095/ServiceClass); sc.AddMessage ("Hello From Client"); } }Service
21
.net Security Compile it using csc /r:system.runtime.remoting.dll /r:system.dll /r:Server.dll TheClient.cs The output will be TheClient.exe, run it and check the server console on Machine 1, you will see "Hello From Client".
22
References http://msdn.microsoft.com/en- us/library/2e7z38xb(v=VS.71).aspxhttp://msdn.microsoft.com/en- us/library/2e7z38xb(v=VS.71).aspx http://www.codeproject.com/KB/IP/Net_Remo ting.aspxhttp://www.codeproject.com/KB/IP/Net_Remo ting.aspx.net Security
23
Thank you!.net Security
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.