Thứ Tư, 6 tháng 8, 2014

[JAIN SIP] Chương 5 : Giới thiệu JAIN SIP

Chương 5 : Giới thiệu JAIN SIP
I. JAIN SIP là gì ?
JAIN SIP là Java API Specification dành để phát triển SIP trong môi trường J2SE. JAIN SIP API là low-level API và  cung cấp cho người phát triển ứng dụng các tính năng sau:
- Xây dựng và phân tích SIP Message.
- Gởi và nhận SIP Message ở transaction layer.
- Gởi và nhận SIP Message ở transport layer.
Ngoài ra, JAIN SIP API cũng cung cấp tính năng cho SIP Dialog để người viết ứng dụng dễ dàng truy cập và xử lý SIP Dialog.
II. Phiên bản JAIN SIP:
Hiện tại có 3 phiên bản JAIN SIP : 1.0, 1.1 và 1.2 . Ba phiên bản này có 1 số tính năng khác nhau. Trong phần trình bày chúng tôi sử dụng phiên bản JAIN SIP 1.2.
III. Kiến trúc JAIN SIP:
Kiến trúc JAIN SIP dựa trên một số các pattern (pattern : các tính năng được định nghĩa sẵn, bạn được phép sử dụng nó nhưng phải đúng theo định nghĩa)
- peer-provider pattern.
- Factory pattern.
- Event-listener pattern.
1. Peer-provider pattern:
Đối với JAIN SIP, peer là một phần mềm thực hiện SIP, còn Provider cho phép các peer gởi và nhận SIP Message.  Provider được biểu diễn trong Java dưới dạng SipProvider interface.
Bổ sung thêm cho Siprovider interface, 2 interface cũng liên quan đến sự thực hiện SIP:
- SipStack interface : cho phép lập trình viên quản lý và cấu hình SIP stack. Sự cấu hình SIP stack thông qua SipStack class để định nghĩa các thuộc tính như: stack name, outbound proxy,…SipStack cũng cho phép tạo ra 2 đối tượng SipProviderListeningPoint interface.
- ListeningPoint interface : biểu diễn socket (địa chỉ IP, port và phương thức vận chuyển) mà đối tượng SipProvider được sử dụng để gởi và nhận message.  
P6_peerpattern.png
2. Factory Pattern:
Factory được sử dụng để tạo ra các đối tượng SIP, bao gồm tất cả các tính năng của SIP vào trong đó. Factory trong JAIN SIP là SipFactory class.
p6_factoryPattern.png
3. Event-Listener Pattern :
Cơ chế xử lý sự kiện trong JAIN SIP là SipListener interface, khi SIP Stack nhận SIP Message từ mạng thì SipProvider chuyển sự kiện nhận này đến SipListener. Có 2 loại sự kiện:
- RequestEvent : sự kiện khi Sip request được nhận từ mạng.
- ResponseEvent: sự kiện khi Sip response được nhận từ mạng.
4. SipFactory, SipStack, SipProvider và ListeningPoint:
p5_table_sipFactory.png
p5_table_sipStack.png
p5_table_sipProvider.png
p6_detailSipFactoryStackProvider.png
Hình trên là thứ tự tạo các đối tượng để thực hiện SIP
- Bước 1: tạo ra đối tượng SipFactory qua phương thức getInstance(),
- Bước 2: tạo ra đối tượng SipStack bằng cách gọi phương thức createSipStack() của đối tượng SipFactory. Phương thức createSipStack() cần cung cấp đối tượng properties chứa các tham số để cấu hình Sip stack.
- Bước 3:  tạo đối tượng ListeningPoint bằng cách gọi phương thức createListeningPoint() của đối tượng SipStack. ListeningPoint chứa địa chỉ IP, port và phương thức vận chuyển mà SipProvider sử dụng để gởi và nhận message.  Phương thức createListeningPoint cần cung cấp địa chỉ IP, port và phương thức vận chuyển.
- Bước 4: tạo đối tượng SipProvider qua phương thức createSipProvider() của đối tượng SipStack. Phương thức này cung cấp đối tượng ListeningPoint mà đã được tạo trước đó. Ngoài ra, SipProvider cũng cung cấp các sự kiện đến SipListener ngay khi chúng xảy ra. Do đó, Sip provider cũng thực hiện tính năng của SIP dialog và cho phép ứng dụng truy cập đến các SIP dialog.
5. SipListener:
SipListener interface cung cấp các phương thức xử lý sự kiện trong quá trình kết nối cũng như  trao đổi sip message giữa các UA.
p5_table_sipListener.png
6. Các Factory interface khác: MessageFactory, HeaderFactory, AddressFactory
Nhằm bổ sung cho SipFactory, JAIN SIP API định nghĩa 3 Factory khác: MessageFactory, HeaderFactory và AddressFactory.  HelloPhone thực hiện các phương thức của 3 Factory này để tạo ra các đối tượng SIP message, SIP header và SIP Address.
a. Chi tiết MessageFactory:
MessageFactory cho phép chương trình tạo đối tượng Request và Response để biểu diễn SIP request và response message.  MessageFactory có 2 phương thức chính : createRequest() và createResponse(). 2 phương thức này đòi hỏi nhiều tham số đầu vào khác nhau, chúng ta sẽ tìm hiểu về tham số đầu này trong những phần sau.
p5_table_MessageFactory.png
Request và Response interface được kế thừa từ Message interface.
p5_table_MessageRequestResponse.png
b. HeaderFactory:
HeaderFactory cho phép HelloPhone tạo ra các SIP header field.
p5_table_HeaderFactory.png
c. AddressFactory:
AddressFactory interface cho phép tạo các đối tượng address khác nhau
p5_table_AddressFactory.png
p6_detailAddress.png

Không có nhận xét nào:

Đăng nhận xét