hprose for C#使用教程
Hprose (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#
更新于:1个月前相关文章
- .NET9 C# 13 有哪些新特性?
- C#中的String和StringBuilder的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- C# Const 和 ReadOnly的区别
- C# 使用Barrier进行多线程同步
- C#发送邮件代码简洁示例(附源码下载)
- C# Word转换成Pdf的方法
- c#使用MongoDB开发LBS应用
- c#实现与Java无差异的GZip压缩和GZip解压缩
- .NET Core c#使用SkiaSharp压缩裁切图片去除水印
- c# decimal保留2位小数 并向下舍入
- .NET Core c#使用SkiaSharp压缩图片
- C#复制文件到指定文件夹
- c#获取枚举的Description
- c#读取pdf里的表格
- c# HttpClient下载图片
- c#使用HtmlAgilityPack编辑html并保存
- c#获取文件夹所有文件列表
- c# int数值转enum枚举
- c#获取枚举的描述Description和摘要Summary