ngh Web service.
Từ các đặc trưng của Web services, chúng ta đều thấy rằng Web services là công nghệ hoàn toàn phù hợp để đảm bảo các tính năng liên kết hoạt động trong một hệ thống đào tạo trực tuyến với các nguyên nhân chính sau:
• Thông tin trao đổi giữa các hệ thống đào tạo trực tuyến như LOM, gói nội dung IMS, tất cả đều liên kết với chuẩn XML.
• Kiến trúc Web services là độc lập với các platform và ngôn ngữ lập trình khác nhau. Nó có thể triển khai, phát triển và giao tiếp trên hầu hết tất cả các ứng dụng, các hệ thống đào tạo trực tuyến được xây dựng bởi các nhà cung cấp khác nhau, trên các platform và các ngôn ngữ lập trình khác nhau hiện có mặt trên thị trường.
• Web services cung cấp một mô hình lập trình thống nhất cho phát triển và sử dụng các mạng riêng nội bộ cũng như các dịch vụ Web trên mạng Internet. Vì vậy, sự lựa chọn công nghệ có thể chuyển giao hoàn toàn cho những người phát triển và những người sử dụng lựa chọn.
Hình sau giải thích ta có thể áp dụng công nghệ Web services trong môi trường hệ thống đào tạo trực tuyến như thế nào.
Hình 22. Kiến trúc dịch vụ của một hệ thống đào tạo trực tuyến Kiến trúc này xác định làm thế nào để các hệ thống đào tạo trực tuyến có thể trao đổi các bản tin thông qua sự tương tác với các tác tử Web service trong mỗi hệ thống. Nhà cung cấp dịch vụ (Service Provider) là một platform trong đó có sự kiểm tra truy nhập vào các cổng của dịch vụ. Nó cũng có thể được coi như là một môi trường thực hiện dịch vụ hay là một nơi chứa các dịch vụ. Vai trò của nó trong các mô hình trao đổi bản tin giữa client và server tương tự như một server. Những người yêu cầu dịch vụ (Service Requestor) là các ứng dụng đang tìm kiếm và có nhu cầu thiết lập một tương tác với các dịch vụ. Môi giới khám phá
(Discovery Agency) là một tập các miêu tả dịch vụ có thể tìm kiếm được mà ở đó, các nhà cung cấp dịch vụ đưa lên các thông tin mô tả về dịch vụ của họ. Môi giới khám phá có thể được tập trung hay phân tán. Các thông tin học tập tuân theo chuẩn được giới thiệu bởi XML được xác định bởi SOAP sẽ được trao đổi giữa các nhà cung cấp và những người yêu cầu. Những nhà cung cấp xuất bản một file WSDL có chứa sự miêu tả của bản tin và thông tin cuối để cho phép người yêu cầu có thể tạo ra bản tin SOAP và gửi đến đúng địa chỉ cần gửi.
Trong phần này, ta sẽ tìm hiểu về Web services, các thành phần cơ bản của một Web services và làm thế nào để xây dựng một hệ thống đào tạo trực tuyến dựa trên công nghệ Web services.
1. Thế nào là 1 Web Service?
1.1) Khái quát.
Một dịch vụ Web được hiểu là một dịch vụ trên Internet, sử dụng một hệ thống chuẩn XML messaging (Extensible Markup Language), mà không phụ thuộc vào bất kỳ hệ điều hành hay ngôn ngữ lập trình nào. [Web Services Essentials- O’REILLY].
Hình 23. Các máy tính giao tiếp bằng hệ thống chuẩn XML XML là một tập con của SGML (Standard Generalized Markup Language) được W3C (World Wide Web Conrotium) định nghĩa. XML được thiết kế để thực hiện lưu trữ dữ liệu và phát hành trên các Web site không chỉ dễ dàng quản lý hơn, mà còn có thể trình bày đẹp mắt hơn. XML cho phép những người phát triển Web định nghĩa nội dung của các tài liệu bằng cách tạo đuôi mở rộng theo ý người sử dụng, không giống như HTML (Hypertext Markup Language), được khóa thành một tập các đuôi mở rộng theo chuẩn công nghiệp (mặc dù Microsoft và Netscape có tạo riêng cho mình). XML mượn các đặc điểm từ SGML, bao gồm nhu cầu tạo một khai báo loại tài liệu, định nghĩa những gì mà khách hàng được hỗ trợ khi nhận tài liệu này. [Dictionary of Computing].
Có một vài sự lựa chọn cho XML mesaging. Chẳng hạn, chúng ta có thể sử dụng XML Remote Procedure Calls (XML-RPC) hoặc SOAP. Hoặc cũng có thể chúng ta chỉ cần sử dụng HTTP GET/POST cho bất kỳ tài liệu XML nào. [Web Services Essentials-O’REILLY]
Hình 24. Các giao tiếp qua lại
Tuy không yêu cầu, nhưng một dịch vụ Web có thêm 2 đặc tính sau:
- Tự đặc tả (self-describing). Ví dụ chúng ta cho ra một dịch vụ Web mới, chúng ta buộc phải cung cấp một giao diện chung cho dịch vụ. Ít nhất, dịch vụ của chúng ta phải gồm có một tài liệu mô tả, để những nhà phát triển khác có thể dễ dàng hoàn thiện hơn dịch vụ đó.
- Khả năng khám phá (discoverable). Ví dụ chúng ta cho ra một dịch vụ Web mới, chúng ta muốn có một cách khá đơn giản để xuất bản nó. Như vậy đồng nghĩa với việc chúng ta cũng cần một cách đơn giản để người ta có thể tìm thấy được dịch vụ và giao diện chung của mình.
1.2) Kiến trúc dịch vụ Web.
Có hai cách để xem xét kiến trúc dịch vụ Web. Ta có thể khảo sát theo các vai trò riêng lẻ hoặc ta cũng có thể khảo sát theo chồng giao thức của dịch vụ Web (protocol stack).
- Cung cấp dịch vụ. - Yêu cầu dịch vụ. - Đăng ký dịch vụ.
Hình 25. Sơ đồ vai trò của kiến trúc dịch vụ Web
Một cách khác, ta có thể khảo sát theo chồng giao thức dịch vụ Web, hiện tại có 4 lớp chính (còn đang phát triển):
Hình 26. Chồng giao thức
a) XML messaging
XML đã bùng nổ trong một vài năm trở lại đây. Nó đã nhanh chóng được công nhận vì nó cho pháp những hệ thông máy tính đa dạng chia sẻ dữ liệu một cách dễ dàng, bất chấp hệ điều hành hay ngôn ngữ lập trình nào. Như vậy khi phát triển hệ thống dịch vụ Web thì XML là một lựa chọn tự nhiên. Sau đây chúng ta hãy xem xét 2 giao thức chính:
XML-RPC: là một giao thức đơn giản sử dụng XML messages để thực hiện RPCs (triệu gọi từ xa). Những yêu cầu sẽ được mã hoá trong XML và được gửi thông qua HTTP POST. Còn hồi đáp XML được nhúng trong phần thân của hồi đáp HTTP. Vì XML-RPC là một nền tảng độc lập nên nó cho phép những ứng dụng đa dạng liên lạc với nhau. Ví dụ, một Java client có thể liên lạc XML-RPC với một Perl server.
Ví dụ sau đây mô tả gửi đi zip code và yêu cầu về nhiêt độ của nơi có zip code đó:
<?xml version="1.0" encoding="ISO-8859-1"?> <methodCall> <methodName>weather.getWeather</methodName> <params> <param><value>10016</value></param> </params> </methodCall>
Và sau đây là câu trả lời của XML-RPC từ dịch vụ thời tiết:
<?xml version="1.0" encoding="ISO-8859-1"?> <methodResponse> <params> <param> <value><int>65</int></value> </param> </params> </methodResponse>
XML là cách dễ dàng nhất để bắt đầu với dịch vụ Web. Trong nhiều trường hợp, nó đơn giản hơn SOAP và dễ được chấp nhận hơn. Tuy nhiên, XML-RPC lại không có ngữ pháp để mô tả dịch vụ tương ứng.
SOAP: là một giao thức nền tảng của XML để trao đổi thông tin giữa những máy tính. SOAP được sử dụng trong những hệ thống messaging rất đa dạng, và có thể được giao, phân phát thông qua nhiều giao thức truyền tải, nhưng thực tế
thường là RPCs (triệu gọi từ xa) thông qua HTTP. Giống như XML-RPC, SOAP cũng là một nền tảng độc lập, vì vậy nó cũng cho phép những ứng dụng khác nhau liên lạc được.
Ví dụ đơn giản sau mô tả một yêu cầu SOAP:
<?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP- ENV="http://www.w3.org/2001/09/soap-envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:getWeather xmlns:ns1="urn:examples:weatherservic e" SOAP- ENV:encodingStyle="http://www.w3.or g/2001/09/soap-encoding/"> <zipcode xsi:type="xsd:string">10016</zipcode> </ns1:getWeather> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Có thể thấy rất rõ là một yêu cầu nhỏ SOAP thì phức tạp hơn nhiều một yêu cầu XML-RPC. Nó phải sử dụng cả XML namespaces và XML Schemas (2 khái niệm này sẽ được giải thích sau). Giống như XML-RPC nhưng phần thân của SOAP lại yêu cầu cả tên phương thức lẫn danh sách các tham số.
Sau đây là câu trả lời SOAP của dịch vụ thời tiết:
<?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP- ENV="http://www.w3.org/2001/09/soap-envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
xmlns:ns1="urn:examples:weatherservic e" SOAP- ENV:encodingStyle="http://www.w3.or g/2001/09/soap-encoding/"> <return xsi:type="xsd:int">65</return> </ns1:getWeatherResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Như ta thấy, câu trả lời chỉ đơn giản là một số nguyên.
b) Dịch vụ đặc tả - WSDL (Web Services Description Language)
• WSDL hiện nay là lớp đặc tả dịch vụ trong chồng giao thức dịch vụ Web. Một cách ngắn gọn, WSDL là một ngữ pháp của XML để chỉ ra giao diện chung của dịch vụ Web. Giao diện chung này bao gồm thông tin tất cả các hàm (public), thông tin các kiểu dữ liệu của tất cả XML messages, bao gồm thông tin về những giao thức truyền tải đặc biệt được sử dụng, và thông tin về địa chỉ để định vị dịch vụ. WSDL không nhất thiết phụ thuộc vàomột hệ thống XML messages đặc biệt, nhưng nó bao gồm những mở rộng có sẵn để đặc tả dịch vụ SOAP.
• Chúng ta hãy trở lại với ví dụ về dịch vụ thời tiết đã nêu trên. Sau đây là một mẫu tệp WSDL đặc tả giao diện chung của dịch vụ thời tiết. Ta sẽ dễ dàng nhận thấy ở đây có nhiều chi tiết hơn. Nhưng ta hãy tập trung vào 2 điểm chính: thứ nhất là phần tử message chỉ rõ những XML messages riêng lẻ mà đựơc truyền tải qua lại giữa các máy tính. Trong trường hợp này chúng ta có 2 phương thức: getWeatherRequest và getWeatherResponse.
Thứ hai, phần tử service chỉ rõ dịch vụ được cung cấp thông qua SOAP tại: http://localhost:8080/soap/servlet/rpcrouter. Ví dụ: WeatherService.wsdl <?xml version="1.0" encoding="UTF-8"?> <definitions name="WeatherService" targetNamespace="http://www.ecerami.com/wsdl/WeatherSe rvice.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.ecerami.com/wsdl/WeatherService.w sdl" 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> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 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>
Sử dụng WSDL, một client có thể định vị một dịch vụ mạng và sử dụng bất kỳ một hàm (đã có) công cộng nào. Với công cụ WSDL-aware, quá trình này hoàn toàn tự động, cho phép các ứng dụng dễ dàng tích hợp các dịch vụ mới mà chỉ cần một vài thao tác nhỏ, hoặc chỉ cần thêm vào những đoạn mã nhỏ mà thôi.
Ví dụ, IBM mới đây đã cho ra IBM Web Services Invocation Framework (WSIF). Với nó, bạn có thể chỉ rõ tệp WeatherService.wsd, tự động kéo theo những mô tả dịch vụ.
Chẳng hạn, ta có dòng lệnh sau:
java clients.DynamicInvoker
http://localhost:8080/wsdl/WeatherService.wsdl getWeather 10016
(viết liền trên một dòng) Kết quả:
Reading WSDL document from
'http://localhost:8080/wsdl/WeatherService.wsdl' Preparing WSIF dynamic invocation
Executing operation getWeather Result:
temperature=65 Done!
Sau đây ta sẽ làm một FAQ cho WSDL: Câu hỏi: WSDL là gì?
Trả lời:
- WSDL nghĩa là Web Services Description Language. - WSDL được viết trên XML.
- WSDL là một tài liệu XML.
- WSDL được sử dụng để đặc tả Web services. - WSDL cũng dùng để định vị Web services. - WSDL không còn là một chuẩn của W3C. - WSDL đặc tả Web Services.
Câu hỏi: WSDL là chuẩn cho ngôn ngữ đặc tả Web Services? Trả lời:
WSDL là một tài liệu được viết bằng XML. Tài liệu này dùng để đặc tả một dịch vụ Web. Nó định rõ vị trí của dịch vụ và trình bày tất cả các phép toán (hay phương thức) của dịch vụ đó.
Câu hỏi: Lịch sử phát triển của WSDL ở W3C? Trả lời:
- WSDL 1.1 được ấn hành như một W3C Note bởi Ariba, IBM và Microsoft để đặc tả dịch vụ cho W3C XML hoạt động trên giao thức XML vào 3/2001. - Bản phác thảo đầu tiên của WSDL 1.2 được xuất bản bởi W3C vào 7/2002.
c) Dịch vụ khám phá - UDDI (Universal Description, Discovery, and Integration):
Chuẩn UDDI, hay còn gọi là chuẩn dịch vụ Tích hợp, Khám phá và Mô tả Toàn cầu, hoạt động như một dịch vụ đăng ký và định vị có khả năng xác nhận và phân loại các ứng dụng dịch vụ Web, giúp người sử dụng dễ dàng tìm thấy chúng trên mạng.
Hội đồng Điều hành Kinh doanh Đăng ký UDDI (Universal Descripsion, Discovery and Intergaration), một tổ chức nhận được sự hậu thuẫn của cả Microsoft, IBM, NTT Communications và SAP, hiện đã rầm rộ quảng bá cho phiên bản của dịch vụ mới nhất UDDI ver 3.
Ở lõi của nó, UDDI gồm có hai phần. Thứ nhất, UDDI là một đặc tả kỹ thuật để xây dựng một thư mục phân tán của những giao dịch và dịch vụ mạng. Dữ liệu được đặt bên trong một định dạng XML đặc biệt. Đặc tả UDDI bao gồm chi tiết API để tìm kiếm dữ liệu và xuất bản dữ liệu mới. Thứ hai, nơi đăng ký doanh nghiệp UDDI là một sự thi hành thao tác hoàn toàn (của) thuyết minh UDDI. Microsoft, Ariba và IBM đã công bố dự án Đăng ký Doanh nghiệp UDDI (Universal Description, Discovery and Integration) vào tháng 9 /2002 và đã quảng bá dự án này như "Những trang vàng" lần đầu tiên được đưa lên Internet.
Đến nay, đã có nhiều doanh nghiệp nổi tiếng nhất trên thế giới đã tham gia dự án này, bao gồm: American Express, Compaq, SAP AG, Dell và Sun. Các hãng này đều ký hợp đồng hỗ trợ phát triển UDDI. Số công ty tham gia UDDI hiện đã lên đến 130, trong đó có cả HP và Intel.
- Những trang trắng sẽ gồm tên doanh nghiệp, danh mục phân loại doanh nghiệp và thông tin về các loại dịch vụ và hình thức hỗ trợ khách hàng...
- Những trang vàng cung cấp những quy định mới nhất của chính phủ về các hoạt động của doanh nghiệp. Ngoài ra còn sắp xếp danh mục công ty theo từng khu vực địa lý.
- Những trang xanh cung cấp các loại tài liệu tham khảo cần thiết liên quan đến hoạt động kinh doanh của doanh nghiệp.
Ví dụ: http://uddi.microsoft.com/default.aspx
Để có thể hiểu một cách thông suốt về UDDI. Chúng ta hãy làm một FAQ sau: Câu hỏi: UDDI là gì?
Trả lời:
- UDDI là một khung nền độc lập để đặc tả dịch vụ, khám phá giao dịch, và tích hợp các dịch vụ giao dịch thông qua Internet.
- UDDI nghĩa là Universal Description, Discovery and Integration. - UDDI là một thư mục chứa những thông tin về dịch vụ web.
- UDDI là một thư mục của giao diện dịch vụ web đặc tả bằng WSDL. - UDDI truyền thông nhờ SOAP.
- UDDI được xây dựng trong nền tảng Microsoft .NET. Câu hỏi: Nền tảng của UDDI là gì?
Trả lời:
- UDDI sử dụng World Wide Web Consortium (W3C) và Internet Engineering Task Force (IETF) Internet chuẩn như là các giao thức XML, HTTP, và DNS. - UDDI sử dụng WSDL đặc tả giao diện dịch vụ web.
Câu hỏi: Lợi ích của UDDI là gì? Trả lời:
Bất kỳ một ngành kinh doanh hay một doanh nghiệp nào dù lớn hay nhỏ đều có được lợi ích từ UDDI. Trước UDDI, đã không có chuẩn Internet cho các doanh
nghiệp mở rrộng khách hàng và đối tác của họ bằng nhứng thông tin về sản phẩm và dịch vụ của mình. Và cũng không có cách nào để làm thế nào đó có thể tích hợp vào mỗi hệ thống vào tiến trình khác nhau..
Vấn đề có thể giải quyết với đặc tả UDDI . Ví dụ như là : Làm cho có thể tìm ngay ra doanh nghiệp từ hàng triệu người đang trực tuyến.
Câu hỏi: UDDI sử dụng như thế nào?