SIP服务逻辑编程模型


一般而言,使用IETF Session Initiation Protocol会话发起协议,SIP)的应用程序和服务逻辑可以使用任何编程语言开发。IETF推荐使用3种编程语言来实现基于SIP的服务逻辑:Call Processing Language呼叫处理语言,CPL)、SIP-CGI和SIP Servlets (JSR 116)。基于SIP的服务逻辑控制特定的SIP消息流,或与一个SIP消息请求交互以执行一系列事务,然后导致创建一个或多个SIP消息响应。根据所谓的受信任用户服务器端的管理人员和开发人员)和不受信任的用户例如终端用户),IETF对SIP应用编程模型有所区分。CPL的目标对象是不受信任用户,而SIP CGI和SIP Servlets则主要是面向受信任用户的。BEA WebLogic SIP Server是一个基于SIP Servlet编程模型的SIP应用服务器。

Call Processing Language (CPL)是一种基于XML的脚本编写语言,用于描述和控制呼叫服务,比如处理SIP INVITE消息。CPL脚本可以确定是否要将传入的请求代理、转发或拒绝,CPL的功能被设置得具有很大的局限性,以免产生安全性和性能方面的问题。为适合“不受信任”的用户,比如缺乏经验的终端用户,CPL被设计得简单、可扩展,并且易于使用基于GUI的客户端进行编辑,使终端用户可以基于调用属性如:具体时间、调用方、被调用方等等)对调用进行个性化。CPL可以在网络服务器或用户代理服务器上实现,并且独立于操作系统和通信协议。

SIP CGI (Common Gateway Interface,通用网关接口)脚本衍生自流行的World Wide Web HTTP CGI脚本,后者作为使HTTP web站点与数据库和其他应用程序交互的首选方法得到广泛应用。SIP CGI脚本与HTTP CGI脚本几乎完全一样,也是驻留在服务器上,通过环境变量向其他进程传递消息参数,最适合于包含大量web组件的应用程序。SIP CGI脚本对HTTP CGI进行了关键性的增强,比如生成多个响应、处理多个请求和管理完全的SIP事务的能力。CGI脚本是编程语言无关的。

SIP Servlets是对J2EE HTTP Servlet APIs和容器模型的扩展,它已经通过Java Community Process (JCP)成为一个行业标准规范,即JSR 116。与SIP CGI不同的是,它是特定于Java语言的。SIP Servlets用于开发可以处理SIP信令(signalling)的应用程序,比如电话和现场应用程序。与J2EE HTTP Servlets类似,后者是驻留在web/应用服务器上的Java应用程序,处理服务器端的事务,而SIP Servlets则驻留在基于SIP Servlet的应用服务器上,处理SIP消息流和请求。比起SIP CGI,使用SIP Servlets实现SIP服务逻辑的主要优点是:servlet APIs是类型化的,它以单独进程的形式运行,而且可以跨兼容SIP Servlet的应用服务器进行移植。SIP Servlets旨在响应传入的请求、代理请求转发、发出新的请求,并对应用程序开发人员隐藏SIP协议的复杂性。

相关文章】

  • SIP协议概述
  • 几种开源SIP协议栈对比
  • SIP协议固有的安全漏洞

相关内容