SIP——BEA Systems的WLCP所领导的下一代Internet协议

来源:互联网 发布:淘宝店铺如何申请直播 编辑:程序博客网 时间:2024/04/30 03:23

  本文将介绍通信平台的价值,它不仅对于电信公司非常重要,对于任何开发企业级应用程序的公司它都具有重要意义。

  借助于BEA WebLogic Communication Platform (WLCP)的发布,BEA开始大规模进军通信平台领域。BEA的新平台把那些过去严格地属于电信网络程序员领域的能力带给了J2EE开发人员社区。这提供了许多优点,如显著降低了构建电话服务所需的时间和成本,并且提供了创建与电话相关的新服务类型的能力(这在以前是不可能的)——所有这些都是通过Java、J2EE和Web服务技术完成的。

  从用户界面的角度看,用户体验正在快速地变化,理解这一点也是十分重要的。如图1所示,UI体验从客户端-服务器应用程序时代的丰富的胖客户端前端应用程序发展成为更简单的HTML页面。基于HTML的应用程序易于通过servlet和JSP的模型-视图-控制架构进行构建和维护,但是它们基本上是基于文本的,很少与一些基于Windows的应用程序所利用的更丰富的协作(例如,可以与基于音频和视频的媒体应用程序相集成的各种VB控件)相集成。


图1 用户体验

  人们越来越期望Web应用程序能够融合具有诸如即时消息传递、语音(通过常规PSTN电话、VoIP或软电话)、视频之类功能的传统HTML界面。SIP协议(session initiation protocol,会话发起协议)就能够让它成为现实。许多人认为SIP是下一个重要的Internet协议,因为它为应用程序带来一组全新的媒体和协作能力。这些新应用程序称为“聚合应用程序”,这是由于它们在企业应用程序内集成了传统的电信类型的能力。它们现在可以包括各种媒体(例如:语音、视频和聊天)和应用程序逻辑(例如,JSP提供的UI逻辑和EJB提供的业务逻辑)。

  下面是一些SIP所支持的新型聚合应用程序的示例(列表不包括所有):

  • 实时视频共享
  • 语音即时消息
  • 语音-视频电话
  • 视频会议
  • 富媒体的企业协作
  • 点击呼叫(Click-to-call)
  • 自动发起的电话会议
  • 聚合的呼叫中心通信

  电话业内的人都知道该领域目前充斥着多种首字母缩写词,包括IMS、SIP、PARLY、PARLYX、SMS、PSTN、RBOC、VoIP(IP语音传输)——并且这个清单还一直在增长。此外还有一些重要的元素,如注册服务器和现场服务器,它们通过各种信道(本文不作介绍)用于注册用户和跟踪他们的可用性。本文不是对“Telecom 101”的评论,但是我将设法提供更全面的概述,以便您可以更好地理解这些东西是如何结合在一起的。

  好在BEA的WLCP可以帮助您提高生产力而无需知道众多的术语和技术。这引出了一个重要的观点,根据我与架构师和开发人员之间的多次讨论,我得出了这个观点。在许多人的印象中,SIP服务器只出现在电信中,并且专用于VoIP计划(其定义参见下面的VoIP一节)。实际情况绝非如此。当SIP与传统的公用交换电话网(PSTN)、VoIP或无线网络协同工作时,它是不可知的。存在一些可以采用这些不同传输技术之间的通信的网关。

电信业目前的状况

  电信业正在经历许多根本性的变革,目前正呈现出两种截然不同的趋势。一种趋势要求运营商通过创建聚合的视频、语音和数据应用程序(通常称为“三重业务(triple play)”),来创造新的收益机会。在线实时多媒体和双向交互式服务(如:游戏)就是这方面的例子。另一种趋势是继续努力降低运行传统PSTN网络及运营的成本,并最终迁移到更经济的VoIP网络。

高速进户

  光缆正以极快的速度接入家庭和企业。几个月前,有几根光纤沿着道路从我的房子外面穿过——但是还没有直接连入我的房子中。光纤承诺为工作场所和家庭带来前所未有的网速,从而革新电信和连网技术。例如,Verizon现在通过它们的FiOS产品提供了15兆字节/秒的速度。如果这种速度可用于新型应用程序,则会产生显著的经济效益。实际上,“高速进户”正在很大程度上成为现实。
