Chuyển đến nôi dung chính

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng (tiếng Anh).

Khi bạn đăng ký với trang developerWorks lần đầu tiên, một tiểu sử của của bạn được tạo ra. Chọn các thông tin về tiểu sử của bạn (tên, nước/vùng, và nơi làm việc) đã được hiện lên màn hình, thông tin này sẽ được hiện kèm với nội dung mà bạn đăng tải. Bạn có thể cập nhật thông tin này bất kỳ lúc nào.

Thông tin gửi đi được đảm bảo an toàn.

  • Đóng [x]

Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng (tiếng Anh).

Thông tin gửi đi được đảm bảo an toàn.

  • Đóng [x]

Hiểu biết về Đặc tả các dịch vụ Web, Phần 3: Giao diện khám phá và mô tả thống nhất (UDDI)

Nicholas Chase, Tác giả tự do, Site Dynamics Interactive Communications
Nicholas Chase đã phát triển trang web cho các công ty lớn như Lucent Technologies, Sun Microsystems, Oracle, và Tampa Bay Buccaneers. Nick đã từng là một giáo viên vật lý ở trường phổ thông, một nhà quản lý thiết bị phóng xạ mức thấp, một nhà biên tập tạp chí khoa học viễn tưởng trực tuyến, một kỹ sư đa phương tiện, một hướng dẫn của Oracle, và một trưởng phòng công nghệ của một công ty tương tác truyền thông. Nick là tác giả của một số sách

Tóm tắt:  Tầm quan trọng hiện tại đối với SOA (Service-Oriented Architectures - Các kiến trúc hướng dịch vụ) đã diễn tả địa vị nổi bật của các dịch vụ Web, nhưng thật dễ dàng đi lạc trên tất cả thông tin đang được bàn tán đó. Loạt bài này mang đến cho bạn câu chuyện trung thực về tất cả các đặc tả dịch vụ Web chủ yếu, bắt đầu với SOAP (Simple Object Access Protocol – Giao thức truy cập đối tượng đơn giản) và xuống tới WS-BPEL (WS Business Process Execution Language - Ngôn ngữ thực hiện qui trình nghiệp vụ WS). Hướng dẫn này, Phần 3 trong loạt bài này, giải thích các khái niệm cơ bản về giao diện UDDI (Universal Description, Discovery and Integration - Tích hợp, khám phá và mô tả đa năng) và cách truy cập nó bằng cách sử dụng ứng dụng Java.

Xem thêm bài trong loạt bài này

Ngày:  10 10 2010
Mức độ:  Trung bình

Hoạt động:  12621 lần đọc

Tìm và sử dụng thông tin

Bây giờ tất cả các thông tin có trong dịch vụ, ít nhất về mặt lý thuyết, Gene cần phải xem xét quá trình để tìm kiếm thông tin một lần nữa.

Các việc tìm kiếm của UDDI hoạt động như thế nào: tìm kiếm một doanh nghiệp

Việc tìm kiếm trong UDDI gồm hai bước. Đầu tiên, bạn tìm khóa của đối tượng mà bạn muốn và sau đó bạn lấy thông tin về đối tượng đó. Cuối cùng, để cho Gene tìm một doanh nghiệp, Gene cần tạo một yêu cầu find_business, như trong Liệt kê 16.


Liệt kê 16. Tìm một doanh nghiệp theo thể loại
                    
<find_business generic="2.0" xmlns="urn:uddi-org:api_v2" >
   <categoryBag>
      <keyedReference
           tModelKey="C0B9FE13-179F-413D-8A5B-5004DB8E5BB2" 
           keyName="optional" keyValue="511110" />
   </categoryBag>
</find_business>

Yêu cầu này sẽ tìm tất cả các doanh nghiệp khớp với các thể loại được tham chiếu trong categoryBag. Các việc tìm kiếm về giá trị categoryBag được xử lý như một việc tìm kiếm ""VÀ" (AND). Nói cách khác, mục bất kỳ trùng khớp ít nhất là một trong các thể loại phải khớp. Bạn cũng có thể xác định một tìm kiếm identifierBag theo cách này. Tuy nhiên, Gene không thực sự quan tâm đến tìm kiếm theo thể loại. Vào lúc này, Gene chỉ muốn xem có hay không có doanh nghiệp trong đăng ký, do đó để thay thế Gene thích tìm kiếm theo tên hơn, như trong Liệt kê 17.


