基于两种方式的cs架构开发技术

来源:互联网 发布:mysql insert多个字段 编辑:程序博客网 时间:2024/06/05 20:55

基于CS(client-server)软件架构的开发技术有很多种。比较常用的有:基于 socket的网络编程、RPC、基于Java技术的RMI(当然C#也有类似技术)、CORBA等。我们今天重点来介绍Socket编程技术和RMI技术。

Socket编程技术是消息驱动的,即:

客户端核服务端都要依靠消息进行通讯

客户端与服务器端都需要一个消息派遣器,将消息投递给具体的massage handler

客户端与服务器端利用massage handler进行事务逻辑处理

本质上讲:

Socket技术是:基于TCP协议的通讯,应用本身需要对消息进行序列化处理(即需要将消息输出到网络流中),客户端核服务器端需要实现商议好他们的通信协议即他们交互的信息格式,由于这是消息驱动模式,决定了这样的编程模式很难对象化。

而RMI技术使java程序之间能够灵活地,可扩展地进行通信,。通过对对对象序列化,使得java对象能够在不同JVM之间进行传递,结合RMI和对象序列化机制,就可以访问越过本地Java虚拟机 边界的对象以及数据。通过RMI,可以调用远程对象的远程方法,而通过Java对象序列化机制可以将对象传递给这些方法。

最基本的Java模型并没有提供将远程主机上的Java对象看作本地Java程序地址空间一部分的能力,而RMI祢补了这一不足。另外,由于Java与硬件平台无关的特性,无论是同构的系统还是异构的系统,RMI不需移植就可以顺利运行。
       RMI为Java平台的分布式计算提供了一个简单而直接的模型。因为Java的RMI技术是基于Java平台的,所以它将Java平台的安全性和可移植性 等优点带到了分布式计算中。RMI大大扩展Java的网络计算能力,它为编写基于分布式对象技术的企业级Internet/Intranet应用提供了强 大的系统平台支持。

 RMI技术比较socket的网络编程主要有以下几个方面:
        第一、.RMI是面向对象的,而后者不是。
        第二、.RMI是与语言相绑定的。比如当你使用Java RMI技术的时候,客户端与服务器端都必须使用Java开发。而socket的网络编程是使用独立于开发语言的,甚至独立于平台。基于socket的网络 编程,客户端与服务器端可以使用不同开发语言和不同的平台。
       第三、从网络协议栈的观点来看,RMI与socket的网络编程处于不同层次上。基于socket的网络编程位于TCP协议之上,而RMI在TCP协议之 上,又定义了自己的应用协议,其传输层采用的是Java远程方法协议(JRMP)。可见,在网络协议栈上,基于RMI的应用位置更高一些,这也决定了,与 socket的网络编程相比,RMI会丧失一些灵活性和可控性,但是好处是它带给了应用开发者更多的简洁,方便和易用。比如:如果你用的是RMI,你不需 要关心消息是怎么序列化的,你只需要像本地方法调用一样,使用RMI。代价是:应用开发者无法很好地控制消息的序列化机制。


原创粉丝点击