客户机/服务器框架原理

 为什么会有客户机/服务器框架?

在Symbian OS中,服务器通常用来管理对系统资源和服务的共享访问,它可以服务于多个客户会话,并且可以并发地被运行于不同线程的客户所访问。
服务器保护了系统的完整性,将服务器放在一个单独的进程中,系统可以保证具有不良行为的客户无法破坏由服务器所管理的资源。
服务器可以用来提供异步服务,因为它们运行在与其客户分离的线程中。

客户和服务器是如何协作的?

Symbian OS服务器必定运行在与其客户分离的线程中,而且通常还运行在与其客户分离的进程中。所有客户和服务器的互操作都是通过消息传递或线程间数据传递来完成的。
一个典型的服务器具有相关的客户空间代码来格式化请求,进而通过内核将其传递给服务器。例如,文件服务器(efile.exe)的“客户”事实上只是文件服务器客户空间实现的客户,而“客户”链接到提供客户空间实现的DLL(efsrv.dll)上。如下图所示:

 

客户和服务器如何通信?

一个客户和一个服务器运行于不同的线程中,甚至是不同的进程中。当运行于不同进程时,它们无法相互访问彼此的虚地址空间,所以它们使用消息传递协议进行通信,这种通信称为会话。会话是由内核创建的,同时内核还在所有的C/S通信中充当媒介。
如果客户和服务器位于不同进程中,它们之间的数据传递要使用进程间通信(IPC),在这种情况下,参数数据绝不能用简单C++指针来传递。因为它们不能访问彼此的地址空间,作为直接访问的替代方案,因为内核可以访问任意进程,所以由内核根据服务器的要求执行数据访问。
当请求完成时,服务器会通过向客户线程发送请求信号量来告诉客户请求已经被完成,同时返回一个32位的完成结果值。

客户机/服务器框架使用了哪些类?

RSessionBase,客户空间类,它表示了与服务器的会话。
RMessage,客户请求及其所承载的数据在服务器空间的表示。
DSession,一个用于表示客户机/服务器会话的内核类。
CSharableSession,服务器空间内会话表示的抽象基类。
CServer,派生自CActive的抽象基类,它被用于在服务器空间内从内核接收客户请求,并将它们导向恰当的会话。

 

http://hi.baidu.com/richiechyi/blog/item/70e47a54c7ec3250574e00a8.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值