Chương I: Công nghệ Web Service Type : Thành phần type định nghĩa kiểu dữ liệu được sử dụng cho Web Service Để đảm bảo tính không phụ thuộc vào platform, WSDL sử dụng cấu trúc của lược đồ XML để định nghĩa kiểu dữ liệu. Message : Thành phần message dùngđể định nghĩa các thành phần dữ liệu và các thông điệp mà nó được gọi tới. Mỗi thông điệp có thể bao gồm một hoặc nhiều phần, các thành phần này có thể so sánh với các câu lệnh của các lời gọi hàm trong các ngôn ngữ lập trình truyền thống. PortType : Đây là thành phần quan trọng nhất trong một tài liệu WSDL.
Nó được sử dụng để mô tả Web Service, các thao tác được thực thi và các lời gọi thông điệp. Thành phần port type có thể được so sánh với các thư viện hàm (hoặc các module, các lớp ) trong các ngôn ngữ lập trình. Trong thành phần <port Type>, ta thường gặp 4 kiểu thao tác được WSDL định nghĩa dưới đây: Kiểu thao tác Mô tả One-way Thao tác này thể hiện rằng nó chỉ nhận các lời gọi thông điệp nhưng không trả lại thông điệp đáp ứng Request-response Thao tác này bao gồm việc nhận các thông điệp yêu cầu và trả về các thông điệp đáp ứng Solicit-response Thao tác này sẽ gửi đi các yêu cầu và đợi các đáp ứng Notification Thao tác này sẽ gửi đi các yêu cầu nhưng không đợi để nhận các đáp ứng Binding: Thành phần này định nghĩa các định dạng thông điệp, các mô tả cụ thể về các giao thức cho mỗi port. Lập trình Web Service Trang 14 / 86 Chương I: Công nghệ Web Service Hình 5: Mô tả thành phần binding trong tài liệu WSDL Một thành phần binding thông thường bao gồm 2 thuộc tính: name và type.
Thuộc tính “name” định nghĩa tên của “binding”, và thuộc tính “type” trỏ đến “port” của binding, trong ví dụ này port của binding là “glossaryTerms”. Thành phần soap:binding có 2 thuộc tính là “style” và “transport”. Thuộc tính style có thể là “rpc” hoặc “document”. Trong ví dụ trên chúng ta sử dụng “document”.
Thuộc tính transport định nghĩa giao thức vận chuyển thông điệp SOAP. Trong ví dụ trên sử dụng giao thức HTTP. Hình 6: Minh họa ví dụ của một tài liệu WSDL Trong ví dụ trên, thành phần <portType> định nghĩa “glossaryTerm” như là tên của một Port, và “getTerm” như tên của một thao tác. Thao tác “getTerm” có thông điệp nhập vào gọi là “getTermRequest” và có thông điệp xuất ra gọi là “getTermResponse”.
Thành phần <message> định nghĩa các phần của mỗi thông điệp và kiểu dữ liệu kết hợp với các thông điệp đó. Nếu so sánh với các ngôn ngữ lập trình truyền thống, Lập trình Web Service Trang 15 / 86 Chương I: Công nghệ Web Service glossaryTerm có thể được coi như là một thư viện hàm, “getTerm” là một hàm với đối số truyền vào là “getTermRequest” và trả lại lại kết quả là getTermResponse. Đăng ký dịch vụ UDDI 4. Tổng quan về UDDI UDDI là một chuẩn dựa trên XML dùng cho việc mô tả, công bố và tìm kiếm Web Service.
UDDI được viết tắt của Universal Description, Discovery and Integration. UDDI là thư mục dùng cho việc lưu trữ các thông tin về Web Service. UDDI là thư mục của một giao diện Web Service được mô tả bởi WSDL. UDDI giao tiếp thông qua SOAP.
UDDI cùng với SOAP và WSDL được xem là 3 chuẩn của Web Service. UDDI là một kỹ thuật mở đầu tiên cho phép các quy trình thương mại điện tử có thể khám phá lẫn nhau và định nghĩa cách thức tương tác với nhau qua Internet. Các thành phần của UDDI UDDI gồm 2 thành phần chính: Phần đăng ký của tất cả các Web Service’s metadata, bao gồm cả việc trỏ đến tài liệu WSDL mô tả dịch vụ[16]. Phần thiết lập WSDLPort type định nghĩa cho các thao tác và tìm kiếm thông tin đăng ký.
UDDI xây dựng dựa trên các giao thức chuẩn Internet được công bố bởi W3C và IETF như XML, HTTP, và DNS. UDDI sử dụng WSDL để mô tả giao diện của Web Service. Thêm nữa tính năng độc lập với nền tảng ngôn ngữ lập trình đã được điều hợp cùng với giao thức SOAP. Mô hình dữ liệu của UDDI UDDI bao gồm lược đồ XML, mô tả bốn kiểu cấu trúc dữ liệu dưới đây: BusinessEntity BusinessService BindingTemplate tModel publisherAssertion Lập trình Web Service Trang 16 / 86 Chương I: Công nghệ Web Service a.
Cấu trúc dữ liệu businessEntity Cấu trúc dữ liệu businessEntity trình bày nhà cung cấp Web Service. Cấu trúc này chứa các thông tin về công ty, bao gồm danh sách liên lạc, thông tin, phân biệt các tổ chức thương mại, và danh sách các nhà cung cấp dịch vụ web. Cấu trúc dữ liệu businessService Cấu trúc dữ liệu business service trình bày một Web Service độc lập được cung cấp bởi business entity. Nó mô tả các thông tin về cách thức gắn kết với Web Service, định nghĩa kiểu Web Service và phân loại danh mục được liệt kê trong đó.
Hình 7: Minh họa cấu trúc dữ liệu businessService Chú ý rằng sử dụng dấu hiệu nhận dạng duy nhất – Universally Unique Identifiers trong thuộc tính BusinessKey và serviceKey. Tất cả các business entity và business service đều là dấu hiệu nhận dạng duy nhất trong UDDI registries thông qua việc chỉ định UDDI bởi việc đăng ký khi thông tin được nhập vào lần đầu. Cấu trúc dữ liệu bindingTemplate BindingTemplate là kĩ thuật mô tả của Web Service được trình bày bởi cấu trúc dữ liệu Business Service. Binding template trình bày sự hoạt động thực tế của Web Service, mô tả công nghệ sử dụng để giao tiếp với Web Service.
Một Business Service có thể có thể có nhiều binding template, cho nên dịch vụ phải chỉ rõ các hành động cụ thể khác nhau trong cùng một dịch vụ. Cấu trúc dữ liệu tModel tModel là lõi trong cùng của kiểu dữ liệu, nhưng rất khó có khả năng để có thể nắm bắt được hết. tModel là chuẩn cho mô hình kĩ thuật tModel là phương pháp để mô tả một vài quy trình thương mại, dịch vụ và các cấu trúc mẫu lưu trữ trong UDDI registry. Bất kì một khái niệm trừu tượng nào đều có thể được đăng Lập trình Web Service Trang 17 / 86 Chương I: Công nghệ Web Service ký trong UDDI như là một tModel.
Ví dụ: chúng ta có thể định nghĩa ra một kiểu cổng (port type) WSDL mới, và đồng nghĩa với đó ta có thể định nghĩa ra một tModel mới mà trình bày kiểu cổng đó trong UDDI. Sau đó, ta có thể chỉ định ra dịch vụ thương mại mà thực thi kiểu cổng đó bằng việc kết hợp với tModel với một business service’s binding template. Cấu trúc dữ liệu publisherAssertion Đây là một cấu trúc dữ liệu quan hệ mà nó đặt sự kết hợp giữa hai hoặc nhiều cấu trúc dữ liệu businessEntity theo một kiểu quan hệ cụ thể, chẳng hạn như một công ty con hoặc một phòng ban. Cấu trúc dữ liệu pubisherAssertion bao gồm ba thành phần chính: fromkey (BusinessKey đầu tiên), toKey (bussinesskey thứ hai) và keyedReference.
KeyReference thiết kế ra kiểu mỗi quan hệ kết hợp trong cặp thuật ngữ keyName, keyValue trong tModel. Tham chiếu duy nhất bởi tModelkey. Tóm tắt bài học Web service được tạo ra bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng tìm thấy và truy cập tới các dịch vụ mà nó cung cấp, đồng thời vẫn có thể yêu cầu thông tin từ các dịch vụ khác. Web service bao gồm các mô đun độc lập để thực hiện yêu cầu nghiệp vụ của doanh nghiệp và được thực thi trên Server.
Ứng dụng cơ bản của Web service là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống. Web service khi được triển khai sẽ hoạt động theo mô hình client-server. Nó có thể được triển khai bởi một phần mềm ứng dụng phía Server như PHP, JSP, ASP.NET, … Web service cho phép client và server có thể tương tác được với nhau trên các nền tảng khác nhau mà không cần bất cứ thay đổi hay yêu cầu đặc biệt nào tuân theo định dạng XML. Web Service sử dụng nhiều công nghệ hỗ trợ khác nhau, đều dựa trên chuẩn mở - Ngôn ngữ XML – RPC - Giao thức truyền thông điệp SOAP - Ngôn ngữ mô tả Web Service - WSDL - Đăng ký dịch vụ UDDI Lập trình Web Service Trang 18 / 86 Chương II: Kiến trúc Web service CHƯƠNG II: KIẾN TRÚC WEB SERVICE Mục tiêu: Sau khi kết thúc chương này, bạn có thể: Hiểu về các tác nhân đối với Web Service: Service provider, Service registry, Service consumer Hiểu về kiến trúc phần tầng của Web Service Hiểu về mục đích, vai trò thiết kế của SOA đối với Web Service 1.
Cơ chế hoạt động của Web Service Cơ chế hoạt động của Web Service yêu cầu phải có 3 thao tác đó là : Find, Public, Bind. Hình 1: Mô tả cơ chế hoạt động của Web Service. Trong kiến trúc Web Service, Service Provider công bố các mô tả về các service thông qua Service Registry. Service Consumer tìm kiếm trong các Service Registry để tìm ra các service mà họ cần sử dụng.
Service Consumer có thể là một người hoặc cũng có thể là một chương trình. Kĩ thuật mô tả dịch vụ là một trong những thành phần chủ chốt của kiến trúc Web Service. Các thông tin mô tả đầy đủ nhất về kiến trúc Web Service được thể hiện trong hai tài liệu riêng biệt, đó là NASSL – Network Accessible Service Specification Language và Lập trình Web Service Trang 19 / 86 Chương II: Kiến trúc Web service WDS – Web-Defined Service. NASSL là một tài liệu dưới dạng chuẩn của XML cho các service chạy trên nền Network, nó được sử dụng để chỉ ra các thông tin hoạt động của Web Service, chẳng hạn như danh sách các service, các mô tả về service, ngày hết hạn của service và các thông tin liên quan đến các Service Provider, như tên, địa chỉ.
Tài liệu WDS là một tài liệu mang tính đáp ứng đầy đủ cho tài liệu NASSL. Khi ta kết hợp hai tài liệu này với nhau ta sẽ có được sự mô tả một cách đầy đủ về các dịch vụ để cho phía yêu cầu dịch vụ có thể dễ dàng tìm kiếm và gọi các dịch vụ đó. Kiến trúc phân tầng của Web Service Hình 1: Web Service technology stack Mô hình kiến trúc phân tầng của Web Service tương tự với mô hình TCP/IP được sử dụng để mô tả kiến trúc Internet. Hình 2: TCP/IP network model Các tầng truyền thống như Packaging, Description, và Discovery trong mô hình Web Service Stack là những tầng cung cấp khả năng tích hợp và cần thiết cho mô hình ngôn ngữ lập trình trung lập.