返回首页


摘要
本文提供有关进程间通信方法的概述。
当你需要实现应用程序之间的的通信,通常要考虑到以下方法。文件传输
应用程序通过文件交流。生产应用写数据读取文件来获取数据文件和消费应用。
它的优点是,应用程序是松散耦合。他们没有了解对方的内部实现。他们只需要知道文件格式和文件的位置。
另一方面,写入和读取文件是不会这么快。因此,文件不能被更新非常频繁(例如每秒多次),但通常他们的时间间隔更新,例如:每小时。然而,这会导致延误和阅读文件的应用程序必须经常处理的事实,数据不是- GT日期;同步问题。数据库存储
应用程序通过数据库共享数据通信。共享的数据被写入到数据库中,从那里可以被其他应用程序读取。
它的优点是该数据库的所有数据(例如,通过SQL)提供了一个统一的访问。因此,应用程序没有处理不同的文件格式。此外,交易机制有助于保持数据一致。
的缺点是,使用该数据库的应用程序依赖于的数据模式。因此,在数据结构(数据模式)的变化可能会导致在使用数据库的应用程序的变化。
也表现可问题 - 尤其是,如果多个应用程序频繁读取和更新相同的数据或数据库是分布在不同地点。远程过程调用
应用程序进行通信通过公开的功能。应用提供的功能,采用了中间件(如W​​CF)的隐藏的进程间通信。其目的是远程调用本地电话一样。沟通通常是同步的。
这种方法的优点是应用程序提供了一个指定的功能和封装(隐藏)数据。
缺点是,加上通信的应用程序。例如:调用应用程序假定对方实现了特定接口。如果您添加了一个新的方法的接口,那么所有的客户端应用程序受到影响,必须更新和重新编译。
的错觉,远程调用本地电话一样,可以混淆。问题是,进程间通信(特别是在网络上)慢得多和失败往往比简单的本地电话。为了解决这些分歧,你可能会面临要解决的问题,通常不存在于本地电话。例:quot;多久可以调用被阻塞,等待响应?你需要某种机制来取消呼叫"?
quot;如果连接被中断?不要你的需要来重新连接和恢复调用quot;?
因此,虽然的远程程序呼叫的方法提供了一个是一个简单的本地通话两个应用程序之间的通信的抽象,你可以不遵循这个想法,因为如果你做的不是要到有麻烦,你不能忽略的进程间通信的细节。消息
应用程序通过消息通信。通信的应用程序使用一个发送和接收消息的中间件(面向消息的中间件)。发送应用程序的消息通过通道发送和接收应用程序侦听通道接收传入的消息。通讯通常是异步(即发送应用程序不会被阻止,直到该消息是由接收应用程序处理)。
它的优点是通信的应用程序是松散耦合的。他们没有了解对方的内部实现。他们只需要知道消息的格式和发送/接收消息的通道。
(如果添加了一个新的消息,客户端应用程序不会受到影响。)
另一个优点是,服务的应用程序提供了一个指定的功能和数据。
(请求消息调用一个功能和响应消息中返回结果的封装(隐藏)。)
消息通信价格是异步编程实现。异步编程是比较困难的,可以添加一些复杂的实施。结论
这是不可能的说,一个传播方式是好的,另一种是不好。都有其自身的利弊。的一点就是要选择最适合特定项目的方法(或相结合的办法)。的通信需求,不应该被低估,但他们不应该与花哨的技术工程。另外一个趋势总是采用同样的方法不工作 - 如果首选的方法不适合其使用的原因解决方法和额外的复杂性。
具体来说,我有一种感觉的互动交流,有一种倾向,喜欢远程过程调用。但是,如果耦合或同步方法应该是有问题的的,那么消息可能是一个更好的选择。{S0}

回答

评论会员:vachi 时间:2012/01/26
我发现你的文章非常有用。感谢
评论会员:兆焦耳查普曼 时间:2012/01/26
。点和写得好
评论会员:bikkanati 时间:2012/01/26
非常翔实
但是,它会更好,如果一些例子为每个通信{​​BR}类型补充
评论会员:。 时间:2012/01/26