云计算 频道

WCF与Hprose的Azure云端对决

  Visual Studio集成

  WCF和Visual Studio都是微软的,因此WCF跟Visual Studio有很密切的集成。但是WCF对于Azure平台来说目前支持的还不算完善,虽然在Visual Studio中可以很方便的开发在Azure运行的WCF服务,但是Azure因为有提供负载平衡的功能,这个功能反而会给WCF服务部署带来了一点小问题,需要使用一个hotfix并且手动修改配置才能完成服务的正确发布。

  Hprose没有提供任何跟Visual Studio的集成,但是因为其本身使用已足够简单,不像WCF那样对服务需要进行单独编写,Hprose可以直接发布现成的类、对象和方法,甚至连.NET中内置的类和方法都可以直接发布为服务。在Visual Studio中发布Azure上的Hprose服务不会有负载平衡带来的问题。

  客户端比较

  WCF客户端采用代码生成方式工作,可以使用命令行来生成客户端代理类,也可以在Visual Studio提供的环境下采用图形界面来生成客户端代理类,尤其是在Vistual Studio下使用非常方便。

  Hprose客户端采用动态调用方式工作,无需生成客户端代理类,但也可以通过自己编写服务接口方式来创建客户端服务代理对象。自己编写服务接口的方式当然没有像WCF那样自动生成一样方便,但却提供了更多的灵活性,例如你可以在客户端定义跟服务器端服务不同的接口,只要类型相容,就可以正常调用,而不像WCF那样对接口类型有严格的约束。

  WCF和Hprose都支持同步调用和异步调用。WCF的异步调用采用Begin、End方式,从功能上来说比较强,可以异步调用转同步,但缺点是使用比较繁琐,对于构建复杂应用来说比较困难。而Hprose的异步调用采用回调方式,从功能上来说不如WCF的异步调用那样强大,没有异步调用转同步的功能,但是优点是使用比较方便,尤其是配合匿名函数或者Lambda表达式使用时,能够充分发挥必包的优势,可以轻松构建复杂应用。

  在Azure平台上,不论是WCF客户端还是Hprose客户端都可以使用。尤其是Hprose客户端不但可以在Azure的.NET应用中使用,也可以在Azure支持的其它语言中使用,例如直接在javascript中使用Hprose可以轻松实现跨域调用,配合jquery就可以实现很酷炫的ajax应用了。

  总结

  Windows Azure Platform为我们提供了一个很棒的云计算平台,除了可以在上面部署微软自己的WCF服务以外,对其它语言和服务也提供了很好的支持,如果要基于微软的云计算平台开发跨语言跨平台服务的话,Hprose为我们增加了另一种选择。

0
相关文章