你的位置:首页 > 软件开发 > ASP.net > 异构SOA之Asp.net实现(兼容dubbo)

异构SOA之Asp.net实现(兼容dubbo)

发布时间:2016-07-27 15:00:20
我们公司技术部门情况比较复杂,分到多个集团,每个集团又可能分为几个部门,每个部门又可能分为多个小组,组织架构比较复杂,开发人员比较多。使用的编程语言也有点复杂,主流语言有.net(C#)、Java、PHP等。所以SOA架构需要的是异构SOA。有的同学可能说这个简单吗?&l ...

我们公司技术部门情况比较复杂,分到多个集团,每个集团又可能分为几个部门,每个部门又可能分为多个小组,组织架构比较复杂,开发人员比较多。

使用的编程语言也有点复杂,主流语言有.net(C#)、Java、PHP等。

所以SOA架构需要的是异构SOA。

有的同学可能说这个简单吗?“把部门合并扁平化合并为一个团队,把语言统一一种,要么.net要么Java。”

其实这样的简单粗暴并不能很好的解决问题的

首先公司组织架构就是不能随便修改的,一个公司的组织架构就是服务于这个公司的经营理念和营销模式,技术部门是服务机构并不直接产生价值,技术部门架构和公司组织架构高度一致能带来业务的高效性。

其次多语言技术体系也有其可取性

      某个项目哪种语言能做的更快更好就用哪种语言

      哪种语言的程序员好招,就多招一些,能在各种技术方向的变化中立于不败之地

现在继续说SOA,说起公司对SOA选型对于.net程序员开始还是一件挺悲催的事情,因为公司选的是dubbo

dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,说它是个伟大的开源项目并不为过,在很多互联网公司都有运用。

但是,dubbo是个Java项目,.net程序员就悲催了

为了更好的支持多语言的异构系统现状,具体选型是dubbox+ZooKeeper+Thrift,其中Thrift是facebook开发的高效RPC,支持语言非常多, C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml等。

有了Thrift,.net程序员的“春天”是不是就来了呢?

还是挺悲催,Java程序员几乎不用写额外代码配置一下就可以调用SOA服务或者发布服务,.net程序员要自己维护和ZooKeeper的通信和Thrift通信及日志统计和报送。

.net程序员苦不堪言,有些人质疑SOA选型(对.net程序员不公平),有些人"喊"着要.net程序员使用其他架构单干 ......

后来机缘巧合,.net的SOA这个事情就落在我的身上

领导把这个任务交给我的时候,我轻松的说没问题,但是时间证明这个事情比我原来想象的复杂得多,我也走了一些弯路,有一些不太现实的想法,最终还是有了一个比较满意的结果


一、先说ZooKeeper

1、ZooKeeper是开源项目,其原理和作用这里不说,自行度娘

2、ZooKeeper的.net客户端使用nuget就可以安装使用

异构SOA之Asp.net实现(兼容dubbo)

ZooKeeper客户端库也有很多开源项目支持,我这里选的是Apache基金会的官方版本

3、本地启动一个ZooKeeper来测试

异构SOA之Asp.net实现(兼容dubbo)

 

ZooKeeper服务是Java开发的,ZooKeeper是个非常优秀的中间件,使用.net和Java调用区别并不大

这里查看ZooKeeper的工具也是Java开发的ZooInspector,正式环境我们有专门的后台来管理,本地调试ZooInspector就够用了。

 

二、再说Thrift

1、Thrift也是开源项目,其原理和作用这里不说,自行度娘

2、Thrift的.net库使用nuget就可以安装使用

异构SOA之Asp.net实现(兼容dubbo)

Thrift客户端库也有很多开源项目支持,我这里还是选Apache基金会的官方版本

 

三、使用.net开发一个HelloWord服务

1、按Thrift的IDL规范定义接口Thrift文件

namespace java SOATestnamespace csharp SOATestnamespace php SOATestservice HelloWorldService { string sayHello(1:string username)}

原标题:异构SOA之Asp.net实现(兼容dubbo)

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。