1 / 60

Web Services Registries and UDDI

INFOSYS290-3 Web Services: Concepts, Design and Implementation. Web Services Registries and UDDI. ablum@good.com. Agenda. UDDI V3 Spec Data structures Standard APIs Mapping WSDL to UDDI Tools .NET APIs for searching for services in UDDI Systinet for publishing services to UDDI

rashad
Download Presentation

Web Services Registries and UDDI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INFOSYS290-3 Web Services: Concepts, Design and Implementation Web Services Registriesand UDDI ablum@good.com

  2. Agenda • UDDI V3 Spec • Data structures • Standard APIs • Mapping WSDL to UDDI • Tools • .NET APIs for searching for services in UDDI • Systinet for publishing services to UDDI • Extending UDDI for More Robust Information

  3. Why Do We Need a Web Services Registry • Web services are valuable because of standardized payloads and transport definitions • The value is creating a web service that is used by many clients • Can’t happen unless the services are advertised to multiple consumers

  4. What Does UDDI Contain? • Businesses and other service providers • Services they expose • Bindings (locations) of those services • Interfaces supported by those services

  5. UDDI Entities • businessEntity – provider of service • businessService – collection of related services • bindingTemplate - information necessary to use • tModel - “reusable concept” such as • Interface • Protocol used by web services • Category • publisherAssertion - relationship that business entity has with another businessEntity • Subscription – request to be informed of particular changes

  6. Core UDDI Entities businessEntity businessService Interface tModel bindingTemplate bindingTemplate Interface tModel businessService bindingTemplate

  7. Design Principles • Keys as unique identifiers • Publisher assigned (new in V3) • Or generated by registry • Containment and references • Keys inside elements are either contained entities or references to other entities • Collections • Simple structure (e.g. name) just listed multiple times • Complex structure has container element (e.g. contacts on business) • Optional attributes • Empty not omitted • <keyedReference    tModelKey=”uddi:uddi.org:ubr:categorization:iso3166”    keyName=”” •     keyValue=”US-CA”/>

  8. businessEntity Structure

  9. businessEntity Identifying Elements • Uniquely identified by businessKey attribute • discoveryURLs • <discoveryURL useType=”businessEntity”>http://www.example.com?businessKey=uddi:example.com:registry:sales:53</discoveryURL> • Returns XML document of type businessEntity • <discoveryURL useType=”homepage”>    http://www.acmewidgets.com</discoveryURL> • name • Multiple names to do languages or abbreviations • <businessEntity . . . > •   ........ •   <name xml:lang="ja">日本生花店</name> •   <name xml:lang="ja">ニッポンセイカテン</name> •   <name xml:lang="en">NIPPON FLOWERS </name> •   <name xml:lang="en">NF</name> •   ..... • </businessEntity> • description • Multiple descriptions potentially in multiple languages with xml:lang

  10. businessEntity contacts <

  11. businessEntity Identifiers and Categories • Optional IdentifierBag • <identifierBag>    <keyedReference      tModelKey=”uddi:uddi.org:ubr:identifier:dnb.com:d-u-n-s”      keyName=”SAP AG” •         keyValue=”31-626-8655” /> • </identifierBag> • Optional CategoryBag • <categoryBag>  <keyedReference    tModelKey=”uddi:uddi.org:ubr:categorization:iso3166”    keyName=”California, USA” •     keyValue=”US-CA” /> • </categoryBag>

  12. UDDI Keyed References • tModelKey – • Required reference to tModel representing the identifier system (e.g. company identifier codes, geographical categories) • keyName • Optional description of the identifier • keyValue • Required identifier within the overall system

  13. Keyed Reference Groups • <keyedReferenceGroup tModelKey=”uddi:uddi.org:ubr:categorizationGroup:wgs84” >    <keyedReference        tModelKey=”uddi:uddi.org:ubr:categorization:wgs84:latitude”        keyName=”WGS 84 Latitude” •         keyValue=”+49.682700” /> •      <keyedReference         tModelKey=”uddi:uddi.org:ubr:categorization:wgs84:longitude”         keyName=”WGS 84 Longitude” •          keyValue=”+008.295200” /> • </keyedReferenceGroup>

  14. businessService

  15. businessService • Uniquely identified by optional serviceKey attribute • Supplied by UDDI if not supplied by publisher • Optional descriptions • Optional categorizations in categoryBag • One or more bindingTemplates • Optional digital signature

  16. bindingTemplates

  17. bindingTemplate • Uniquely identified by optional bindingKey attribute • Optional serviceKey identifies service that contains this bindingTemplate • descriptions • accessPoint - network address (URL) • hostingRedirector – deprecated • categoryBag – e.g. can indicate that given template if status of “test” or production” • tModelInstanceDetails -

  18. tModelInstance Details

  19. overviewDoc

  20. tModels • The “technical fingerprint” • tModel’s define unique identifiers for interfaces and interface specifications • Once tModel is published service advertises compliance with the spec represented by including the correct tModelKey • Value sets • Categorization hierarchies • E.g. categoryBag and identifierBag have references to tModels with the system of values • Find qualifiers • find_business uddi:uddi.org:findqualifier:sortbydateasc

  21. tModel Structure

  22. tModel Structure • Exactly one non-empty name • Zero or more descriptions • Zero or more overviewDocs • useType=text • useType=wsdlInterface • identifierBag • Contains tModelKey which uniquely identifies tModel (inconsistent?) • Other logical identifiers • categoryBag • list of categories that describe specific aspects of the tModel

  23. UDDI Keys • Domain keys • uddi:acmewidgets.com • UUID keys • uddi:4CD7E4BC-648B-426D-9936-443EAAC8AE23 • Derived keys • uddi:tempuri.com:fish:buyingservice • Key generator keys • Uddi:acmewidgets.com:keygenerator

  24. UDDI Standard APIs

  25. UDDI APIs • Inquiry • Publication • Subscription • Security • Custody Transfer • Replication

  26. Inquiry API Patterns • Browse • find_xx • Drill-down • Use browse then drill-down • get_xx • Invocation • Use browse and drilldown and get bindingTemplate • Invoke from bindingTemplate

  27. Inquiry API Functions • find_binding • find_business • find_relatedBusinesses • find_service • find_tModel • get_bindingDetail • get_businessDetail • get_operationalInfo • get_serviceDetail • get_tModelDetail

  28. find_binding

  29. find_business

  30. Find_business example • <find_business xmlns="urn:uddi-org:api_v3">  <findQualifiers>    <findQualifier>       uddi:uddi.org:findqualifier:approximatematch    </findQualifier>    <findQualifier>       uddi:uddi.org:findqualifier:combinecategorybags    </findQualifier>  </findQualifiers>  <categoryBag>    <keyedReference keyValue="34.10.%"        tModelKey="uddi:uddi.org:ubr:categorization:unspsc"/>  </categoryBag></find_business>

  31. find_service

  32. find_tModel

  33. find_tModel Example <find_tModel xmlns="urn:uddi-org:api_v3">  <findQualifiers>    <findQualifier> uddi:uddi.org:findqualifier:caseinsensitivematch    </findQualifier>    <findQualifier>       uddi:uddi.org:findqualifier:approximatematch    </findQualifier>  </findQualifiers>  <name>rosetta%</name></find_tModel>

  34. Combined Searches <find_business xmlns="urn:uddi-org:api_v3">  <findQualifiers>    <findQualifier>       uddi:uddi.org:findqualifier:sortbynameasc    </findQualifier>    <findQualifier>       uddi:uddi.org:sortorder:uts-10    </findQualifier>    <findQualifier>       uddi:uddi.org:findqualifier:orallkeys    </findQualifier>  </findQualifiers>  <!--find businesses that have bindings that reference       this fixed tModel -->  <tModelBag>    <tModelKey>uddi:some.specific.example:tmodelkey</tModelKey>  </tModelBag>  <!--OR one of the RosettaNet tModels -->  <find_tModel xmlns="urn:uddi-org:api_v3">    <findQualifiers>      <findQualifier>         uddi:uddi.org:findqualifier:approximatematch      </findQualifier>      <findQualifier>         uddi:uddi.org:findqualifier:caseinsensitivematch      </findQualifier>      <findQualifier>         uddi:uddi.org:sortorder:uts-10      </findQualifier>    </findQualifiers>    <name>Rosetta%</name>  </find_tModel></find_business>

  35. Publication API • save_binding • save_business • save_service • save_tModel • Delete_xx • Xx_publisherAssertions

  36. UDDI Tools

  37. UDDI Registries • UBR • Microsoft • Uddi.microsoft.com • IBM • https://uddi.ibm.com/ubr/registry.html • SAP • NTT • Systinet • http://www.systinet.com/uddi/web

  38. Searching for Web Services

  39. Publishing a Web Service

  40. Connecting to UDDI with .NET public UddiConnection InitializeConnection() { string szInquiry = "http://test.uddi.microsoft.com/inquire"; string szPublish = "https://test.uddi.microsoft.com/publish"; string szExtension = "http://test.uddi.microsoft.com/extension.asmx"; string szUsername = null; string szPassword = null; UddiConnection oConnection = null; try { oConnect = new UddiConnection(szInquiry, szPublish, szExtension, szUsername, szPassword); System.Net.IWebProxy oProxy = System.Net.WebProxy("http://someproxy:80",true); oConnect.AutoGetAuthToken = true; oConnect.HttpClient.Proxy = oProxy; GetAuthToken oGetToken = new GetAuthToken(szUsername, szPassword); oConnect.AuthInfo = oGetToken.Send(oConnect); } catch(InvalidUrlPassedException oUddiEx) { // Insert exception-handling code. return null; } catch(UddiException oUddiEx) { // Insert exception-handling code. return null; } return oConnect; }

  41. Finding Businesses with .NET using Microsoft.Uddi; try  {// Create a connection to the UDDI node that is to be accessed.UddiConnection myConn = new UddiConnection("http://test.uddi.microsoft.com/inquire");// Create an object to find a business.FindBusiness fb = new FindBusiness("Fabrikam");// Send the prepared FindBusiness request over the connection.BusinessList bizList = fb.Send(myConn);// Report the summary result.Console.WriteLine("Found " + bizList.BusinessInfos.Count + " businesses");}catch (Microsoft.Uddi.UddiException e){ Console.WriteLine("UDDI error: " + e.Message); }catch (Exception gen){ Console.WriteLine("General exception: {0}", gen.Message); }

  42. Publishing with .NET • UddiConnection myConn = new UddiConnection(InquireTextbox.Text,PublishTextBox.Text); • myConn.AuthenticationMode = AuthenticationMode.UddiAuthentication; • myConn.Username = UserTextbox.Text; • myConn.Password = PasswordTextbox.Text; • // Create a named business entity. • BusinessEntity myBiz = new BusinessEntity(BusinessNameTextbox.Text); • // Use business entity to create an object to save a business. • SaveBusiness sb = new SaveBusiness(myBiz); • // Send the prepared save business request. • BusinessDetail savedBiz = sb.Send(myConn); • ReturnBiz.Text= savedBiz.BusinessEntities[0].Names[0].Text; • ReturnKey.Text= savedBiz.BusinessEntities[0].BusinessKey;

  43. Finding Services with .NET try { UddiConnection conn = new UddiConnection("http://localhost/uddi/inquire.asmx"); FindService fs = new FindService(“holdem odds”); ServiceList servList = fs.Send(conn); // Display the service name and unique identifying key. foreach (ServiceInfo servInfo in servList.ServiceInfos) { MessageBox.Show("Service: " + servInfo.Names[0].Text + " " + servInfo.ServiceKey); } } catch (Microsoft.Uddi.UddiException ex) { MessageBox.Show("UDDI Exception: " + ex.Message); } catch (Exception gen) { MessageBox.Show("General Exception: " + gen.Message); }

  44. Finding Bindings and Connecting //servicekey= xxxx; Tmodelkey=xxxx; Microsoft.Uddi.Inquire.Url = “uddi.microsoft.com”; bindingSearcher = new Microsoft.Uddi.FindBinding(); //bindingSearcher.ServiceKey=servicekey; bindingSearcher.TModelKeys.Add(tmodelkey); Microsoft.Uddi.BindingDetail details = bindingSearcher.Send(); string[] urllist=new string[details.BindingTemplates.Count]; for(int x=0;x<details.BindingTemplates.Count;x++) { if(details.BindingTemplates[x].AccessPoint.URLType==Microsoft.Uddi.Api.URL Type.Http|| details.BindingTemplates[x].AccessPoint.URLType==Microsoft.Uddi.Api.URLType.Https) { localhost.pokerodds po = new localhost.pokerodds(); po.Url = accessPoint; percentage = po.AfterFlopDraw(14 } }

  45. Mapping WSDL to UDDI • UDDI technote (V2.0 in August 2003) regarding • How to take about WSDL objects and store them in UDDI equivalents • Enables queries on WSDL constituents (portTypes, operations, ports)

  46. Overview

  47. Wsdl:portType->uddi:tModel

  48. portType->tModel • <tModel tModelKey="uuid:e8cf1163-8234-4b35-865f-94a7322e40c3" > •     <name> •          StockQuotePortType •     </name> •     <overviewDoc> •          <overviewURL> •              http://location/sample.wsdl •          <overviewURL> •     <overviewDoc> •     <categoryBag> •          <keyedReference •              tModelKey="uuid:d01987d1-ab2e-3013-9be2-2a66eb99d824" •          keyName="portType namespace" •              keyValue="http://example.com/stockquote/" /> •          <keyedReference •              tModelKey="uuid:6e090afa-33e5-36eb-81b7- 1ca18373f457" •          keyName="WSDL type" •              keyValue="portType" /> •     </categoryBag> • </tModel>

  49. WSDL Binding to UDDI tModel

  50. <tModel tModelKey="uuid:49662926-f4a5-4ba5-b8d0-32ab388dadda"> • <name>StockQuoteSoapBinding</name> •     <overviewDoc> •          <overviewURL> •              http://location/sample.wsdl •          </overviewURL> •     </overviewDoc> •     <categoryBag> •          <keyedReference •              tModelKey="uuid:d01987d1-ab2e-3013-9be2-2a66eb99d824" •           keyName="binding namespace" •              keyValue="http://example.com/stockquote/" /> •          <keyedReference •              tModelKey="uuid:6e090afa-33e5-36eb-81b7-1ca18373f457" •           keyName="WSDL type" •              keyValue="binding" /> •          <keyedReference •              tModelKey="uuid:082b0851-25d8-303c-b332-f24a6d53e38e" •           keyName="portType reference" •              keyValue="uuid:e8cf1163-8234-4b35-865f-94a7322e40c3" /> •          <keyedReference •              tModelKey="uuid:4dc74177-7806-34d9-aecd-33c57dc3a865" •           keyName="SOAP protocol" •              keyValue= "uuid:aa254698-93de-3870-8df3-a5c075d64a0e" /> •          <keyedReference •              tModelKey="uuid:e5c43936-86e4-37bf-8196-1d04b35c0099" •           keyName="HTTP transport" •              keyValue=" uuid:68DE9E80-AD09-469D-8A37-088422BFBC36" /> •          <keyedReference •              tModelKey="uuid:c1acf26d-9672-4404-9d70-39b756e62ab4" •           keyName="uddi-org:types" •              keyValue="wsdlSpec" /> •     </categoryBag> • </tModel>

More Related