电信公司需要创建新的服务以与其竞争对手拉开距离,这推动他们投资使其服务优于竞争对手的战略。如果他们打算继续利用旧式的5类交换机及其他专有网络元素来执行这项工作,这就像是把一只脚踩在加速器上,而把另一只脚踩在开关上——对于赢得竞赛并不很有效。于是BEA WLCP就派上用场了。它取代了大量对旧式技术的需要,并且带给了J2EE(或JEE)开发人员最初只存在于电信领域的能力,以及“网络专家”的高度专业化的技能。

VoIP

  VoIP是指那些允许使用分组交换而不是传统的PSTN将媒体呼叫——语音及其他——置于基于IP的网络(Internet)上的硬件和软件。VoIP提供的重要优点是:公司避免了与PSTN关联的费用和通信量。此外,托管VoIP网络所需要的基础架构基于商品化的硬件和软件,而PSTN构建于很大程度上封闭的硬件和软件系统(如5类交换机)之上。一般来讲,电信公司将同时拥有PSTN和VoIP网络,它们在可预见的未来将可以互操作,但是最终将会转移到只有IP的网络上。

为什么需要通信平台

  世界已经发生了变化,出现了把电信能力从纯网络工作间中拿出来并提供给普通开发人员以创建新型聚合应用程序的强烈需求。如上所述,这一般称为传统电信与企业应用程序开发之间的聚合。BEA WLCP为开发人员提供了一组行业领先的工具,使他们能够在J2EE、Java和Web服务等常见环境中编程。

   到撰写本文时止,WLCP具有两个组件:WebLogic SIP Server和WebLogic Network Gatekeeper,如图2所示。尽管本文关注的是WebLogic SIP Server,但WebLogic Network Gatekeeper也是WLCP的重要组成部分。当需要提供一个用于保护和调停网络及网络通信量的层时,Network Gatekeeper有助于提供更底层的网络控制,如:协议适配器以及对ParlayX的支持,ParlayX是一种向应用程序开放电信网络能力的规范。


图2 WLCP组件

  因此,这些新的核心电信能力与BEA平台的其余部分(WebLogic Server、WebLogic Portal和WebLogic Integration)结合起来,就形成了构建聚合服务的所有工具,这些服务:

  • 与现有遗留应用程序相集成;
  • 完全是面向服务架构(SOA)的一部分
  • 可呈现到任何类型的浏览器或设备中,又称为多信道传送;
  • 能够通过WebLogic Portal提供应用程序的个性化视图。

  目前,业内一般把这些组合的能力称为服务交付平台(Service Delivery Platform,SDP)。这种范例模糊了无线、有线、VoIP和基于Web的传送信道之间的区别。实际上,这些信道现在能够以前所未有的方式协同工作。

什么是

  简单地讲,SIP是IETF在RFC 3261中提供的一种协议,它提供了以前存在于7号信令系统(Signaling System 7,SS7)之类的协议条款中的信令能力。SIP已经合并到Java语言的JSR-116之中(SIP Servlet API——参见:www.jcp.org/en/jsr/detail?id=116)。WebLogic SIP Server是一种支持SIP Servlet API的应用服务器。SIP Servlet和HTTP Servlet之间有明显的相似之处,这是由于它们共享一些相同的设计和编码原则。实际上,它们都扩展了javax.servlet.GenericServlet。SIP Servlet规范的类、接口和方法相对较少,这使得人们可以相当容易、快速地掌握其基本知识。

  SIP的工作是“ping”其他设备,实质上是执行一个INVITE消息请求,以在设备之间建立一个会话。这通常称为呼叫控制——建立和切断媒体流,如电话。会话几乎可以是任何类型,而且与其说它是一项SIP协议功能,到不如说它是一项设备功能。这种会话可以是邀请另一个人打开语音媒体流的一个电话,也可以是一个请求视频媒体流的支持视频的应用。媒体流,如实时传输协议(Real-time Transport Protocol,RTP)所定义的,是一种标准化的分组格式,用于通过Internet传送音频和视频(以及其他媒体),并且独立于SIP信令。

   作为呼叫流的一个示例,图3显示了可用于一个电话(SIP术语中的用户代理)试图与另一个电话建立通信的常见过程中的信令步骤。呼叫方A通过注册服务器注册,并发送一个邀请给中间代理服务器,该代理服务器会查询呼叫方B的位置,并使用该信息来联系另一台代理服务器,这台代理服务器将把请求发送给注册呼叫方B的物理设备。然后会传回送确认,并最终在第18步将在两位呼叫者之间建立一个RTP媒体流。


