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 SipProvider và ListeningPoint 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.
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.
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:
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.
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.
Request và Response interface được kế thừa từ Message interface.
b. HeaderFactory:
HeaderFactory cho phép HelloPhone tạo ra các SIP header field.
c. AddressFactory:
AddressFactory interface cho phép tạo các đối tượng address khác nhau
Không có nhận xét nào:
Đăng nhận xét