在现在的服务程序设计中,分布式技术是用的越来越多了,本文就对我接触到的几种语言的分布式开发技术做一个介绍。
首先分布式是一种将大规模运算分布到多台机器上运行的方法,这样多台计算机可以同时进行计算进而提高计算效率,所以在使用分布式的时候我们需要提前分析需求和系统情况,得到效率低的根因在哪,如果是由于连接路径过长导致的慢使用分布式未必有效果。
既然分布式是一种思想,那么使用什么编程语言开发就不是一定的了,现在很多语言都是可以支持分布式开发,还有出现了一些可以跨平台,跨语言的中间件可以支持分布式的开发。
java
java是现在web编程十分常用的语言,而大型web站点设计也是经常会使用分布式设计来解决大并发和性能上的问题。
在面向对象语言中现在使用的最多的远程调用方式是远程对象代理了,java是使用RMI来进行远程对象代理的。RMI已经为我们封装好了底层的对象代理,使我们可以比较简单的使用对象代理来实现分布式。具体的使用方法可以参考下面链接的文章中的方法。
http://www.cnblogs.com/dennisit/archive/2013/03/19/2969175.html
C#.net
微软在分布式程序设计上也是经历了长时间的发展,有COM+,Remoting,WebService,WCF这些技术。
COM+,Remoting是相对较早期的技术现在用的开始少了起来。
WebService是一个平台独立的,松耦合的,自包含的、基于可编程的web的应用程序,所以其实java也是可以使用WebService的进行分布式程序设计的。
WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合。具体的使用方法可以参考下面链接的文章中的方法。
http://www.cnblogs.com/artech/archive/2007/02/26/656901.html
顺便提一下从VS的工具(Tools)菜单,选择“WCF Service Configuration Editor”,这个工具中有选择TCP,http,Pipe,MSMQ等选项的一步,这一步则是配置的WCF的访问方式,而具体的业务实现代码不需要跟着配置成TCP或者http等方式而改变,从这里可以看出WCF是对于这些技术整合的特性。
C++
使用过C++的人应该知道,C++标准库没有直接提供分布式开发的这些好用的技术,但是不代表C++不能用来进行分布式开发。
从分布式的思想我们可以知道,假使我们通过tcp协议将我们要运行的计算从机器A传到另一台机器B上,让B运算完成之后将运算结果传回A也一样可以说是分布式。但是这种方式就比较繁琐了中间还会遇到一些通常的问题,比如鉴权机制,对象序列话,反序列化等等问题。好在一种叫做中间件的东西已经给我们提供了这些东西的基础。使得我们不用去重复开发这些分布式开发总会用到的东西。CORBA是一个很成熟的中间件项目。具体的使用方法可以参考下面链接的文章中的方法。
http://blog.csdn.net/ljg888/article/details/6457138