Lập trình web nâng cao XML - Trường CĐN Đà Lạt - 18

Bộ kit

Khi soap_toolkit_consumer.vbs được chạy, nó sẽ hỏi chúng ta mã của chứng khoán và sau đó hiển thị một đáp ứng.

Như chúng ta thấy cài đặt một khách hàng cơ bản sử dụng SOAP Toolkit có thể 1

Như chúng ta thấy, cài đặt một khách hàng cơ bản sử dụng SOAP Toolkit có thể dễ cực kỳ. Chúng ta điều chỉnh ít nó vào một tài liệu WSDL khi chúng ta cài đặt đối tượng ủy quyền thông qua phương thức MSSoapInit. Sự ủy thác tự động tải và thể hiện WSDL và xây dựng một giao diện COM IDispatch.

asp_consumer.asp: Một khách hàng asp cho dịch vụ web StockService

<%

' retrieve submitted Stock Code value sCode = "" & Request.Form( "pName" )

%>

<form method="post" action="asp_consumer.asp"> Enter Stock Code:<br>

<input name="pName" value="<%= sCode %>"> <input type="submit" value="Submit">

</form>

<hr>

<br>

<% '

if ( sCode <> "" ) then

' we are going to use the MS XMLHTTP object

set oXmlHttp = Server.CreateObject( "MSXML2.XMLHTTP" ) ' open a HTTP POST connection to StockService

oXmlHttp.Open "POST", "http://localhost/StockService.asmx", False ' setup HTTP headers.

oXmlHttp.SetRequestHeader "Content-Type", "text/xml" oXmlHttp.SetRequestHeader "SOAPAction",

"http://mspress.microsoft.com/corexml/GetStockInfo" ' build string to hold the SOAP request message sSOAPMsg =

"<soap:Envelope " & _

" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""" & _ " xmlns:xsd=""http://www.w3.org/2001/XMLSchema""" & _

" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & _ " <soap:Body>" & _

" <GetStockInfo " &

" xmlns=""http://mspress.microsoft.com/corexml/"">" & _ " <Code>" & sCode & "</Code>" & _

" </GetStockInfo>" & _ " </soap:Body>" & _ "</soap:Envelope>"

' call StockService oXMLHTTP.Send sSOAPMsg

' retrieve response as a DOM object

set oResponseDOM = oXmlHttp.ResponseXML ' extract the StockInfo node values

set oNode =

oResponseDOM.SelectSingleNode( "//GetStockInfoResult/Code" ) sCode = oNode.Text

set oNode =

oResponseDOM.SelectSingleNode( "//GetStockInfoResult/Company" ) sCompany = oNode.Text

set oNode =

oResponseDOM.SelectSingleNode( "//GetStockInfoResult/Industry" ) sIndustry = oNode.Text

set oNode =

oResponseDOM.SelectSingleNode( "//GetStockInfoResult/Sector" ) sSector = oNode.Text

set oNode =

oResponseDOM.SelectSingleNode( "//GetStockInfoResult/Price" ) sPrice = oNode.Text

end if

%>

<table border="1">

<tr>

<td> Code:

</td>

<td>

<%= sCode %>

</td>

</tr>

<tr>

<td> Company:

</td>

<td>

<%= sCompany %>

</td>

</tr>

<tr>

<td> Industry:

</td>

<td>

<%= sIndustry %>

</td>

</tr>

<tr>

<td> Sector:

</td>

<td>

<%= sSector %>

</td>

</tr>

<tr>

<td> Price:

</td>

<td>

<%= sPrice %>

</td>

</tr>

</table>

Các thành phần ASP_Consumer.asp là một biểu mẫu HTML cho phép chúng ta nhập mã chứng khoán cần truy vấn và một bảng hiển thị kết quả trả về bởi dịch vụ Web StockService. Chúng ta trông giống như sau khi tải lên một trình duyệt.

Trong ví dụ này chúng ta sử dụng đối tượng MSXML XMLHTTP để nắm giữ các sự 2

