JAIN SIP & SIP Servlet

JAIN SIP:
Java API for Integrated Networks SIP,JSR32定义了其规范。PSTN、Wireless、Internet使用的都是JSR32。

(1)用途:

JAIN SIP可被用于以下几个方面:①用于J2SE平台,开发独立的user agent、proxy和注册应用程序;②作为SIP Servlet容器的基础SIP实现;③作为EJB容器的基础SIP实现。

这是规范中的准确定义。

(2)对协议的支持:

JAIN SIP支持RFC3261定义的全部功能,并且支持以下SIP扩展:INFO方法(RFC2976)、临时响应的可靠性(RFC3262)、事件通知框架(RFC3265)、UPDATE方法(RFC3311)、Reason头(RFC3326)和为即时消息定义的Message方法(RFC3428)。

(3)编程模型:

JAIN SIP标准化了SIP协议定义的通用事务模型接口,提供了从事务接口访问dialogue功能的方法。它采用Listener/Provider事件驱动模型,定义了很多factory类,用于创建Request和Response消息和SIP头。它为每个支持的头定义了通用接口,可添加到Request和Response中。SIP消息通过一个事务被传到SipProvider,SipListener用于监听到来的事件。此外,JAIN SIP被设计为可扩展的,定义了通用的扩展头接口。

(4)其他:

JAIN SIP并不仅是一个客户端API,它还可以用于一些服务器扩展。比如,JAIN SLEE资源适配器采用JAIN SIP作为基础。此外,它同样可以与SIP Servlet一起使用,或者直接与EJB结合使用。

由于JAIN SIP API是对SIP标准的完整定义,任何基于SIP的程序可将JAIN SIP API用作Java标准接口,成为经JAIN SIP认证的栈。这意味着应用服务器、SIP电话、网关及网关控制器、SIP服务器、基于SIP的业务、SIP计费解决方案、开发者工具包、SIP测试工具、SIP用户代理、以及SIP网络管理,均可利用JAIN SIP API实现在SIP栈实施中的通用性。典型的SIP网络中,JAIN SIP接口用于代理服务器、媒体网关和客户端。JAIN SIP API涵盖比用户代理或客户端软件所需更多的内容。

SIP Servlet

规范JSR 116,即SIP Servlet API v1.0,提供下载.jar包;JSR289,即SIP Servlet API v1.1,最终发布于2006.12,.jar包尚未提供下载。

(1)概述

SIP Servlet定义了一个环境,执行基于网络的SIP应用。它用于开发应用服务器,可支持SIP、HTTP和J2EE平台。建立在HTTP Servlet API规范之上,定义了API和用于应用打包的文件格式。SIP Servlet的核心能力是作为UA或proxy处理SIP信令。API规范的目的是允许应用完全的控制SIP信令,同时隐藏SIP协议的复杂性。

(2)SIP Servlet API的重要特性:

• SIP signaling:允许应用表现比较完整的SIP信令行为,包括UAC、UAS和proxy。

• Simplicity:容器处理“非本质的”复杂问题,比如管理网络监听点、重传、CSeq、Call-ID和Via头、路由等。

• Converged applications:容器支持聚合应用,即跨越多种协议和媒体类型,比如web、电话和在线应用。

• Third party application development:servlet模型支持第三方应用开发。XML部署描述符用于应用开发者和部署者之间交流信息。

• Application composition:多个应用可能会执行同一个到来或发送的请求或响应。每个应用拥有自己的一系列规则,并且以定义好的有序的方式独立于其他应用执行。

• Carrier grade: servlets将应用数据存储在容器管理的session对象中。为实现高可达性,可能需要保持或复制这些数据。

(3)对协议的支持:

SIP Servlet支持RFC3261定义的基础SIP功能,同时还支持一些SIP扩展:事件通知框架(RFC3265)和为即时消息定义的Message方法(RFC3428)。

(4)几个特点:

FOCUS:enabling communication capabilities to non-telecom developers.

Converged Application:一个Servlet应用可能同时包含SIP servlet和HTTP servlet。聚合的容器用来部署SIP和HTTP servlet,并且允许状态在他们之间共享。通过应用session将多个协议session绑定在一起。

Application Composition:SIP Servlet允许一个请求触发多个应用。应用组合功能的选择和多条匹配规则的选择交由应用来管理。但是,如果实现了应用的组合,那么规范要求cascaded业务模型,即应用之间是互相独立的,每一个都必须遵守标准的SIP规则。

(5)编程模式——容器 SIP Servlet的另一个特点

SIP servlet最核心的概念是容器。SIP Servlet容器既可以控制下层的SIP事务,也可以管理已经建立的对话。SIP Servlet容器负责管理监听点、线程、事务、对话、会话状态和应用组件等资源,提供了可供应用程序使用的许多服务,比如自动重试、消息调度和排队、分流和归并,以及状态管理。应用程序中只需包含高级的消息处理和业务逻辑。这使SIP服务的开发成为一件轻而易举的事情。业务开发优势之一

基于SIP Servlet和基于HTTP Servlet进行应用开发的模式很相似,这对于熟悉HTTP Servlet编程的开发人员来说,使用SIP Servlet开发变得非常容易。此外,SIP Servlet API与J2EE Servlet API的关系密切,并且它具有较强的可扩展性。业务开发优势之二

JAIN SIP与SIP Servlet比较

(1)适用平台不同:JAIN SIP适用于J2SE平台;SIP Servlet适用于J2EE平台。

(2)SIP Servlet旨在enabling communication capabilities to non-telecom developers,这使得它更适合于各种业务的开发,包括企业级应用;而JAIN SIP没有这一特点。个人认为,这是决定SIP Servlet广泛用于聚合业务开发的很重要的因素。

(3)JAIN SIP在使用和开发应用时比SIP Servlet API更友好;SIP Servlet运行在Java EE容器上,因此使用环境更加强健。这种说法不太理解,是指JAIN SIP编程模式更简单吗?

(4)JAIN SIP API典型应用是用于客户端应用的开发;SIP Servlet API更适合于服务器端应用的开发。

你可能感兴趣的:(JAIN SIP & SIP Servlet)