Liệt kê 17. Tìm một doanh nghiệp theo tên
                    
<find_business generic="2.0" xmlns="urn:uddi-org:api_v2" >
   <name>daily</name>
</find_business>

Lưu ý rằng một tìm kiếm theo tên được xử lý như thể tên mà bạn đang tìm kiếm tiếp sau là một ký tự đại diện. Nói cách khác, việc tìm kiếm ở đây là giống như thực hiện một tìm kiếm với "daily*", do đó cả Daily MoonDaily Star và bất kỳ doanh nghiệp khác nào bắt đầu với từ "daily" sẽ hiển thị. Những tìm kiếm này cũng phân biệt chữ hoa, chữ thường.


Việc tìm kiếm tìm thấy gì

find_business yêu cầu trả về một businessList. Xem Liệt kê 18.


Liệt kê 18. Một tìm kiếm trả về các doanh nghiệp
                    
<businessList generic="2.0" operator="uddi.sourceOperator" 
    truncated="true" xmlns="urn:uddi-org:api_v2">

   <businessInfos>

      <businessInfo 
            businessKey="1A3DB880-D5F4-11DA-B880-F94D3591C691" >
          <name>The Daily Moon</name>
          <serviceInfos>
             <serviceInfo serviceKey=
                     "064B4170-D5F5-11DA-8170-A74C17FA61A7">
                <name>ClassifiedService</name>
             </serviceInfo>
          </serviceInfos>
      </businessInfo>

      <businessInfo>
         ...
      </businessInfo>

   </businessInfos>

</businessList>

businessList bao gồm một phần tử businessInfo cho mỗi businessEntity thỏa mãn tìm kiếm đó. Mỗi một trong số các phần tử serviceInfo đó có một businessKey cho businessEntity thực tế. businessList cũng bao gồm một phiên bản viết tắt của các thông tin sẽ được liệt kê trong businessEntity, để bạn có thể có được một ý tưởng về liệu đây có phải là một doanh nghiệp mà bạn đang tìm kiếm không.

Một khi bạn có businessKey, thích hợp, bạn cần phải có thêm thông tin về businessEntity này.


Một khi bạn có khóa

Để có thêm thông tin về một businessEntity cụ thể dựa trên businessKey, bạn cần phải thực hiện một yêu cầu get_businessDetail. Xem Liệt kê 19.


Liệt kê 19. Nhận thông tin về các doanh nghiệp
                    
<get_businessDetail generic="2.0" xmlns="urn:uddi-org:api_v2" >
 <businessKey>1A3DB880-D5F4-11DA-B880-F94D3591C691
</businessKey>
</get_businessDetail>

Bạn có thể liệt kê càng nhiều businessKeys trong một yêu cầu get_businessDetail như bạn muốn. Mỗi một businessKeys sẽ có phần tử businessDetail riêng của mình trong các kết quả. Xem Liệt kê 20.


Liệt kê 20. Các chi tiết về doanh nghiệp được trả về
                    
<businessDetail generic="2.0" operator="uddi.sourceOperator" 
    truncated="false" xmlns="urn:uddi-org:api_v2">

   <businessEntity
      businessKey="1A3DB880-D5F4-11DA-B880-F94D3591C691">
      <name>The Daily Moon</name>
      <name lang="fr-ca">La Lune Quotidienne</name>
      <contacts>
...
      <keyedReference 
              tModelKey="C0B9FE13-179F-413D-8A5B-5004DB8E5BB2" 
              keyName="optional" keyValue="511110" />
      </categoryBag>
   </businessEntity> 

</businessDetail>

Mỗi phần tử businessDetail gồm toàn bộ businessEntity của doanh nghiệp có liên quan.


Thay đổi cách tìm kiếm hoạt động

Trong lúc tìm kiếm này hoạt động, có những lúc bạn muốn thay đổi hành vi của tìm kiếm đó. Ví dụ, có lẽ bạn muốn tìm kiếm một sự trùng khớp chính xác hơn là một sự trùng khớp của ký tự đại diện hoặc bạn muốn tìm kiếm theo chữ hoa hay chữ thường. Bạn có thể thay đổi hành vi của việc tìm kiếm bằng cách sử dụng findQualifiers. Xem Liệt kê 21.


Liệt kê 21. Sử dụng findQualifiers
                    