Trong ví dụ này, chúng ta sử dụng đối tượng MSXML XMLHTTP để nắm giữ các sự vận chuyển HTTP POST chúng ta cần triệu gọi StockService. Tác vụ này hoàn thành trong dòng lệnh sau:

oXmlHttp.Open "POST", "http://localhost/StockService.asmx", False

Tiếp theo chúng ta cài đặt chỉ dẫn đầu đề HTTP Content-Type và SOAPAction như đăng ký bởi chỉ định SOAP:

oXmlHttp.SetRequestHeader "Content-Type", "text/xml" oXmlHttp.SetRequestHeader "SOAPAction",

"http://mspress.microsoft.com/corexml/GetStockInfo"

Nhiệm vụ duy nhất bỏ đi để thực hiện triệu gọi StockService để biên dịch SOAP

<envelope> và gởi yêu cầu HTTP POST.

SOAPAction sử dụng cùng không gian tên XML, chúng ta chỉ định bằng cách sử dụng thuộc tính namespace trong StockServer.asmx.

sSOAPMsg = "<soap:Envelope " & _

" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""" & _ " xmlns:xsd=""http://www.w3.org/2001/XMLSchema""" & _

" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & _ " <soap:Body>" & _

" <GetStockInfo " &

" xmlns=""http://mspress.microsoft.com/corexml/"">" & _ " <Code>" & sCode & "</Code>" & _

" </GetStockInfo>" & _ " </soap:Body>" & _ "</soap:Envelope>"


' call StockService oXMLHTTP.Send sSOAPMsg

Khi lời gọi hoàn thành, chúng ta nhận sự đáp trả SOAP như một đối tượng DOM sử dụng thuộc tính XMLHTTP ResponseXML. Cuối cùng, chúng ta phân giải các giá trị trường StockInfo sử dụng XPath và hiển thị chúng trong một bảng HTML.

Như chúng ta thấy, việc triệu gọi các dịch vụ Web không phức tạp thái quá, thậm chí không cần các công cụ đặc biệt. Tuy nhiên, cách tiếp cận này chỉ được giữ để truy nhập web đơn giản những dịch vụ bởi vì nó có thể nhanh trở nên chán ngắt và không thể quản lý được, thậm chí những dịch vụ web phức tạp hơn.

Dịch vụ Web khám phá với UDDI

Chúng ta đã bao trùm chúng ta có thể mô tả, thực hiện và triển khai những dịch vụ web. Nhưng công việc của chúng ta chỉ làm được một nữa. Những máy khách tìm thấy những dịch vụ web này trên Internet như thế nào? Giống như những người sử dụng danh bạ điện thoại và máy tìm kiếm để định vị những trang Web, chúng ta cần một cách cho những ứng dụng và những người để định vị và khám phá những khả năng của những dịch vụ web. Đây chính là vị trí UDDI đi vào.

Sự chỉ định

Sự chỉ định UDDI được phát triển bởi IBM, Microsoft và Ariba dưới dạng chuẩn mở cho các dịch vụ web quảng cáo và khám phá. Chỉ định UDDI định nghĩa một nền tảng đăng ký dựa trên nền web bày ra thông tin về một doanh nghiệp và các dịch vụ mà nó cung cấp. Nền tảng gồm có hai phần:

Một giản đồ (http://www.uddi.org/schema/uddi_1.xsd) định nghĩa các cấu trúc dữ liệu có thể được sử dụng để thực hiện các chức năng yêu cầu và ấn bản bất kỳ đăng ký sự tương thích UDDI.

Một tập hợp các API dựa trên SOAP cung cấp một giao diện chương trình tự động cho bất kỳ đăng ký tương thích UDDI nào.

Một đăng ký kinh doanh UDDI là một cài đặt của nền tảng đăng ký UDDI. Thêm nữa, một đăng ký kinh doanh UDDI cung cấp một giao diện dựa trên HTML cho phép các doanh nghiệp diễn giải chính họa và các dịch vụ Web mà chúng cung cấp cho các doanh nghiệp để định vị những đối tác tiềm tàng khác. Tại thời điểm viết phần này, ba trang web cung cấp dịch vụ đăng ký doanh nghiệp UDDI:

Đăng ký doanh nghiệp Microsoft UDDI tại http://uddi.microsoft.com Đăng ký doanh nghiệp IBM UDDI tại http://www.ibm.com/services/uddi/ Đăng ký doanh nghiệp Ariba UDDI tại http://uddi.ariba.com

Nhưng chúng ta thấy, đây là 3 công ty cùng cùng đồng thời phát triển thuyết minh UDDI. Chúng ta có thể tìm thấy những thuyết minh này và những thông tin hữu ích liên quan

UDDI tại http://www.uddi.org.

Mô hình dữ liệu UDDI

UDDI tổ chức thông tin lưu trữ trong một đăng ký UDDI vào ba loại rộng. Những kiểu này của thông tin được ấn hành bởi ba cấu trúc dữ liệu UDDI. Ba thể loại được liệt kê sau:

Những trang trắng chứa đựng thông tin đơn giản về một doanh nghiệp như tên, địa chỉ, liên hệ, và những định danh được biết khác.

Những trang vàng bao gồm những phân loại công nghiệp được dựa vào những nguyên tắc phân loại tiêu chuẩn như diễn giải những thông tin về các dịch vụ cung cấp.

Những trang xanh chứa các thông tin về công nghệ về các dịch vụ, bao gồm các tham chiếu và giao diện đến các dịch vụ.

Minh họa cho mô hình dữ liệu này:

Ỏ đây có 3 cấu trúc businessEntities businessServices bindingTemplates miêu tả một 3

Ỏ đây có 3 cấu trúc, businessEntities, businessServices, bindingTemplates, miêu tả một số lượng đầy đủ số lượng thông tin được cung cấp bởi nền tảng UDDI.

API

Thuyết minh UDDI cũng điịnh nghĩa một một API dựa trên SOAP chứa 20 yêu cầu và 10 đáp ứng, mỗi một làm sự sử dụng những cấu trúc dữ liệu được phác thảo trước đó. API cung cấp hai mức thông tin. Thông tin cấp cao trở về lại bởi sự tìm kiếm những phương pháp gồm có tổng quan, dữ liệu mức tóm lược. Thông tin mức thấp được trả lại các phương thức get chứa các đặc trưng, dữ liệu mức chi tiếts .

Ví dụ, thông tin trả lại bởi phương thức UDDI find_business chứa các thông tin tổng hợp chẳng hạn tên, địa chỉ của các doanh nghiệp khớp với điều kiện tìm kiếm khi phương thức đưa ra. Một trong những phần thông tin trả về là đăng ký doanh nghiệp duy nhất cho mỗi sự khớp của các doanh nghiệp. Định danh này có thể sử dụng phương thức get_business cấp độ thấp để trận toàn bộ các chi tiết đăng ký doanh nghiệp.

Bảng sau liệt kê các phương thức thông thường sử dụng các phương thức và cấu trúc dữ liệu đáp trả tương ứng.

Các API UDDI thông dụng

Phương thức

Mục đích

Cấu trúc dữ liệu đáp trả

find_business

Tìm kiếm doanh nghiệp dựa trên phân loại, nhận dạng, URL đăng ký, hoặc tên.

businessLis

t

find_service

Tìm kiếm dịch vụ dựa trên phân loại hoặc

tên.

serviceList

find_binding

Tìm kiếm một sự gắn kết với một cấu trúc bussinessService

bindingDeta

il

find_tModel

Tìm kiếm thông tin tổng hợp về sự chỉ định và không gian tên đã đăng ký.

tModelList

get_business Detail

Trả về chi tiết toàn bộ về sự đăng ký đăng ký bao gồm tất cả sự kết hợp businessServices và

bindingDeta

il

Có thể bạn quan tâm!

Xem toàn bộ 258 trang tài liệu này.




bindingTemplates.


get_serviceDe

tail

Trả về thông tin chi tiết về một businessService.

serviceDeta

il

get_bindingDe

tail

Trả về thông tin gắn kết chi tiết kỹ thuật cho

một dịch vụ đã đăng ký.

bindingDeta

il

get_tModelDet

ail

Trả về thông tin đăng ký tModel hoàn chỉnh

như những chỉ chi tiết sử dụng sử dụng tạo các dịch vụ Web tương thích.

tModelDetai

l

Như đã nói, như ví dụ, chúng ta muốn tìm kiếm thông tin kinh doanh đăng ký của Microsoft. Tập tin uddi_find_business.xml sau là một thông điệp SOAP yêu cầu UDDI chứa một phương thức find_business:

uddi_find_business.xml: Một ví dụ về lời gọi thương thức UDDI find_business:

<?xml version="1.0" encoding="UTF-8"?>

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">

<Body>

<find_business generic="1.0" xmlns="urn:uddi-org:api">

<name>Microsoft</name>

</find_business>

</Body>

</Envelope>

Như chúng ta có thể thấy, đây mà một điều chỉnh của thông điệp yêu cầu SOAP chuân chứa một phương thức find_business với một tham số gọi là Name. Tất cả các thông điệp UDDI đều nằm trong không gian tên urn:uddi-org:api. Một ví dụ về sự đáp trả của phương thức này sẽ cho thấy trong tập tin uddi_find_business_response.xml:

uddi_find_business_response.xml: Một ví dụ về đáp trả find_business:

<businessList generic="1.0" operator="Microsoft Corporation" truncated="false" xmlns="urn:uddi-org:api">

<businessInfos>

<businessInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3">

<name>Microsoft Corporation</name>

<description xml:lang="en">Empowering people through great software any time, any place and on any device is Microsoft's vision. As the worldwide leader in software for personal and business computing, we strive to produce innovative products and services that meet our customers.

</description>

<serviceInfos>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="1FFE1F71-2AF3-45FB-B788-09AF7FF151A4">

<name>Web services for smart searching</name>

</serviceInfo>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="8BF2F51F-8ED4-43FE-B665-38D8205D1333">

<name>Electronic Business Integration Services</name>

</serviceInfo>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="611C5867-384E-4FFD-B49C-28F93A7B4F9B">

<name>Volume Licensing Select Program</name>

</serviceInfo>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="5DE3CE59-923E-42D3-B7FB-34FC3C3CBC16">

<name>Technet</name>

</serviceInfo>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="24E553C3-7E3E-484A-8ECA-80E0D0B4A91F">

<name>Microsoft Developer Network</name>

</serviceInfo>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"

serviceKey="77DD86E5-CD70-4219-A28C-37231EAF3901">

<name>Online Shopping</name>

</serviceInfo>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="0860E130-D4AF-4BD5-9F5C-D7F6FA4B1AD8">

<name>Home Page</name>

</serviceInfo>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">

<name>UDDI Web Services</name>

</serviceInfo>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="A8E4999A-21A3-47FA-802E-EE50A88B266F">

<name>UDDI Web Sites</name>

</serviceInfo>

</serviceInfos>

</businessInfo>

</businessInfos>

</businessList>

Sự đáp lại được thể hiện không có SOAP <envelope>. Chúng ta có thể xem nhiều thông tin mức độ tổng hợp trả về bởi phương thức find_business, bao gồm các dịch vụ cung cấp bởi sự khớp các thực thể kinh doanh. Với dữ liệu này, chúng ta có thể sử dụng phương thức get đê lấy thông tin chi tiết về thực thể kinh doanh đặc biệt hay dịch vụ.

Chúng ta có thể dùng phương thức get_serviceDetail tìm thấy trong uddi_get_servicedetail.xml để yêu cấu thông tin chi tiết cho sự định danh dịch vụ chỉ định bởi một một serviceKey.

uddi_get_servicedetail.xml: Một ví dụ về lời gọi phương thức get_serviceDetail:

<get_serviceDetail generic='1.0' xmlns='urn:uddi-org:api'>

<serviceKey>D2BC296A-723B-4C45-9ED4-494F9E53F1D1</serviceKey>

</get_serviceDetail>

uddi_get_servicedetail_response.xml là một đáp trả tương ứng. uddi_get_servicedetail_response.xml: Một ví dụ về đáp trả get_serviceDetail.

<serviceDetail generic="1.0" operator="Microsoft Corporation" truncated="false" xmlns="urn:uddi-org:api">

<businessService businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">

<name>UDDI Web Services</name>

<description xml:lang="en">UDDI SOAP/XML message-based programmatic Web service interfaces.</description>

<bindingTemplates>

<bindingTemplate bindingKey="313C2BF0-021D-405C-8149-25FD969F7F0B" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">

<description xml:lang="en">Production UDDI server, Publishing interface</description>

<accessPoint URLType="https">https://uddi.microsoft.com/ publish</accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo tModelKey= "uuid:64C756D1 - 3374 - 4E00 - AE83 - EE12E38FAE63">

<description xml:lang="en">UDDI SOAP Publication Interface

</description>

</tModelInstanceInfo>

</tModelInstanceDetails>

</bindingTemplate>

<bindingTemplate bindingKey="A9CAFBE4-11C6-4BFE-90F5-595970D3DE24" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">

<description xml:lang="en">Production UDDI server, Inquiry interface</description>

<accessPoint URLType="http">http://uddi.microsoft.com/inquire</accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo tModelKey="uuid:4CD7E4BC-648B-426D-9936- 443EAAC8AE23">

<description xml:lang="en">UDDI SOAP Inquiry Interface

</description>

</tModelInstanceInfo>

</tModelInstanceDetails>

</bindingTemplate>

<bindingTemplate bindingKey="3FE6C834-293E-4341-AF6E-41DC68949764" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">

<description xml:lang="en">Test UDDI server, Publishing interface</description>

<accessPoint URLType="https">https://test.uddi.microsoft.com/publish</accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo tModelKey="uuid:64C756D1-3374-4E00-AE83- EE12E38FAE63">

<description xml:lang="en">UDDI SOAP Publication Interface</description>

</tModelInstanceInfo>

<tModelInstanceInfo tModelKey="uuid:F372E009-F372-429C-A09A- 794113A5C5F9">

<description xml:lang="en">urn:microsoft-com:test

signature-element signifies that this is a testing version of the service</description>

</tModelInstanceInfo>

</tModelInstanceDetails>

</bindingTemplate>

<bindingTemplate bindingKey="8ED4AD10-C63B-495E-8969-B3938F86E937" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">

<description xml:lang="en">Test UDDI server, Inquiry interface</description>

<accessPoint URLType="http">http://test.uddi.microsoft.com/inquire</accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo tModelKey="uuid:4CD7E4BC-648B-426D-9936- 443EAAC8AE23">

<description xml:lang="en">UDDI SOAP Inquiry Interface

</description>

</tModelInstanceInfo>

<tModelInstanceInfo tModelKey="uuid:F372E009-F372-429C-A09A- 794113A5C5F9">

<description xml:lang="en">urn:microsoft-com:test

signature-element signifies that this is a testing version of the service</description>

</tModelInstanceInfo>

</tModelInstanceDetails>

</bindingTemplate>

</bindingTemplates>

<categoryBag>

<keyedReference keyName="KEYWORD" keyValue="API" tModelKey="uuid:A035A07C-F362-44DD-8F95-E2B134BF43B4">

</keyedReference>

<keyedReference keyName="KEYWORD" keyValue="SOAP" tModelKey="uuid:A035A07C-F362-44DD-8F95-E2B134BF43B4">

</keyedReference>

<keyedReference keyName="KEYWORD" keyValue="XML" tModelKey="uuid:A035A07C-F362-44DD-8F95-E2B134BF43B4">

</keyedReference>

Xem toàn bộ nội dung bài viết ᛨ

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 19/11/2023