2017-03-07
4791 0Hprose (High Performance Remote Object Service Engine) 是一个商业开源的新型轻量级跨语言跨平台的面向对象的高性能远程动态通讯中间件。它支持众多语言,例如 C++,.NET,Java,Delphi,Objective-C, ActionScript,JavaScript,ASP,PHP,Python,Ruby,Perl 等语言,通过 Hprose 可以在这些语言之间实现方便且高效的互通。
本文简单的给出了hprose的服务端和客户端代码示例。
Hprose for C#提供了可以直接使用的二进制文件,针对不同版本的.NET 都有相应的编译好的版本。
.NET Framework 1.0~3.5 的二进制版本包含有 System.Numerics.dll、Hprose.dll 和 Hprose.Client.dll 这三个文件。而.NET Framework 4.0 的二进制版本只包含 Hprose.dll 和 Hprose.Client.dll 这两个文件。
目前基本都使用VS2015 .NET4.5以上版本了,所以下面的示例中只使用针对.NET Framework 4.0及以上版本的Hprose.dll 和 Hprose.Client.dll 这两个文件。
创建Hprose服务器
1、首先打开VS创建一个控制台程序。
2、在项目中引用Hprose.dll。
3、编写代码:
namespace HproseServer { class Program { static void Main(string[] args) { string api = "http://localhost:2010/"; HproseHttpListenerServer server = new HproseHttpListenerServer(api); server.Add(new Hello()); server.Start(); Console.WriteLine("服务已启动!"); Console.ReadLine(); } } public class Hello { public string SayHello(string str) { return "Hello!" + str; } } }
运行结果如下:
接着打开浏览器,在地址栏中输入:http://localhost:2010/,然后回车,如果看到如下页面就表示我们的服务发布成功啦。如图所示:
创建Hprose客户端
客户端可以通过 Invoke 方法动态调用服务,也可以通过接口方式来调用,下面我们来分别介绍这两种方式。
示例代码中分别使用了动态调用和接口方式调用两种方式:
namespace HproseClient { class Program { static void Main(string[] args) { string api = "http://localhost:2010/"; HproseHttpClient client = new HproseHttpClient(api); //通过Invoke方法动态调用 string result1 = client.Invoke("SayHello", new object[] { "paul" }); var result2 = client.Invoke("SayHello", new object[] { "mary" }); Console.WriteLine(result1); Console.WriteLine(result2); //通过接口方式调用 IHello hello = client.UseService(); string result3 = hello.SayHello("peter"); Console.WriteLine(result3); Console.ReadLine(); } } public interface IHello { string SayHello(string str); } }
运行结果如下:
如果您曾经用过 WCF、.NET Remoting 或者其它的远程调用技术的话,您可能会发现,Hprose比那些远程调用技术要方便容易的多。这里的 IHello 接口在服务器端并没有实现,只是有相同的方法,但在客户端仍然可以直接通过接口进行调用。
在Hprose中,你不但可以通过接口方式来调用 C#服务器提供的服务,同样可以调用非C#服务器提供的服务。
以上只是非常简单的一个调用Demo,更加详细内容请下载官方文档:hproseforC#