Service Description: WSDL

Một phần của tài liệu giao thức quản lý mạng và công nghệ dịch vụ web thực hiện khai thác đường dây thuê bao (Trang 61 - 101)

WSDL là một ñặc tả ñịnh nghĩa phương pháp mô tả dịch vụ Web trong một ngữ pháp XML chung, nó thường ñược lưu dưới dạng file *.wsdl, ñược máy trạm sử dụng mỗi khi kết nối với dịch vụ Web. WSDL mô tả 4 thông tin quan trọng của dịch vụ Web[8]:

Thông tin mô tả tất cả các Hàm ñược công bố.

Thông tin kiểu dữ liệu cho tất cả các thông ñiệp yêu cầu và phản hồi. Thông tin về giao thức truyền tải ñược sử dụng.

Thông tin ñịa chỉ xác ñịnh dịch vụ cụ thể.

WSDL không nhất thiết phải gắn liền với một hệ thống thông ñiệp XML cụ thể, nhưngnó bao gồm phần mở rộng dựng sẵn cho mô tả các dịch vụ SOAP.

Ví dụ 2.4 cung cấp một file WSDL ñơn giản. File này mô tả các giao diện công bố dịch vụ thông tin thời tiết ở trên. Có hai ñiểm chính cần quan tâm.

63

ðầu tiên, Các phần tử <message> xác ñịnh các thông ñiệp XML riêng biệt

ñược chuyển giao giữa các máy tính. Trong trường hợp này, chúng ta có một getWeatherRequest và getWeatherResponse.

Thứ hai, các phần tử <service> xác ñịnh rằng dịch vụ sẵn sàng dưới dạng SOAP tại http://localhost:8080/soap/servlet/rpcrouter[8].

<?xml version="1.0" encoding="UTF-8"?> <definitions name="WeatherService" targetNamespace="http://www.ecerami.com/wsdl/WeatherService.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.ecerami.com/wsdl/WeatherService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <message name="getWeatherRequest"> <part name="zipcode" type="xsd:string"/> </message>

<message name="getWeatherResponse"> <part name="temperature" type="xsd:int"/> </message> <portType name="Weather_PortType"> <operation name="getWeather"> <input message="tns:getWeatherRequest"/> <output message="tns:getWeatherResponse"/> </operation> </portType>

<binding name="Weather_Binding" type="tns:Weather_PortType">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getWeather"> <soap:operation soapAction=""/>

<input>

64 namespace="urn:examples:weatherservice" use="encoded"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:weatherservice" use="encoded"/>

</output> </operation> </binding> <service name="Weather_Service">

<documentation>WSDL File for Weather Service</documentation> <port binding="tns:Weather_Binding" name="Weather_Port">

<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/> </port> </service> </definitions>

Ví dụ 2.4 : Mô tả một file *.WSDL 2.4.1 Các thành phần trong file WSDL

ðặc tả WSDL chia làm 6 phàn tử chính[8]:

definitions: Phần tử <definition> phải là phần tử gốc của tài liệu WSDL. Nó

ñịnh nghĩa tên của dịch vụ Web, khai báo nhiều namespace ñược sử dụng

trong suốt phần còn lại của tài liệu, và chứa tất cả các phần tử dịch vụ ñược mô tả ở ñây.

Types: Phần tử <types> mô tả tất cả các kiểu dữ liệu ñược sử dụng giữa máy trạm và máy chủ. WSDL không bị ràng buộc vào một hệ thống duy nhất, nhưng nó mặc ñịnh sử dụng ñặc tả W3C XML Schema. Nếu dịch vụ chỉ sử dụng các kiểu dựng sẵn, ñơn giản của XML Schame, như string, integer, thì phần tử types không cần thiết phải có.

Message: Phần tử <message> mô tả một thông ñiệp một chiều, nó là một thông ñiệp yêu cầu hoặc phản hồi. Nó ñịnh nghĩa tên của thông ñiệp và bao gồm không hoặc có thêm phần tử <part> có thể tham chiếu tới các tham số hoặc giá trị mà thông ñiệp trả về.

portType: Phần tử <portType> bao gồm nhiều phần tử <message> dưới hình thức hoàn toàn một chiều hoặc thao tác di chuyển vòng tròn. Ví du, một

65

portType có thể kết hợp một thông ñiệp yêu cầu và một thông ñiệp phản hồi trong một thao tác Request/Response ñơn lẻ, ñây là cách thông thường nhất ñược sử dụng trong các dịch vụ SOAP. Chú ý rằng một port Type có thể (và thường xuyên) ñịnh nghĩa nhiều thao tác.