<find_business generic="2.0" xmlns="urn:uddi-org:api_v2" >
   <findQualifiers>
      <findQualifier>sortByNameAsc</findQualifier>
   <findQualifiers>
   <name>daily</name>
</find_business>

Trong trường hợp này, việc tìm kiếm sẽ tiến hành như bình thường, nhưng kết quả sẽ được trả về được sắp xếp theo tên. Bạn có thể thêm nhiều phần tử findQualifier như bạn muốn. Trong số các phần tử có sẵn để sử dụng là exactNameMatch, caseSensitiveMatch, sortByNameDesc, sortByDateAscsortByDateDesc, hay LikeKeys (báo cho đăng ký biết để xử lý các khóa trong một categoryBag hoặc identifierBag như là một điều kiện "HOẶC" (OR) nếu chúng chia sẻ cùng một tModelKey) và combineCategoryBags (xử lý tất cả các categoryBags của một businessEntity, liệu chúng có thuộc về businessEntity, businessService hoặc bindingTemplate, không, nếu như chúng thuộc về businessService đó).


Tìm một kiểu dịch vụ

Gene cũng muốn đảm bảo rằng những người dùng có thể tìm bất kỳ dịch vụ nào dựa trên một giao diện cụ thể. Ví dụ, truy vấn này sẽ định vị bindingTemplates mà bạn sử dụng giao diện ClassifiedService. Xem Liệt kê 22.


Liệt kê 22. Tìm một bindingTemplate
                    
<find_binding generic="2.0" xmlns="urn:uddi-org:api_v2" >
   <tModelBag>
     <tModelKey>66999A50-D5F4-11DA-9A50-FA44D6AD622A</tModelKey>
   </tModelBag>
</find_binding>

Truy vấn này trả về một serviceList. Xem Liệt kê 23.


Liệt kê 23. Các dịch vụ được trả về
                    
<serviceList generic="2.0" operator="uddi.sourceOperator"    
                  xmlns="urn:uddi-org:api_v2">
   <serviceInfos>
      <serviceInfo 
            serviceKey="064B4170-D5F5-11DA-8170-A74C17FA61A7" 
            businessKey="1A3DB880-D5F4-11DA-B880-F94D3591C691">
          <name>ClassifiedService</name>
      </serviceInfo>
   </serviceInfos>
</serviceList>

Như trong trường hợp với find_business, sau đó bạn đã phải quay trở lại đó và yêu cầu thông tin về businessEntity, rồi bạn sẽ xác định thông tin yêu cầu trên các máy chủ dựa trên serviceKey. Xem Liệt kê 24.


Liệt kê 24. Nhận các chi tiết dịch vụ
                    
<get_serviceDetail generic="2.0" xmlns="urn:uddi-org:api_v2" >
   <serviceKey>064B4170-D5F5-11DA-8170-A74C17FA61A7
</serviceKey>
</get_serviceDetail>

Truy vấn này trả về một serviceDetail cho mỗi serviceKey cụ thể. Xem Liệt kê 25.


Liệt kê 25. Các chi tiết dịch vụ được trả về
                    
<serviceDetail generic="2.0" operator="uddi.sourceOperator" 
    xmlns="urn:uddi-org:api_v2">
   <businessService 
          serviceKey="064B4170-D5F5-11DA-8170-A74C17FA61A7"
          businessKey="1A3DB880-D5F4-11DA-B880-F94D3591C691">
      <name>ClassifiedService</name>
      <bindingTemplates>
         <bindingTemplate 
             bindingKey="904BD800-D53A-11DA-B055-850A1DA99D79">
            <accessPoint>
      http://www.daily-moon.com:8080/axis2/services/ClassifiedService
            </accessPoint>
...
         <keyedReference 
              tModelKey="C0B9FE13-179F-413D-8A5B-5004DB8E5BB2" 
              keyName="ntis-gov:naics:1997" keyValue="511110" />
      </categoryBag>
   </businessService>
   <businessService>
...
   </businessService>
</serviceDetail>

Bây giờ Gene biết những gì mình muốn làm, anh ta sẵn sàng bắt đầu viết mã.

6 của 11 | Trang trước | Trang sau

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=SOA và dịch vụ Web
ArticleID=549829
TutorialTitle=Hiểu biết về Đặc tả các dịch vụ Web, Phần 3: Giao diện khám phá và mô tả thống nhất (UDDI)
publish-date=10102010
author1-email=
author1-email-cc=