Build distribution applications by remoting(HTTP)
Introduction
.NET Remoting provides a rich and extensible framework for objects living in different AppDomains, in different processes, and in different machines to communicate with each other seamlessly. .NET Remoting offers a powerful yet simple programming model and runtime support for making these interactions transparent. In this article we will take a look at the different building blocks of the Remoting architecture, as well as explore some of the common scenarios in which .NET Remoting can be leveraged.
In this sample describes how to build a distribution application on remoting by HTTP protocol.
using the code
Server
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
//using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Channels.Http;
namespace RemotingSamples
{
public class HelloServer
{
public static void Main(string [] args)
{
//TcpServerChannel channel = new TcpServerChannel(8085);
HttpServerChannel channel = new HttpServerChannel(8086);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Hello),"Hi",WellKnownObjectMode.SingleCall);
System.Console.WriteLine("Click <enter> to quit...");
System.Console.ReadLine();
}
}
}
Client
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
//using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Channels.Http;
namespace RemotingSamples
{
public class Client
{
[STAThread]
public static void Main(string [] args)
{
//ChannelServices.RegisterChannel(new TcpClientChannel());
ChannelServices.RegisterChannel(new HttpClientChannel());
//tcp://localhost:8085/Hi
Hello obj = (Hello)Activator.GetObject(typeof(Hello),"http://localhost:8086/Hi");
if (obj == null) System.Console.WriteLine("Could not find machine!");
else Console.WriteLine(obj.Greeting("John"));
}
}
}
interface:
using System;
namespace RemotingSamples {
public interface IHello {
String HelloMethod(String name);
}
public class HelloServer : MarshalByRefObject, IHello {
public HelloServer() {
Console.WriteLine("HelloServer actived");
}
public String HelloMethod(String name) {
Console.WriteLine("Hello.HelloMethod : {0}", name);
return "hello," + name;
}
}
}
Attachment
-
Remoting Http Mode.zip
(37.41 KB)
-
3-12-2008 15:24, Downloaded count: 50