Binding: Phần tử <binding> mô tả các chi tiết cụ thể một dịch vụ sẽ ñược thực thi trên môi trường mạng. WSDL gồm có các ñịnh nghĩa mở rộng dựng sẵn về các dịch vụ SOAP, và thông tin cụ thể của SOAP tại ñây.

Service: Phần tử <service> ñịnh nghĩa ñịa chỉ thực hiện một dịch vụ cụ thể. Thông thường nhất là một URL ñể thực hiện dịch vụ SOAP.

Hình 2.4.1 - ðặc tả WSDL

Ngoài 6 phần tử chính, ñặc tả WSDL cũng ñịnh nghĩa các phần tử phụ trợ: documentation: Phần tử <documentation> ñược sử dụng ñể cung cấp tài liệu mà con người có thể hiểu và có thể ñược ñưa vào trong bất kỳ một phần tử WSDL khác.

Import:Phần tử <import> ñược sử dụng ñể nhập khẩu các tài liệu WSDL khác hoặc các XML Schema. ðiều này cho phép các tài liệu WSDL mô-dun hóa hơn. Ví dụ, hai tài liệu WSDL có thể cùng nhập khẩu các phần tử cơ bản và chưa bao gồm các phần tử dịch vụ của nó ñể tạo ra cùng một dịch vụ trên hai ñịa chỉ vật lý.

2.4.2 Kiểu dữ liệu XML Schema.

ðể một máy trạm SOAP giao tiếp hiệu quả với một máy chủ SOAP, máy trạm và máy chủ phải thống nhất một hệ thống kiểu dữ liệu. Mặc ñịnh, XML 1.0 không cung cấp một hệ thống kiểu dữ liệu. Ngược lại, mọi ngôn ngữa lập trình cung

66

cấp một vài cơ sở ñể khai báo các kiểu dữ liệu, như integer, float, double và string. Một trong những thách thức lớn nhất trong việc xây dựng dịch vụ Web là tạo một hệ thống kiểu dữ liệu chung có thể ñược sử dụng bởi tập hợp ña dạng các ngôn ngữ lập trình chạy trên tập hợp ña dạng các hệ ñiều hành[8].

WSDL không có mục ñích tạo ra kiểu dữ liệu chuẩn cho XML. Trong thực tế, WSDL ñược ñặc tả một cách mềm dẻo nhất và nó không bị ràng buộc với bất kỳ một hệ thống kiểu dữ liệu nào. Tuy nhiên, WSDL các kiểu ñược ñặc tả mặc ñịnh bởi W3C XML Schema. ðặc tả XML Schema hiện nay cũng ñược sử dụng rộng rãi nhất ñể ñặc tả kiểu dữ liệu[8].

Bảng 2.4.2 - Danh sách các kiểu dữ liệu dựng sẵn trong XML Schema Có hai vấn ñề quan trọng cần xem xét ở ñây: Có hai vấn ñề quan trọng cần xem xét ở ñây:

67

Thứ nhất, ñặc tả XML Schema gồm có một hệ thống kiểu dữ liệu cơ bản ñể mã hóa hầu hết các kiểu dữ liệu. Hệ thống kiểu này bao gồm một danh sách dài các kiểu ñơn giản dựng sẵn, như string, float, integer, double, time, date, như bảng trên.

Nếu ứng dụng có sử dụng những kiểu ñơn giản ñó, thì không cần phải thêm vào

WSDL phần tử types, và file WSDL sẽ hết sức ñơn giản.

Thứ hai, ñặc tả XML Schema cung cấp một cơ sở ñể tạo mới các kiểu dữ liệu. ðiều này rất quan trọng nếu muốn tạo các kiểu dữ liệu dựa trên những gì ñã ñược ñịnh nghĩa trong lược ñồ. Ví dụ, một dịch vụ có thể trả về một mảng các giá trị có kiểu float hoặc một ñối tượng phức tạp hơn như bảng giá cổ phiếu chứa các số liệu high, low, và khối lượng của một cổ phiếu cụ thể. Mặc dù dịch vụ dựa trên các kiểu dữ liệu ñơn giản của XML Schema, ta vẫn phải khai báo một kiểu dữ liệu mới trong phần tử types của WSDL.

Ví dụ khai báo kiểu dữ liệu mới là mảng trong một file WSDL ñặc tả về dịch vụ cung cấp bảng giá chứng khoán[8]:

<types> <…. targetNamespace="http://www.ecerami.com/schema" ….> <complexType name="ArrayOfString">

<complexContent> <restriction base="soapenc:Array">

<attribute ref="soapenc:arrayType" wsdl:arrayType="string[]"/> </restriction> </complexContent> </complexType>

<complexType name="ArrayOfDouble">

<complexContent> <restriction base="soapenc:Array">

<attribute ref="soapenc:arrayType" wsdl:arrayType="double[]"/>

</restriction> </complexContent> </complexType> </schema> </types>

<message name="PriceListRequest">

<part name="sku_list" type="xsd1:ArrayOfString"/> </message> <message name="PriceListResponse">

68

Ví dụ khai báo kiểu dữ liệu mới phức tạp hơn:

<types> <xsd:schema targetNamespace="http://www.ecerami.com/schema" xmlns="http://www.w3.org/2001/XMLSchema">

<xsd:complexType name="product">

<xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="description" type="xsd:string"/>

<xsd:element name="price" type="xsd:double"/> <xsd:element name="SKU" type="xsd:string"/>

</xsd:sequence></xsd:complexType> </xsd:schema> </types>

2.5. Service Discovery: UDDI

UDDI hiện tại biểu diễn tầng tìm kiếm trong chồng giao thức của dịch vụ Web. Nguồn gốc ban ñầu UDDI ñược tạo bởi Microsoft, IBM và Ariba, biểu diễn một ñặc tả kỹ thuật công bố và tìm kiếm thương mại của các dịch vụ Web. Trọng tâm của nó bao gồm hai phần[8].

Thứ nhất UDDI là ñặc tả kỹ thuật xây dựng và ñăng ký phân phối thương mại của dịch vụ Web. Dữ liệu ñược lưu trữ theo ñịnh dạng XML. ðặc tả UDDI bao gồm các chi tiết API cho phép tìm kiếm dữ liệu ñang tồn tại và công bố dữ liệu mới.

Thứ hai, ñăng ký thương mại UDDI là một thực thi ñầy ñủ hoạt ñộng của ñặc tả UDDI (thường ñược gọi là ñám mây dịch vụ).

Ra mắt tháng 5 năm 2001 bởi Microsoft và IBM, hiện giờ UDDI Registry cho phép bất cứ ai tìm kiếm các dữ liệu UDDI. Nó cũng cho phép các Công ty bất kỳ tự ñăng ký dịch vụ của mình. Dữ liệu trong UDDI ñược chia làm ba loại[8]:

Trang trắng: loại này bao gồm thông tin tổng quát về công ty cụ thể, ví dụ tên, mô tả ngành nghề, ñịa chỉ.

Trang vàng: Bao gồm các dữ liệu phân loại chung về công ty hoặc dịch vụ ñược cung cấp. Ví dụ, dữ liệu này có thể bao gồm ngành công nghiệp, sản phẩm, hay mã số ñịa lý dựa trên nguyên tắc phân loại chuẩn.

69

Trang xanh: Bao gồm thông tin kỹ thuật về một dịch vụ Web (một con trỏ ñến một ñặc ñiểm kỹ thuật bên ngoài và một ñịa chỉ ñể gọi các dịch vụ Web).

2.5.1 Hoạt ñộng của UDDI

Một hệ thống ñăng ký UDDI chứa các mô tả chương trình truy nhập của các doanh nghiệp và các dịch vụ họ cung cấp. Nó cũng chứa các tài liệu tham chiếu, ñặc tả về nghành nghề mà dịch vụ Web hỗ trợ. Các ñịnh nghĩa phân loại và các hệ thống ñịnh danh. UDDI cung cấp một mô hình và lược ñồ lập trình, nó ñịnh nghĩa các qui tắc giao tiếp với hệ thống ñăng ký. Tất cả các API trong ñặc tả UDDI ñược ñịnh nghĩa dưới dạng XML, ñược ñặt trong một thẻ envelop và ñược gửi bằng HTTP[12].

Hình 2.5.1.1 - Luồng thông ñiệp trong hệ thống giữa máy trạm và nút ñăng ký UDDI

Hình 2.5.1.1 minh họa việc truyền tải thông ñiệp UDDI, từ một yêu cầu SOAP của máy trạm trên HTTP tới một nút ñăng ký và trở lại. SOAP server của máy chủ ñăng ký xử lý thông ñiệp UDDI SOAP, xử lý nó, và trả về một phản hồi SOAP tới máy trạm. Tương tự như các vấn ñề về chính sách ñăng ký, các yêu cầu máy trạm liên quan ñến sửa ñổi dữ liệu phải ñược bảo ñảm và chứng thực các giao dịch[12].

