荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: playboy (冷冷的太阳), 信区: Program
标  题: Win32 行程通讯的观念与技术(2)
发信站: BBS 荔园晨风站 (Mon Mar 20 15:46:36 2000), 转信

IPC基本概念的讨论
    总结来说,上述的例子是两个行程彼此利用RegisterWindowMessage()注册所
得的编号对送讯息,并且利用讯息的长短叁数进一步协定通讯的内容与细节,对於
资料量比较大的资料则使用WM_COPYDATA。
    眼尖的读者在检视TwinApp时也许会察觉到一些DDE的影子。当然,比起DDE来说
,TwinApp范例程式的讯息沟通模型实在阳春,缺点也不少。不过我的用意本来就不
在於一开始就写一个大型程式出来吓唬人;相反的,我打算提供一个简单的例子,并
且从这个例子支解出有关行程通讯的几个重要的观念与特性,这些特性并不是TwinApp
所独有的,对於其他IPC机制的讨论也有相同的价值,等我们扣紧了对IPC的感觉,再
陆续讨论其他 Win32 平台所支援的IPC机制。
    话说内行的看门道,外行的看热闹。或许我算不得顶尖高手,但至少应该比看热
闹的多看出一些东西来吧! :p 观察TwinApp这个例子 --

行程之间彼此有共同的通讯协定
通讯的仅限於单机,稍候讨论的IPC有些则是可以跨过机器边界甚至网域.
Process在行程通讯中的角色扮演
    一般来说,叁与IPC的行程可以归类成Client与Server两类,所谓的Server指的是
提供服务的行程;Client指的是使用或向Server要求服务的行程。
    真实的世界中,人的角色扮演是随情境而变的。我们会是别人的子女,但也同时是
别人的爸妈; 即使同样是夫妻,居家生活与外出场合的行为表现也有差异。界定某一程
式是Client与Server的角色端视当时的情况而定并非绝对的。举例来说,文书处理软体
可能向试算表要求库存统计资料,此时试算表扮演的是Server的角色,但在试算表向库
存管理系统索取统计资料的场合,试算表则是Client。
    以我们的第一个例子TwinApp来说,彼此既接收讯息,同时也主动发出讯息。既可以
是Client也可以是Server,没有明显的主从之别,对於这样的情况,有一个专有名词叫
「对等模式?(Synchronous)与非同
步(Asynchronous)在IPC中是一个非常重要的论题,有必要先对这两个名词先做说明:
    假设程序A呼叫程序B时,若是A先暂停一直等到程序B结束返回後再继续程序A的下一
动作,我们称其为同步(Synchronous);另一种情况是 -- 如果A呼叫B之後,不等B执行完
#绫疚纳葬嵝鹗龅腗ailSlot。

资料的可视性与安全性
    交换的资料在行程之间当然必须是可见的,TwinApp是用WM_COPYDATA交出资料。
IPC有些技术是可以让行程共同存取资料的,稍候我们在 Shared memory 时将有讨论.

是否需要有视窗或者纯Console Application也能应用.
    TwinAPP是以SendMesasage()送出讯息,这表示需要有视窗才行得通。如果你设
计的是纯Console Mode 的应用程式,那麽,选用不需要视窗Handle也行得通的IPC机
制(例如pipe)会比较适合。

--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.90]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店