Webcast – Hprose for Cpp 预览
文章分类:C++, 应用, 新闻 作者:叶孤枫 发表时间:2010年07月22日 1:42 上午
Hprose for Cpp 还未正式发布,在这里我先介绍下它的一些特性并通过一些例子来进行演示。对于想要支持的特性或者当前存在的一些问题,希望您能够提供宝贵的意见。
由于视频的声音太小和本人并不标准的普通话,可能对练习您的听力水平有所帮助,如果您以后英语听力考试得满分的话请别忘了感谢我。
Hprose for Cpp 还未正式发布,在这里我先介绍下它的一些特性并通过一些例子来进行演示。对于想要支持的特性或者当前存在的一些问题,希望您能够提供宝贵的意见。
由于视频的声音太小和本人并不标准的普通话,可能对练习您的听力水平有所帮助,如果您以后英语听力考试得满分的话请别忘了感谢我。
在andot的鼓厉下我也来分享一下如何使用Hprose加快网路游戏开发的心得报告。
讲将了字符串手工拼接与Hprose在网路游戏开发上的比较。
云平台是什么?
各大厂商解释不一,云计算的书里写的更是云里雾里,但是如果你实际用过现在各大云平台提供商所提供的云计算平台以后,你就可以明白的得出结论,云平台就是高级版本的虚拟主机。
云平台可比虚拟主机高级多了,怎么会是虚拟主机呢?
这是所有人在看到上面结论后的第一个反应。是的,这个反应很正确,但我也没说云平台就是普通的虚拟主机啊,我说的是云平台是高级版本的虚拟主机,当然是比普通的虚拟主机高级多了。
下面我们来看看云平台和虚拟主机有哪些本质的相同点:
以上这些相同相似点足以说明云平台就是高级版本的虚拟主机。
这个问题回答完之后,后面的问题就简单了。
问:云计算平台有前途吗?会有人用吗?
答:只要虚拟主机有人用,云计算平台就会有人用,相同的本质更好的服务,用户没有理由不选择云计算平台。
问:那么云计算平台能干些什么呢?
答:以前虚拟主机能干的,在云平台上都能干。但是云平台提供了更多的计算资源和存储资源,只要你有钱,不用担心会像虚拟主机一样因为一时流量太大就会被封掉。
问:那怎样才能花最少的钱又充分利用起云平台来呢?
答:最好的答案就是在云平台上使用 Hprose,它可以以最小的流量提供最快的服务,在云平台上,跟使用 SOAP 或者 REST 方式来提供 Web 服务相比,使用 Hprose 来提供 Web 服务,你只需要 1% 都不到的投入。所以,Hprose 是您使用云计算平台的最好搭档。
前天,微软知名 MVP,MSDN 特邀讲师衣明志先生在MSDN上做了一次关于 Hprose for .NET 的 Webcast,今天又在他的大力支持下,让我来做了一次关于 Hprose for Java 的 Webcast,这是我第一次通过这种形式来演讲,跟衣明志先生比起来,我的水平差太多了,下面是这次的讲座的视频和教程实例。
注意:该实例所包含的 hprose 为试用版本,仅供学习、测试与评估,不可用于实际生产项目和商业产品中,否则,将被视为侵权行为。
前天,微软知名 MVP,MSDN 特邀讲师衣明志先生在MSDN上做了一次关于 Hprose for .NET 的 Webcast,现在该课程的录像和课件已经放出来了,希望了解 Hprose 或者分布式开发的同志们有时间的话,不妨看看这个视频。
该视频的MSDN Webcast在线点播地址为:MSDN Webcast – 在ASP.NET 4中使用Hprose开发分布式应用
Hprose是适用于不同终端以及PC和手持设备互联网门户的套件,可以通过Hprose平台来获取在线内容,连接不同设备, 沟通用户以及实时分享生活。