70

Hình 2.5.1.2 - Lược ñồ tác nghiệp của UDDI

Hình 2. 5.1.2 minh họa cách một ñăng ký UDDI ñược phổ biến với dữ liệu và cách các khách hàng tìm kiếm và sử dụng thông tin. Một ñăng ký UDDI ñược xây dựng trên dữ liệu ñược cung cấp bởi các khách hàng. Các bước tạo dữ liệu hữu dụng trong UDDI:

Bước 1, công bố thông tin ñể bắt ñầu ñăng ký khi các công ty phần mềm và các cơ quan tiêu chuẩn ñịnh nghĩa các ñặc tả kỹ thuật về ngành nghề công nghiệp hoặc kinh doanh, mà họ ñăng ký trong UDDI. ðiều này thường ñược gọi là tModels[12].

Trong bước 2, các công ty cũng ñăng ký bản mô tả kinh doanh các dịch vụ của họ. Một bản ghi UDDI sẽ theo dõi tất cả các ñiểm này bằng cách gán cho mỗi ñiểm một ñịnh danh duy nhất, ñược biết ñến như là một khóa ñịnh danh phổ biến duy nhất (Unique Universal Identifier - UUID) như trong bước 3. Một khóa UUID ñược

ñảm bảo là duy nhất và không bao giờ thay ñổi trong một bản ghi UDDI. Những

khóa này trông giống như một chuỗi số hexa ngẫu nhiên có ñịnh dạng (ví dụ, C0B9FE13-179F-413D-8A5B-5004DB8E5BB2). Chúng có thể ñược sử dụng ñể tham chiếu ñến một ñiểm mà chúng ñược gán vào. Các khóa UUID tạo trong một bản ghi chỉ có nghĩa nội trong bản ghi ñó. Các máy trạm khác, như siêu thị ñiện tử, máy tìm kiếm, các ứng dụng thương mại trong bước 4, sử dụng một ñăng ký UDDI

71

dịch vụ ñó, cho phép tích hợp ñơn giản và uyển chuyển như minh họa trong bước 5[12].

2.5.2 Mô hình dữ liệu UDDI

UDDI bao gồm một XML Schema mô tả 4 kiểu thông tin lõi[8]:

Hình 2.5.2 - Mô hình dữ liệu UDDI businessEntity:

Phần tử businessEntity gồm có thông tin về một thực thể kinh doanh. Như tên, mô tả, ñịa chỉ, và thông tin liên hệ. Ví dụ: dưới ñây là một bản ghi từ Microsoft businessEntity

<businessEntity businessKey="0076b468-eb27-42e5-ac09-9955cff462a3" operator="Microsoft Corporation" authorizedName="Martin Kohlleppel">

<name>Microsoft Corporation</name> <description xml:lang="en"> ….. </description>

<contacts> ….</contacts> <identifierBag> <keyedReference tModelKey="uuid:8609c81e-ee1f-4d5a-b202-3eb13ad01823" keyName="D-U-N-S" keyValue="08-146-6849" /> </identifierBag> <categoryBag> <keyedReference

tModelKey="uuid:c0b9fe13-179f-413d-8a5b-5004db8e5bb2" keyName="NAICS: Software Publisher" keyValue="51121" /> </categoryBag> </businessEntity>

72

Như ñăng ký ở trên, một dịch vụ kinh doanh nhận một giá trị khóa duy nhất,

ở ñây, khóa businessKey của microsoft là 0076b468-eb27-42e5-ac09-

9955cff462a3. Khóa ñược sử dụng ñể nhận biết một dịch vụ kinh doanh với một dịch vụ ñược công bố. Ngoài thông tin liên lạc cơ bản, bản ghi businessEntity có thể bao gồm tùy chọn ñịnh danh (<identifierBag>) và loại(<categoryBag>) dịch vụ kinh doanh. Các ñịnh danh có thể biểu diễn giá trị bất kỳ xác ñịnh duy nhất một công ty nào ñó.

businessService:

Phần tử businessService bao gồm thông tin về một dịch vụ Web hoặc một nhóm các dịch vụ Web liên quan. Bao gồm tên, mô tả, và danh sách tùy chọn của bindingTemplates[8].

Ví dụ, một bản ghi ñơn giản businessService cho dịch vụ Delayed Stock Quote của Xmethods.net

