天堂左岸 哪有卖 是在灵溪风景区 哪有卖

移动MAS资料(一)- 天堂左岸 - 新浪BLOG
我的图书馆
移动MAS资料(一)- 天堂左岸 - 新浪BLOG
移动增值业务平台解决实例
摘 要J2EE为WEB应用提供了多层次的结构体系,而在传统软件(非Web 应用),如何建立合理的、灵活的结构体系,是本文的主要目的。本文基于一个分布式中间件开发工具– SoftEngine,以移动通讯的增值业务平台为例,阐述分组件化布式系统的基本技术及特征。关键字:中间件 Middle-ware ,分布式系统Distributed System,结构体系 Architecture,移动互联Wireless Internet,短信 SMS,彩信 MMS 图表1 短信应用业务模式最简单的建立短信应用的方法:利用移动运营商的网关接口API,直接与移动网关对接;再配以数据库或文件作为数据交换的方式。这做法,适用于单个的短信应用。如果应用种类增多,由于体系结构的关系,很难有好的性能。尤其在竞争激烈的移动增值业务中,新应用推向市场的时间(Time-to-Market)是关键。有人统计过:短信应用的平均生存周期为3个月。也就是说,每个应用从策划完成到推出市场的时间越短,开发成本越低,应用的市场价值也就越大。所以,移动增值应用的技术难点,不在于应用的实现,而是在实现的速度,及质量。而众所周知:软件开发中,时间与质量成反比。这是移动增值应用的第一个难点。第二个难点:速度。在2001年的春节除夕,手机用户就已经体会到了。虽然移动运营商已经通过扩容,改善了短信的通道。但流量的压力会从移动网关,转移到了应用端,这对应用系统提出了更高的要求。而且,短信的特点:内容短,数量大,突发性高。所以,简单地依靠数据库、文件系统传递数据,不能满足关键应用的性能要求。第三个难点,没有前两个问题那样容易表达,简要来讲:许多看似简单的事情放在一起解决,问题就会变得复杂。在竞争激烈的移动增值业务中,应用的数量、种类,是取得优势的因数之一。新的应用层出不穷,相关的内容也是追求新颖别致。内容有的是自己在准备,而更多以合作的模式获得,甚至应用也是如此。在解决应用的同时,还要解决为不同运营商提供服务。虽然国内只有移动(CMCC)和联通(UNICOM)两大主要移动运营商,但一些原因,使得应用提供商需要和不同区域的当地运营商分别提供应用,不可避免地需要与不同运营商的网关接入。如何有效地管理:应用、内容、网关接入,以及计费、统计、分析等诸多后台工作,是增值应用平台所需要考虑的。虽然通过增加维护人员、设备,可以在某种程度上缓解这些问题。但随着业务增多,维护成本会不断增加;随着时间的延续,设备的更新成本也不容忽视。还需要考虑人员变更,设备故障等不定因素带来的负面影响。从根本上解决问题,一个稳定的、有效的运行系统是不可缺少的。它可以减轻维护、管理压力,提高业务运作的准确率,制作应用才会变得真正的”简单”。构造这样的系统,我们需要从结构体系着手。 图表2非常类似Web应用,短信应用是由用户发出的上行短信(MO)到应用端,返回结果称为:下行短信(MT)。不同之处在于,应用可以在没有上行的情况下,主动发起下行信息,用户被动接收。运营商的网关包括: 移动网关(ISMG)和联通网关(SMG),分别以CMPP或SGIP协议与应用提供商(SP)连接。彩信比短信要复杂一些,而且物理承载层也有了变化,但运营商已很好地进行了封装,所以对于SP,它们的业务流程也是相近的:运营商提供彩信中心(MMSC)作为网关,通过MM7协议与SP通讯。3.2需要考虑的问题在设计应用平台的具体方案前,我们还需要就业务流程,预先考虑几个问题:1.平台需要与不同的网关以不同的协议连接,而且也存在版本升级的问题。所以与网关的接口模块是组件化的,可以按需要动态加载。2.应用模块与接口模块之间存在一对多的关系。不可能为不同的网关/协议定制不同的应用。所以应用与接口之间必须是无关性的,即:应用无需了解接口的属性,反之也一样。3.应用的个数、种类是多变的。所以应用模块也是组件化的,可按照一定的规则挂接或脱离。同时应用也有可能由合作者提供,所以应用的对外接口也是需要的。4.同时下行的信息可以按照不同的规则路由到指定的网关。上行信息也需要路由到指定的应用。而这些动作不应当由接口或网关承担。5.对于不同的网关及应用都需要分别做计费、统计、日志管理。以满足与运营商核对账单,与应用的合作者提供分账的明晰。以上列出的仅仅是核心的问题,在充分理解的基础上,我们需要借用SoftEngine的体系结构以及设计理念,得出成熟的解决办法。同时平台的体系结构也逐渐随着问题的解决,慢慢明朗。3.3移动应用平台的结构体系首先,让我们从宏观上看看平台是如何工作、提供服务的。如下图:
图表3 MAP-Mobile Application Platform
移动应用平台(Mobile Application Platform,以下简称平台),主要的使用角色只有两种:●注册用户(Subscriber),是平台的受众群体。通过各种移动设备使用平台所提供的多种应用。WWW服务做为辅助工具,方便了注册用户的订阅、点播及了解更多的应用信息。●管理维护人员(Administrator)。平台需要日常的管理和维护,除了通过专有通讯方式外,WWW服务是必不可少的、实用的手段。这里的管理人员包括:系统配置人员、应用配置人员、内容管理人员、内容发布编辑(内部/外部)、***人员、计费统计人员。大部分人员都可以通过,WWW服务完成各自的任务。所以,平台以移动应用系统(Mobile Application System,简称MAS)为主体,WWW服务为辅助工具,数据库存放平台所需的各种数据。●移动应用系统(MAS)。几乎所有的移动应用都由MAS完成。MAS完全基于上文介绍的分布式开发系统 – SoftEngine的体系结构,并继承了SoftEngine的所有特性,包括:应用的组件化、数据安全性、以及内部组件可根据负载压力的分布处理。同时利用SoftEngine提供的Web方式对外接口 – WebPostTaskServe实现与WWW应用的结合,如:网上收费应用等。也为内容应用第三方合作者提供了便利的接口。MAS最主要的接口是与不同移动运营商网关的连接,被定义为网关适配器(Adapter for Gateway)。●WWW服务。除了为注册用户提供辅助功能,还可以为系统人员提供管理工具。包括的功能参见上述两个角色的描述。●数据库。MAS运行,可以不需要数据库的辅助。但为了对系统管理的方便,以及应用内容的有效管理,我们还是加入了数据库。存放的数据包括:系统配置数据、应用配置信息、注册用户信息、应用内容等。从上图,可以看出:在移动应用平台的三个组成部分中,MAS是结构中的关键。它的特性决定了,平台的优略。普通的设计,很难处理在本文开始所提到的三个难点。只有从根本上,采用上一章节介绍的分布式的体系结构来解决。所有我们将重点介绍MAS的内部结构。
3.4移动应用系统MAS的设计在上文的 “应用平台基础 – SoftEngine的结构体系”,我们已经对分布式系统有了初步的认识。MAS完全以SoftEngine为基础,继承了所有的组件化、分布式等体系结构特点,所以在MAS的设计工作中,已无须对其基础结构过多地考虑。在充分了解移动业务及其中需要关心的问题后,我们可以按照SoftEngine的开发流程,直接设计MAS的工作流程,然后定义完成工作所需对象组件(Object Component)。由于篇幅的限制,先从整体上描述MAS的组件结构,然后着重介绍其中一个主要的工作流程。从中体会到组件化设计的乐趣。3.4.1MAS的组件结构图先来看看被定义好的MAS是什么样子,如下图:
图表4 MAS组件结构图
MAS虽然包含许多对象和组件,但这些对象可以按照功能的不同,分为五类:与移动网关连接的适配器组件;负责转换不同协议的信息转换组件;包含所有应用的组件群;日志纪录、资费统计的计费组件;以及可作为MAS与WWW应用、外方合作接口的通讯组件。这样,MAS的结构就比较简单清晰了,以下分类介绍。3.4.2网关适配器 Gateway Adapters网关适配器主要由SoftEngine的通讯服务类(Serve Class)的派生对象实现通讯协议。考虑到实际情况中,MAS会和不同移动运营商的不同网关连接,所以网关适配器组件里,需要包含支持不同协议的通讯组件,可划分为多种接入门户(Portal):●支持中国移动CMPP协议的短信门户(CMPP Portal)。●支持联通SGIP协议的短信门户(SGIP Protal)。●支持中国移动MM7协议的彩信门户(MMS Portal)。●其他未知的种类,如:将来可以增加联通彩信。在每种Portal内,还会涉及到不同地区的接入点,以中国移动短信门户(CMPP Portal)为例(假设协议版本唯一):为了同时与多个CMPP网关(ISMG)同时接入,需要把CMPP通讯服务类(CmppServe Class),通过配置,实例化出三个对象CmppServeToBeijing, CmppServeToJiangshu, CmppServeToSichuan,分别与北京、江苏、四川的网关连接。为了区分不同地区短信,还需要在组件中加入路由对象OutgoingRouter和IncomingRouter,处理MT/MO短信。这样,通过实例化新的CmppServer,同时调整信息的路由配置,就可以在短时间内增加新的接入点。调整操作,就像在一台PC机上又增加或删除了一块网卡一样方便,几乎对系统中的其他部件没有任何影响。联通短信接入门户(SGIP Portal),只要更换通讯服务类为SgipServe,其他与移动门户一样的。彩信接入门户虽然在接口协议上与短信有较大的区别,但主体结构没有变化。但由于信息的内容不像短信那样简短,通常在10K-50K之间,所以多媒体内容只有在发送前,才由功能对象FetchDataFunc从文件系统或Web方式读取到内存,再通过相应的通讯对象传送到移动网关。3.4.3信息转换 Message Transfer在网关适配器组件内个对象之间,所传递的任务是与具体的通讯协议想关。对于发送的内容并不关心。为了做到应用与通讯协议的无关性,在应用与网关适配器之间需要有一个关键的协议转换功能,在MAS内被定义为:信息转换(Message Transfer)。从图中,可以看出Transfer的左边是网关适配器组件,右边是应用组件群。在应用组件内,只包含通讯协议中与应用相关的信息,其他信息都需要通过Transfer对象翻译。所以MAS的短信信息转换对象SmsTransferFunc起到:通讯协议任务与应用任务之间相互转换的作用。信息转换的作用会在后续的短信工作流程范例中具体描述。3.4.4应用组群 Application Group应用组群是MAS中最活跃的部分,从应用形式上可分为:●定制类型: 定制一项服务后,用户会定时接受到系统主动下发的信息。●点播类型: 无需事先定制。需要时发送指定的命令内容到服务商,得到特定的内容。从内容上分为:●新闻类型: 以固定时间为周期,刷新内容。一般是一些时实性强的内容,比如:天气预报,新闻等。●咨询类型: 信息没有太强的时效,如:幽默笑话、生活指南等。●交互类型: 用户与用户、用户与系统之间的动态交互内容。如:游戏类、聊天等。以上的分类,还可以相互交错结合,形成丰富的、多态的应用。在构造MAS初期,我们可以先实现几种常规应用,如:新闻和咨询类型的定制及点播服务。在以后业务发展中,只需配置就可在极短时间内,增加新的内容。但更多的应用需要量身定做。即使这样,SoftEngine的功能对象(Func Object)也可最大程度上提高代码的可重复性,缩短应用的开发周期。涉及到SoftEngine的开发细节,这里不做过多的介绍。在应用中还需要考虑:如何与第三方在应用内容合作。合作方式有两种:1.MAS作为应用平台,第三方提供内容2.MAS作为通讯通路,第三方提供应用第一种方式,如果合作属于常规应用,可以直接通过配置,为第三方开放内容管理权限,就可以开通应用了;如果属于特殊应用,就需要在MAS内开发新的应用了。第二种方式,对于MAS,比较容易实现了。首先,利用SoftEngine的对外接口WebPostTaskServe,将任务以HTTP协议传递到外界,或接受外部任务。为了不影响MAS内部各组件协调工作,需要在功能组群中事先准备好特殊的对象:ExtraAppShellFunc,最为外部应用群在内部的映射,有些类是与SoftEngine中的虚拟对象的感念。3.4.5计费系统 Billing System在MAS内,所有与通讯相关的操作,都需要留下日志,作为日后分析及计费使用。MAS的日志有两大类:通讯日志、应用日志。前者通过计费核心组件按期计算出与移动运营商对帐的计费信息;后者可以在前者的基础上统计出各个应用的收费信息,以及第三方合作伙伴的分账详细纪录。这在MAS运作中起着比较关键的作用。日志信息需要及时写入文件或数据库中,对实时系统的效率提出了挑战。采用分布式技术,可以很好地解决。3.4.6短信工作流程MAS中的各个组件,通过预定义的工作流程(Work Flow)协调在一起工作。工作流程的设计是SoftEngine开发中最重要的环节。现以短信的核心流程为例介绍。
图表5 Work Flow
上图,显示出短信笑话点播的工作流程:●用户发送的点播MO信息,通过服务对象接收并形成CMPP任务 (CmppMoTask)。●CmppMoTask经过路由对象IncomingRouter传递到信息转换对象(SmsTransferFunc)。●根据配置,SmsTransferFunc将CmppMoTask转换为应用可以接收的应用任务(AppMoTask),并传递到笑话应用AppJokeFunc。●AppJokeFunc对任务处理后,返回结果任务(AppMtTask)。●AppMtTask被SmsTansferFunc转换为CmppMtTask,通过下行路由传递到CmppServeToBeijing,并发送到移动网关。在上述流程中,CmppServeToBeijing和SmsTransferFunc是信息不同阶段的分界点,所以需要纪录日志。前者纪录通讯日志,后者纪录应用日志。纪录的费时操作,并不在分界点完成,而是利用上文提到的流水线设计模式,由计费系统的专有日志纪录对象完成。分界点的日志操作,只是将产生的日志信息,以任务的方式转发到日志对象。这样,避免核心工作流程包含费时操作,使其保持高速运转的效率。 TA的最新馆藏[转]&天堂左岸全文阅读,天堂左岸免费阅读_牛宝宝文章网天堂左岸 本书讲述了身世可怜的柯雨晴带着弟弟艰苦的生活,韧如杂草、乐观的性格,使她虽然生活清苦却还算快乐,并且以全市第一名的成绩被破格录取为迪兰学院的一名新生。本想谨小慎微地在这所名流贵族学校学习,却未曾想在开学第一天就遇见了迪兰三少,并成为所有同学眼中的异类。冷若千年寒冰的江氏财团大少爷江韶涵、拥有清凉如水眼眸的,天使般的少年裴风瑾、日本玩偶般精致可爱的安浩楠,学校里的风云人物都因为不同的原因与柯雨晴结缘。江韶涵更是为了修理雨晴让她做了自己的私人女佣,而在日后长久的相处中,两人却发现彼此都是心中一直等待的那个人。分享到:声明:《天堂左岸》由牛宝宝文章网搜集整理于网络,如无意侵犯到您的合法权益,请联系我们删除。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
& 有些人,因为太在乎而渐行渐远; && 有些脚步,因为过于疯狂的追逐,却让我迷失了方向。 && 我不知道,在你的生命中,我曾经扮演着怎样的角色,主角?配角?还是一闪而过的群众演员? &&&我不知道,在你的l旅程中,我是哪一站,起点?中点?还是终点? && 我曾为你的帮助而心生感激,也曾为你的冷漠而泪流不已;曾为你的鼓励而找到动力,也曾为你的不屑一顾而感到卑微。 && 我说:“若我离去,后会无期",我以为我真的可以走的如此的决绝,奈何你的影子时常出现在脑际; && 我说:“我们不是同一世界的人,所以我放手”,我以为我真的可以做的如此的潇洒,奈何心中仍有一份割舍不去的记忆。
&& 是该结束了,我对自己说。因为没有进行下去的必要了。 && 就是在这一年,我学会了扣住自己的思念,留给自己一份宁静的天空。因为我已不再确定,那些所谓的思念是否已变得廉价了。 && 就在这一年,我理解了所谓的卑微。有些人一厢情愿的为我付出,我却将目光停留在另一个人身上。我们曾经都是那么骄傲的人,现在却会为了一份不值得的感情,让自己变得那么卑微。谁都不是谁的谁,谁也没有必要为了谁放下自己的骄傲和自尊。我们只能为自己改变。 && 就在这一年,我学会了遗忘。总是活在记忆中,感觉那么累。记忆只是美丽的泡沫,转瞬就会破碎,一味的沉浸其中,只会让自己时常忍受
寒冷的夜; 湛蓝的天; 皎洁的月。 斜靠在房顶那个冰冷的躺椅上,望着这个充满欺骗与虚伪,充满喧嚣与无情的世界,心中竟会有些许的凉意。 我知道,一个人要学会在自己的记忆中选择,那么她才可以经常快乐。
孤独的星空下,一个人伤心太平洋。也就是在这个夜里,我真的痛哭了。世界在变迁,人也在改变,但我的心里却有一份对你永久不变的思念。 && 原来我们只是两条相距较近的平行线,你做你的温柔男孩,我做我的野蛮女生。你做众女心中的白马王子,我做孤独沙滩上的丑小鸭,你有你的自豪,我有我的快乐。我从不曾设想,我们之间会有交点,因为我们只是两个像常人一样见面点头微笑的陌生人。 && 可有一天,黑暗笼罩了我的生活,忧郁代替了我的快乐。我就在黑暗的深渊中孤独的等待世界末日的到来。这是,你来到了我的身边,向我伸出了友谊之手。我在犹豫之时,还是将那冰冷的手
最后登录加载中...
this.p={b:2,ua:-1, ub:'http://img.bimg.126.net/photo/GyGvnpIevmNBGZrPytqGSg==/200794.jpg',us:'她', friendstatus:'none',followstatus:'unFollow',hmcon:'1',aShowT:'0',guideId:4};
积分 ${data.totalScore} 分,距离下一等级还有 ${data.nextGradeNeedScore}分
心情随笔列表加载中...
this.p={b:2,n:5,r:'/xj_ng0507/blog/#m=1&c=',mset:'000',mcon:'',srk:-100};
{if defined('fl')&&fl.length>0} {list fl as x}
${x.content|xescape:x.id,x.moveFrom} ${x.publishTime|xtime}
{if x.moveFrom&&x.moveFrom=='wap'} && {/if} {if x.moveFrom&&x.moveFrom=='mobile'} && {/if}
{/list} {else} 暂无心情随笔记录! {/if}
博友列表加载中...
this.p={b:2,m:0};
发现好博客
列表加载中...
this.p={b:2,cn:12,ct:12};
列表加载中...
this.p={b:2,cn:15};
我要留言 & &
& 留言列表加载中...
this.p={b:2,nv:false,cn:5,ct:5};
& & & & & &
网易公司版权所有&&
{list x.l as y}
{/list} {/list}
{if defined('wl')} {list wl as x}{/list} {/if}

参考资料

 

随机推荐