Messaging

 消息传送

消息传送架构构建在消息传送服务器上(Message Server)。在使用消息传送服务前,必须创建会话类CMsvSession实例,通常情况,一个这样的实例就足够了。下面介绍一下会话类CMsvSession:

CMsvSession提供了客户端和Message Server之间通信的通道。在Message Server有事件发生时,通过CMsvSession可以使客户端得到通报。

在初始化MTM或CMsvEntry前,客户端需要使用OpenSyncL()或OpenASyncL()来创建会话实例。在一个进程中,只应该创建一个会话实例。在关闭会话前,需要清除所有依赖与该会话的对象,然后清除会话本身。

消息发送数据项(Entry)
由Message Server管理的数据表现为数据项(Entry)的集合。数据项可为以下4种不同的类型:文件夹、消息、附件和服务。
可以把Entry类比成文件系统,Entry可以含有子Entry,并且它自己也可以是其他Entry(父Entry)的子Entry,这样就构建了一个树结构。在树结构的根部是根索引数据项(Root Index Entry),它包含了4种标准文件夹:收件箱、发信箱、草稿箱和发送项。这些信箱又可能包含许多信息和自定义子文件夹,每个子文件夹也可以包含信息和更多的子文件夹等。一条消息可能包含附件,作为子数据项,或者包含其他信息。
第四种类型数据项(服务数据项)的作用不太明显。服务数据项包含单个服务或帐号的配置数据。

消息类型模块(MTM)
一个MTM是消息发送架构的一个插件,用来对特定的消息类型提供支持。它包含与Message Server直接交互的服务器端DLL和与为客户应用程序提供API的客户端DLL。

一般性数据项处理/统一的收件箱
消息发送架构一般设计成尽可能允许处理所有数据项类型。就像大多数文件系统允许执行删除或重命名文件夹等操作一样,Series 60几乎以同样的方式,使用相同的API对任何数据项类型执行大部分常规管理任务。这些任务包括删除、移动、复制,导航到父数据项和子数据项,查看大小和日期等详细信息。所有这些任务都能在不知道Entry的类型的情况下执行。
用于处理普通数据项的类有:CMsvEntry、TMsvEntry和CMsvStore。

数据项存储
Message Server负责保存各种类型的数据项,还提供了可安全、共享式访问它们的并发客户进程。MTM服务器组件和Message Server交互作用来共同处理消息的发送和接收。
Message Server可以把每个Entry保存在3个不同的地方:消息发送存储、消息发送索引和文件系统。

消息发送存储
每个Entry都有一个和它相关的文件存储,用于永久性地保存它的内存表示。消息发送存储中Entry的格式取决于它的类型。请注意,消息发送存储的数据没有通用格式。消息发送Entry使用它保存文本体(显示的内容)和头部(它的格式取决于特定的MTM)。服务Entry使用它保存所有的配置信息。文件夹Entry不使用该存储(它们仍然具有一个存储,但总是为空),附件Entry可能会基于单独的MTM实现使用该存储。
使用CMsvStore类访问数据项存储。

消息索引
对于每个Entry,不管类型如何,Message Server均在消息发送索引里建立一套通用的概要信息。当Message Server启动时,将索引装载到RAM中,并在内存中一直保留到服务器关闭,所以它提供了一种访问数据项信息的捷径。注意,索引没有保存Entry的全部信息,只保存了一些通用的信息。比如,它不保存消息体,不过保存Entry的大小、日期和类型,还保存它的ID等。这样做的构思是,索引数据项包含Entry的足够信息,不用打开文件存储,也不用装载MTM,就可以显示它的概要(例如在收件箱视图中)。
TMsvEntry这个类表达索引数据项。

文件系统
在文件系统中为每个数据项分配一个特定的文件夹,在这文件夹中可以选择保存更多的数据。作为存储,这个功能是可选的,而且它的用途针对MTM。在MTM实现之间,它的用法千差万别,而且文件夹一般只由服务器MTM直接访问。程序员一般不会用到它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值