<businessService

serviceKey="d5921160-3e16-11d5-98bf-002035229c64" businessKey="ba744ed0-3aaf-11d5-80dc-002035229c64"> <name>XMethods Delayed Stock Quotes</name>

<description xml:lang="en">20-minute delayed stock quotes</description> <bindingTemplates> <bindingTemplate

serviceKey="d5921160-3e16-11d5-98bf-002035229c64" bindingKey="d594a970-3e16-11d5-98bf-002035229c64">

<description xml:lang="en"> SOAP binding for delayed stock quotes service </description>

<accessPoint URLType="http"> http://services.xmethods.net:80/soap </accessPoint> <tModelInstanceDetails>

<tModelInstanceInfo tModelKey="uuid:0e727db0-3e14-11d5-98bf- 002035229c64" /> </tModelInstanceDetails> </bindingTemplate> </bindingTemplates> </businessService>

73 bindingTemplate

Phần tử bindingTemplate bao gồm thông tin về cách và nơi truy nhập một dịch vụ Web cụ thể. Ví du, bản ghi Xmethods.net trong ví dụ trên, chúng ta có thể thấy dịch vụ Stock Quote sẵn sàng ñể thực hiện qua SOAP tại ñịa chỉ

http://services.xmethods.net:80/soap. Các binding không nhất thiết chỉ tham chiếu tới các dịch vụ HTTP-based. Trong thực tế, UDDI binding có thể chỏ tới dịch vụ email-based, dịch vụ Fax-based, dịch vụ FTP-based, hoặc thậm trí cả dịch vụ Telephone-based[8].

tModel

tModel là kiểu dữ liệu lõi cuối cùng, nhưng khó nắm bắt nhất. tModel là viết tắt của từ mô hình kỹ thuật. tModels chủ yếu ñược sử dụng ñể cung cấp các con trỏ, trỏ ñến kỹ thuật bên ngoài. Ví dụ, bindingTemplate trong dịch vụ Stock Quote của Xmethods cung cấp thông tin về nơi truy nhập SOAP binding, nhưng không cung cấp thông tin làm thế nào ñể nhìn thấy nó. Phần tử tModel ñiền chỗ khuyết này bằng cách cung cấp một con trỏ trỏ tới một ñặc tả bên ngoài. Ví dụ, ở ñây tModel ñược tham chiếu bởi XMethods Stock Quote binding[8]:

<tModel

tModelKey="uuid:0e727db0-3e14-11d5-98bf-002035229c64"

operator="www.ibm.com/services/uddi" authorizedName="0100001QS1"> <name>XMethods Simple Stock Quote</name>

<description xml:lang="en">Simple stock quote interface</description> <overviewDoc> <description xml:lang="en">wsdl link</description> <overviewURL>

http://www.xmethods.net/tmodels/SimpleStockQuote.wsdl

</overviewURL> </overviewDoc> <categoryBag>

<keyedReference tModelKey="uuid:c1acf26d-9672-4404-9d70- 39b756e62ab4" keyName="uddi-org:types" keyValue="wsdlSpec" />

74

Trong bản ghi này Xmethods ñược thi hành tốt nhất bằng ñặc tả giao diện SOAP sử dụng WSDL, và ñược cung cấp một con trỏ thực sự tới file WSDL. Chúng ta không phải luôn luôn chỉ rõ file WSDL, có thể chỉ cần chỉ ñịnh một trang web chung với các chỉ dẫn chi tiết về giao tiếp với dịch vụ[8].

tModel là cực kỳ quan trọng bởi vì chúng cho phép xác ñịnh các ñặc tả kỹ thuật ñược triển khai. Quan trọng hơn, nếu hai công ty tham chiếu tới cùng một tModel, ta có thể ñược ñảm bảo rằng cả hai công ty triển khai cùng một ñặc tả[8].

2.6 Bảo mật dịch vụ Web

Cả hai XML-RPC và SOAP ñều chạy trên HTTP vì vậy nó ñược kế thừa tất cả các tiêu chuẩn an toàn cho HTTP. Ngoài ra ñể ñảm bảo tính toàn vẹn và riêng tư của thông ñiệp XML truyền trên mạng người ta ñưa ra một chuẩn gọi là WS- Security (bảo mật cho dịch vụ Web).

Một phần của tài liệu giao thức quản lý mạng và công nghệ dịch vụ web thực hiện khai thác đường dây thuê bao (Trang 61 - 101)