论文部分内容阅读
随着计算机网络技术的普及,分布式应用迅速发展,迫切要求网络中不同的主机相互协作,互相访问对方的服务和数据,远程调用机制逐步成为解决这种问题的主要手段。 系统的松耦合性是软件开发追求的终极目标,这种观念在远程调用的设计中体现的尤为明显。因为降低服务实现方和调用方的耦合度,可以明确上层服务开发人员的角色,使他们不需考虑另一方的设计模式,从而降低开发的难度。同时降低服务对不同平台(包括操作系统,机器类型和编程语言等)的依赖性,可以使开发人员自由灵活的在系统中部署服务。 本文比较了当前多种远程调用机制在各个方面的耦合程度,分析了它们的优缺点。设计了从四个方面来降低远程调用系统耦合度的方案,并给出了实现方法。 第一个方面是通过分离服务的接口和实现来降低系统的耦合程度。采用静态调用协议,用IDL语言来描述服务接口,这使得服务具体实现的修改不会影响客户端的调用操作; 第二个方面是降低对服务部署环境的依赖性。它的目的是实现服务的部署与底层的操作系统、机器类型和编程语言的无关性,从而增强代码的可移植性。在本系统中采用将平台差异封装到通信代理的方式来实现。针对目前区分操作系统的方法难度较高的问题,设计了结合人工识别和代码区分的改进方法; 第三个方面是降低服务双方时间上的依赖程度,这主要是指客户端可以异步地调用服务器端的服务,而不需要阻塞等待回应。本系统中实现了异步回调的模式; 第四个方面是降低服务双方空间上的依赖程度,这主要是通过动态绑定客户和实现服务的进程来实现。在本文中是通过重定位方式和“监控心跳”来实现的这种服务的无缝接管。 最后,分析了进一步降低服务双方耦合性所需要做的工作。