使用 Nokia Siemens 网络 IDP 开发工具进行端到端 IMS 应用程序开发
作者:Dennis Luemkemann and Manfred Jakesch
03/05/2008
融合网络与IP多媒介子系统(IMS)
电信提供商正在寻求向用户提供除传统语音和短信/多媒介消息服务之外的其他服务。他们正采用IT世界已经建立的技术,如Internet Protocol(IP)、Session Initiation Protocol(SIP)、应用服务器和流媒介。这使得过去电信专有的、封闭的环境向正在寻找新市场和新机会的IT开发人员开放了。有关SIP的更多信息,请参见 SIP简介,第1部分(Dev2Dev, 2006)。
Third Generation Partnership Project(3GPP)等标准化组织已经将IMS指定为提供高级应用程序基础架构的通用服务平台。全世界的电信提供商正在部署这一系统,它在合并过去分离的网络——如公用电话交换网(PSTN)、有线电视网和公用Internet——方面发挥了重要作用。在这个聚合世界中,应用程序不再仅仅运行于一台PC或者Internet之上,无论在何处使用何种设备都可以对它进行访问。
为了实现这一愿望,IMS必须有能力在多种媒介格式、传输协议和信号协议之间进行转换,它必须提供一种从一个用户或网络组件到另一个用户或网络组件的路由机制。由IMS负责所有这一切,开发人员就可以集中于实际的应用程序。
图一所示为IMS的主要组件。Call Session Control Function(CSCF)共有三个作用:代理(P)、查询(I)和提供(S)。它充当一个SIP代理,和Home Subscriber Server(HSS)共同负责验证,后者储存了用户配置文件。在线状态服务器(Mobile Presence Manager或MPM)将跟踪用户的在线状态,当这些状态改变时发出通知。结合组列表管理服务器(Community Services Data Manager或CSDM),它为应用程序中的好友列表提供了网络后端。IMS Network Emulator仿真这些组件。SIP应用程序服务器可以附加到CSCF,媒介和信令网关在不同的接入网和设备之间进行转换。
图1,IP Multimedia Subsystem的主要组件
Nokia Siemens Networks的开发工具
IMS Developer Program(IDP)帮助开发人员编写IMS应用程序并推向市场。现在已经有了大量的移动应用程序开发工具,所以IDP只关注于纯粹与 IMS和SIP有关的工具,这样开发人员可以使用他们喜爱的工具和仿真程序在他们喜爱的操作系统上设置环境,开发IMS应用程序。 我们在本文中使用了IMS Network Emulator和客户机Java ME IMS SDK。除了这个支持Java的移动电话SDK,还有一个Windows和Windows Mobile的.NET IMS客户机SDK。您可以在IMS开发人员编程Web站点免费下载所有这些工具。
让我们来更详细地看一下这些工具:
IMS网络仿真程序
这个工具代表基础架构端,即IP Multimedia Subsystem。它将仿真实际IMS的主要功能:CSCF(Call Session Control Function:一个SIP代理)和HSS(Home Subscriber Server:基本上就是一个用户数据库和SIP注册服务器)。除了这些核心的IMS功能之外,Network Emulator还仿真一个OMA在线状态服务器、一个XML Data Management服务器和两个向任何需要的用户或应用程序提供系统范围的在线状态信息的组件,这两个组件通常可以从IMS安装中获得。
该IMS Network Emulator是一个单机Java应用程序,可以运行在您的开发PC或者一台单独的机器上。它拥有一个用于配置和本地设置的图形用户界面和一个用于远程设置的Web界面。
Java ME IMS SDK
目前市场上的多数移动电话都不支持SIP协议,在线状态等IMS服务就更不用说了。虽然实现您自己的SIP协议堆栈或使用一个现有的SIP堆栈在理论上是可行的,但您不会为了设定报头、计算验证信息等等花费大量的时间去阅读规范和编写代码。借助高级API,只需几行代码就可以使用SIP服务,这种方式不是更好吗?这就是JSR 281的作用,即IMS Services API。它令SIP的使用和将IMS服务集成到应用程序变得轻松。
Java ME IMS SDK是一个专用于Java ME设备(通常是移动电话)的库,它包含支持SIP和IMS服务的高级API。它使用JSR 281规范草案。该库共有两个版本:一个适用于一般的MIDP 2.0 / CLDC 1.1设备并且包括一个SIP堆栈;另一个适用于Nokia S60 3rd Edition电话,它有一个内置的带有JSR 180API的SIP堆栈。有关JSR 180的更多信息,请参见 Java ME的SIP API简介(中文版,Dev2Dev,2007)。
PictureQuiz应用程序
要了解IMS架构,一个简单的方法是研究和使用演示程序。PictureQuiz是一个简单的示例应用程序,它说明了IMS客户机和服务器应用程序开发的重要的方面。从IDP开发人员门户可以得到它的源代码。这一节将概述该应用程序及其架构和客户机/服务器调用。
这个猜谜游戏包括一个向猜谜客户机发送问题的服务器应用程序。每个问题会给出三个可能的答案(A、B和C),每个猜谜游戏者要在有限的时间里选出答案。因为问题采用图片与文字相结合的方式,因此可能有诸如“说出这位总统的名字”或“这是谁的花?”一类的问题。
当所有客户机回答完问题或服务器上的计时器停止时,当前游戏便会结束。每轮游戏结束时,本轮的正确答案和获胜者信息都将发给全体玩家。
该应用程序由图2所示的三个主要的组件构成:
1. SIP应用服务器(SIP AS)运行游戏逻辑,保存问题库以及提供图片。
2. IMS是应用程序的基础架构提供者。应用程序通过Gm(客户机/SIP)接口和ISC(应用服务器/SIP)接口使用CSCF(主要是Proxy和Serving角色)。因此,可以使用IMS Network Emulator运行这个应用程序。
3. 最后,客户机提供用户界面,显示问题和可能的答案,并将用户的选择发回服务器。
图2. PictureQuiz应用程序架构
服务器应用程序实现基于标准的
JSR 116 SIP Servlet API
。因此,它可以部署在任何实现此标准的SIP应用服务器上。其当前版本已经通过了BEA WLSS 3的测试。有关SIP servlet编程的更多信息,请参见SIP Servlet编程模型(Dev2Dev, 2007)。
成功登记IMS之后,玩家将自动登记猜谜服务器。服务器将根据从S-CSCF发给服务器的SIP第三方登记信息来识别玩家。这个登记过程用于确保玩家有权限参与这个猜谜游戏。
当玩家准备就绪后,客户机应用程序将发送SIP INVITE消息开始一个会话。然后服务器认为用户已经准备就绪,用户便会在新游戏时收到问题。所有客户机都将收到相同的问题,他们可以回答问题,互相比赛。
确定了当前这轮的获胜者后,一个宣布获胜者和正确答案的消息将会发送到所有登记的客户机。如果没有胜者,也会发送相应的消息。之后,服务器将发送下一个问题。
图3. 应用程序的SIP呼叫过程
图3所示的呼叫过程展示了这个应用程序的SIP接口的标准用例。考虑到简单性,此处只显示了应用程序使用的IMS(CSCF)的主要组件。
PictureQuiz包中含有服务器应用程序源代码。如果您使用Eclipse和WebLogic SIP Server,那么可以使用 WebLogic Server工具编译和部署该应用程序。您也可以选择通过Ant构建文件来编译和部署servlet(以WLSS专有任务方式)。
PictureQuiz服务器是一个聚合应用程序,SIP协议功能可以与HTTP功能相结合。服务器提供了一个Web界面用于配置应用程序以及通过服务器启动游戏。您可以从当前登记的/在线的用户和邀请他们参与中进行选择。
由于客户机的所有工作就是利用SIP和HTTP与服务器通信和显示问题与结果,所以我们可以编写客户机以适应任何(支持SIP的)平台。本文选择使用Java ME客户机,该客户机通过提供JSR 281 API的Java ME IMS SDK构建(见图4)。如果您更喜欢使用Windows或Windows Mobile,那么也可以下载和安装Win.NET IMS SDK,它包含一个适合这些平台的PictureQuiz客户机(包括源代码)。
如果您已经有一个现成的使用IDE和设备仿真程序开发MIDlet的设置,那么要做的就是将库JAR文件复制到您的项目并包括到类路径和项目输出当中。这使您能够使用这个必备的IMS功能。如果您以前没有开发过任何MIDlet,请阅读Sun的
Java ME文章
。
通常,在SIP会话期间交换的数据是某种“媒介”。它可能是RTP流或者MSRP转换或者任何与应用程序相符的东西。PictureQui仅仅使用了游戏会话内部发送的SIP MESSAGE。该媒介在会话建立期间被说明。在JSR 281中有一个建立会话的API和一个实现客户媒介类型的机制。我们需要为PictureQuiz实现这么一个客户媒介并将其添加到我们的会话。
图4. Java ME客户机截图
PictureQuiz应用程序的一个良好特性是应用程序唤醒。当使用内置的JSR 180部署到电话上的时候,设备的Push Registry机制可用于在接收到PictureQuiz的SIP INVITE时启动PictureQuiz MIDlet。它和服务器基于Web的游戏启动选项密切相关。
仿真环境中的端到端测试
在运行应用程序之前,必须确保正确配置了IMS Network Emulator。如果使用默认用户的标准配置,那就意味着适合初始过滤器标准或者那些默认用户的触发器。该机制是CSCF的一个特性,符合某些预定义标准的SIP消息可以被转发到SIP应用服务器。需要两个触发器入口:一个用于捕捉REGISTER请求以便服务器知道那个用户在线,另一个用于接收INVITE请求并开始游戏。
对于端到端测试,请确保IMS Network Emulator已经启动且正常运行,同时WLSS应与部署的PictureQuiz应用程序在一起运行。可以使用上述WebLogic Server工具在您的Eclipse IDE中启动WLSS。
在浏览器中输入http://:7001/quiz检查是否正确部署了应用程序。这应该会显示应用程序的主页。
如果一切正常,请打开IMS Network Emulator的Trace Viewer查看SIP流量。在仿真程序或实际WLAN设备上启动客户机。客户机应该在IMS Network Emulator中被登记并在应用程序的Web页上显示。在Trace Viewer中可以看到会话邀请和客户机与服务器之间的消息交换。
通过此示例,我们已经演示了开发IP Multimedia Subsystem应用程序是多么简单。额外的IMS复杂性将封装在IMS Network Emulator中,通过服务器端JCP标准API的JSR 116和客户机Java ME的JSR 281可以访问IMS的附加功能。
IMS Developer Program提供的免费工具可以与其他客户机及服务器开发工具无缝集成,供单机环境或者分布式测试环境使用。
Nokia Siemens Networks IMS Developer Program
- 免费的 IMS 工具、文档和论坛
JSR 281 - IMS Services API
JSR 116 - SIP Servlet API
JSR 180 - SIP API for J2ME
Integrated Cloud Applications & Platform Services