关于Mobicents

来源:互联网 发布:android答题软件源码 编辑:程序博客网 时间:2024/05/30 04:31

Mobicents是什么,如果你熟知VOIP,SIP,IN,IMS,NGN,软交换,答案完全可以从其官方主页找到。如果你做过JavaEE,但没有涉及过电信开发,可以看看下面的解释是否能找到答案。

我们可以把Mobicents当成实现JAIN SLEE规范的一个电信应用的应用服务器。
大家都知道Weblogic是个符合JavaEE规范的服务器实现。在Weblogic上,我们可以通过EJB支持分布调用,实现对象池,O/R mapping,实现声明性事务,通过Datasource连接数据库,通过JMS实现消息订阅,通过JSP显示页面等等。也就是说在JavaEE服务器上,我们可以很方便地按照JavaEE的规范开发各种企业应用。类似,Mobicents 提供了一个符合SLEE规范的基础框架来更方便容易地开发电信应用。例如呼叫转移,三方通话,位置查询等。

Mobicents简单的结构如下:
 

其中最重要的组件包括:

  • SBB:可以理解成JavaEE中的EJB,都是完成应用逻辑的。
  • RA:是Mobicents与外部系统的接口,用来连接外部资源,网元设备,实现协议转换,把复杂的电信信令协议映射成事件。Mobicents已经包含了多种RA并且也提供可扩展的机制
  • Event Router:Mobicents的核心,将事件分发到需要的SBB去,实现事件机制,并且松耦合了业务对象SBB和事件源RA。

其他的组件就和JavaEE平台都类似,主要就提供一些基础的服务,例如日志等

开发者可以通过Mobicents提供的这些组件/服务高效地开发电信应用,而不需要了解过多的电信知识,不用了解电信信令的具体内容(Mobicents已经把这些信令转化成容易理解的事件对象)。从理论上说,与JavaEE类似,我们只要关注业务即可。

那么为什么我们不在JavaEE上用JCA连接电信的网元设备,JMS分发事件,在EJB里组织逻辑呢?技术可行性上说,可以。但我个人理解,两种业务的paradigm不一样。做为一个framework,应该让开发者更接近业务领域的概念开发。

建在JavaEE服务器上的企业应用往往是以数据中心的OLTP应用,开发中考虑最多的往往是如何处理transaction。在这样的事务中,操作一般都是序列化执行的,并且往往一个操作依赖于前一个操作的结果。例如一个缴费系统,肯定要先从用户账户扣钱成功,然后再产生账单。

电信应用往往是基于事件使用状态机实现的,事件发生的时间点之间是不存在依赖关系的。例如一个电话Call,无论先收到主叫挂机还是被叫挂机都可能结束这个Call。使用一个状态机来实现Call的流程更自然和灵活些。

我个人理解Mobicents/SLEE的设计思想应该是借鉴了智能网的模型,SBB的概念和智能网概念模型中全局功能层的SIB类似,借助Mobicents开发电信应用更符合电信应用的paradigm而又可以工作在IT的概念上。
(其它更多的区别也可以参看:http://java.sun.com/products/jain/article_slee_principles.html)

不过以后也许JavaEESLEE两者会融合(现在Mobicents就是跑在JBoss上),这样就可以提供了带telecom feature的企业应用。Mobicents的东家Redhat也正致力于此。另外即使我们不开发电信应用,Mobicents也可以一个大型Event Drivent Architecture的候选。

原创粉丝点击