实现远程调用对象,跨进程访问对象,可实现分布式
首先给服务端和客户端 nuget Hprose
可使用tcp和http两种调用方式
服务端
using Hprose.Server;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace rpc
{
class TestService
{
public string Hello(string name)
{
return "Hello " + name + "!";
}
}
class Program
{
static void Main(string[] args)
{
// HproseHttpListenerServer server = new HproseHttpListenerServer("http://localhost:2012/");
Hprose.Server.HproseTcpListenerServer server = new HproseTcpListenerServer("tcp://localhost:2012");
TestService ts = new TestService();
server.Add("Hello", ts);
// server.IsCrossDomainEnabled = true;
//server.CrossDomainXmlFile = "crossdomain.xml";
server.Start();
Console.WriteLine("Server started.");
Console.ReadLine();
Console.WriteLine("Server stopped.");
}
}
}
客户端
using Hprose.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace client
{
public interface ITestService
{
string Hello(string name);
}
class Program
{
static void Main(string[] args)
{
//HproseHttpClient client = new HproseHttpClient(" http://localhost:2012/");
HproseTcpClient client = new HproseTcpClient("tcp://localhost:2012/");
//client.KeepAlive = true;
Console.WriteLine(client.Invoke("Hello", new Object[] { "bbbb" }));
Console.WriteLine(client.Invoke("hello", new Object[] { "cccc" }));
//接口方式调用
ITestService testService = client.UseService<ITestService>();
Console.WriteLine(testService.Hello("这是接口方式调用"));
//
Console.ReadLine();
}
}
}