图3 呼叫流的例子

SIP 代码示例

清单1是一个SIP Servlet示例,它把一个200 OK响应发送回SIP Message请求。

 

  清单1:SimpleSIPServlet.java

package com.bea.example.simple;import java.io.IOException;import javax.servlet.*;import javax.servlet.sip.*;public class SimpleSIPServlet extends SipServlet {    protected void doMessage(SipServletRequest req)        throws ServletException, IOException    {        SipServletResponse res = req.createResponse(200);        res.send();    }}

  该示例显示了SIP Servlet和HTTP Servlet之间的相似之处:

  • Servlet必须继承API所提供的基类。
  • HTTP Servlet必须继承HttpServlet,SIP Servlet必须继承SipServlet。
  • 必须重写和实现诸如doInvite()、doBye()和doRegister()之类的方法。
  • HTTP Servlet具有对应于GET/POST方法的doGet/doPost方法。类似地,SIP Servlet具有对应于方法名称的do<MessageName>方法(上述示例中的MESSAGE方法)。应用程序开发人员重写和实现必要的方法。

  SIP Servlet的生命周期和管理方法(init、destroy)与HTTP Servlet完全一样。会话和属性的操作也是一样的。尽管该示例没有显示出这一点,但是存在一个用于SIP Servlet的称为sip.xml的部署描述符,它对应于HTTP Servlet中的web.xml。应用程序开发人员和服务管理人员可以编辑该文件以配置应用程序。

WebLogic SIP Server

  由于WebLogic SIP Server与WebLogic Application Server聚合在一起,开发人员和管理人员已经熟悉了SIP Server的可伸缩性、可管理性和可编程性。他们可以利用Java和J2EE的所有能力以与管理传统J2EE应用程序相同的方式来管理生产应用程序。图4显示,WebLogic Server承载了HTTP Servlet容器和SIP Servlet容器。它们二者都具有对所有核心Java和J2EE能力的完全访问权限,这些能力是WebLogic Server所固有的。另外一个优点是SIP Servlet容器中执行的操作之间的延迟大大缩短了,这是由于它们是通过该应用程序工件的其余部分(如可能为应用程序提供业务逻辑支持的EJB)而执行的。


图4 WebLogic SIP Server架构

  实际上,如果没有聚合的容器,这将会复杂得多,因为编程和操作中的额外工作将会区分用于信令功能和业务逻辑的环境。想象一种新服务,如“单击联系销售代表”,则需要集成现有的操作支持系统(OSS),可能还要集成计费支持系统(BSS)。如果没有BEA聚合容器,很可能需要创建三个单独的SIP、Web和集成层,每个层都有一组不同的技术需要您学习和管理。

  图5显示了BEA WebLogic Portal、Integration和SIP Server如何协同工作,以提供一种强大、统一的框架,用于分别支持UI、集成和下一代信令。


图5 支持SIP的企业应用

结束语

  本文讨论了SIP协议在开发新型应用程序方面的重要性,在企业开发人员无法接触传统电信能力的时代,这些新型应用程序是不可能实现的。由于它为下一代协作式应用程序开启了如此多的潜力,许多人认为SIP将真正成为下一个重要的Internet协议。Java社区有一种API——SIP Servlet API (JSR-116)——它为开发基于SIP的应用程序提供了一个蓝图。现在,BEA提供了企业级的SIP Server,它拥有独一无二的可伸缩性和可管理性。此外,借助于聚合的SIP + J2EE容器,BEA同时为企业开发人员提供了SIP和J2EE的强大和灵活性。最后,BEA的SIP Server捆绑到整个BEA WebLogic平台中,从而为开发人员提供了一个统一的应用程序开发框架,便于进行更轻松、更快捷、更经济的开发。有关BEA WLCP发布的更详细信息,请参见www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/wlcom/

原文出处: http://wldj.sys-con.com/read/138257.htm