Hprose 服务器可以很容易和 Sina App Engine、EC2、Google App Engine、微软 Azure 云计算平台等运营商的云架构整合。
关于 XML Web Service、WCF 在异步调用上的问题,这里我就不举例说明了,有兴趣的朋友可以看一下这两篇文章:
陈老师在这两篇文章中的指出的问题实际上是同一个问题,那就是 XML Web Service 和 WCF 客户端在异步调用时,使用的是委托事件方式,而在一个客户端上的多次异步调用会共享这些委托事件,所以就造成了文章中指出的问题,以至于不得不每个异步调用都要重新创建一个客户端对象,或者用线程池(或线程)来将同步调用转换为异步调用(然后又不得不自己解决异步调用线程与主线程之间界面元素共享同步的问题)。所以说这个问题的根源在于 XML Web Service 和 WCF 客户端的异步调用设计,这种基于委托事件的设计注定了这个问题的存在。
那下面我们来看一下 Hprose 客户端在处理异步调用时,是怎样实现同一个客户端上的并发进行多次异步调用的吧。
首先 Hprose 的客户端对于服务器是无限制的,不论是 .NET 服务器还是其它语言实现的服务器,对于客户端来说调用起来没有任何差别,因此这里我们为了方便大家,直接使用 Hprose 官方提供的测试用服务器来作为这个例子中的服务器,其地址为(注意最后的斜杠一定要加):
http://www.hprose.com/example/
下面我们把重点放在客户端上,同样我们来举两个例子,一个是控制台,一个是图形界面,以分别对应上面两篇文章。
先来看简单的控制台例子:
using System;
using Hprose.Common;
using Hprose.Client;
namespace ConsoleApplication1 {
public interface IHello {
void Hello(string name, HproseCallback1<string> callback);
}
class Program {
static void Main(string[] args) {
IHello client = new HproseHttpClient("http://www.hprose.com/example/").UseService<IHello>();
for (int i = 0; i < 10; i++) {
client.Hello("World", (result) => {
Console.WriteLine("{0}:{1}", DateTime.Now, result);
});
}
Console.Read();
}
}
}
结果完全正确,没有 XML Web Service 中存在的问题。原因很简单,在 Hprose 中回调方法是通过参数传入异步调用的,而不是通过委托事件,因此每一次异步调用都拥有自己独立的回调方法,而不是共享同一个客户端上的回调委托事件,因此完全没有问题。
那这种通过参数传入的方式是否支持给一个异步调用指定两个或两个以上的回调方法呢?答案是支持的,看下面的例子:
using System;
using Hprose.Common;
using Hprose.Client;
namespace ConsoleApplication1 {
public interface IHello {
void Hello(string name, HproseCallback1<string> callback);
}
class Program {
static void Main(string[] args) {
IHello client = new HproseHttpClient("http://www.hprose.com/example/").UseService<IHello>();
HproseCallback1<string> callback = (result) => {
Console.WriteLine("{0}:{1}", DateTime.Now, result);
};
callback += (result) => {
Console.WriteLine("{0}", result);
};
for (int i = 0; i < 10; i++) {
client.Hello("World", callback);
}
Console.Read();
}
}
}
结果仍然完全正确,而且从交错显示的结果很明显可以看出是异步调用来。
好,我们下面再来看图像界面程序:
using System;
using System.Windows.Forms;
using Hprose.Common;
using Hprose.Client;
namespace WindowsFormsApplication1 {
public interface IHello {
void Hello(string name, HproseCallback1<string> callback);
}
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
IHello client = new HproseHttpClient("http://www.hprose.com/example/").UseService<IHello>();
private void button1_Click(object sender, EventArgs e) {
client.Hello("World", (result) => {
MessageBox.Show(result);
});
}
private void button2_Click(object sender, EventArgs e) {
client.Hello("World", (result) => {
MessageBox.Show(result);
});
}
}
}
结果还是完全正确,不需要任何特殊处理,也不会遇到 XML Web Service 和 WCF 客户端所存在的问题。在 Hprose 中已经将界面元素共享同步的问题在内部解决了,因此不管是 WinForm、WPF 还是控制台都可以采用相同的方式来编写回调方法,完全不必再自己进行复杂的界面元素同步操作了。
综上所述,Hprose 跟 XML Web Service、WCF 比起来,Hprose 的异步调用设计更加合理,更加灵活,也更加方便。
Hprose 从诞生到现在已经有一年多了,在大家持续地关注和我们不断地努力下,Hprose 从一个想法变成了一个真正的产品,迈出了商业化的第一步。这与大家的支持是分不开的,在这里我们要对一直关注和支持 Hprose 发展的朋友们表示由衷的感谢!
Hprose 并不是凭空诞生的,它起源于 PHPRPC。而正所谓青出于蓝而胜于蓝,现在,不管是从运行效率还是开发效率,不管是从支持语言的深度还是广度、不管是从产品的构架还是功能上来说,Hprose 都已经远胜于 PHPRPC 数倍乃至数十倍。
PHPRPC 最初只是我的个人作品,当时设计它的想法很简单,就是用来取代 SOAP 和 WebService。
PHPRPC 一经推出便受到了来自全国各地乃至海内外各界朋友的关注,我也由此结识了现在与我一起创业的伙伴们。随着 PHPRPC 的发展壮大,用户越来越多,我们也逐渐认识到了 PHPRPC 的一些不足之处。因此我们开始了 Hprose 的设计与开发。
在 Hprose 设计之初,我们就已经有了 PHPRPC 三年多的开发经验,因此这让我们一开始就有了一个好的起点。另外,通过 PHPRPC 三年多的开发和维护,我们也认识到,仅靠一两个人的力量是无法以免费开源方式将一个好的项目长久维持下去的。俗话说得好,金钱不是万能的,但没有钱是万万不能的。如果想要让 Hprose 健康长久的发展下去,成为一个能够服务于大众的优秀开源项目,必须要走商业化的道路。Hprose 走到今天,也证明了我们当时选择商业开源这条路是正确的!
两天前,Hprose 新的官方网站上线了。今天,Hprose 官方网站的博客也开张了。我们会在这里跟大家一起分享 Hprose 成长过程当中的点点滴滴,例如: 今天 Hprose 又有了哪些新功能、新特性,如何用 Hprose 更快更好完成工作的独家秘技,甚至我们的新想法、新创意都会与大家一起分享。
我们的路会一直走下去的,感谢一路上有您的陪伴!