Download presentation
Presentation is loading. Please wait.
Published byBriana Dalton Modified over 9 years ago
1
Web Services Registries and UDDI ablum@good.com INFOSYS290-3 Web Services: Concepts, Design and Implementation
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 businessService Interface tModel bindingTemplate businessEntity bindingTemplate Interface tModel
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 – http://www.example.com?businessKey=uddi:example.com:registr y:sales:53 Returns XML document of type businessEntity – http://www.acmewidgets.com name –Multiple names to do languages or abbreviations – –........ – 日本生花店 – ニッポンセイカテン – NIPPON FLOWERS – NF –..... – description –Multiple descriptions potentially in multiple languages with xml:lang
10
businessEntity contacts <
11
businessEntity Identifiers and Categories Optional IdentifierBag – <keyedReference tModelKey=”uddi:uddi.org:ubr:identifier:dnb.com :d-u-n-s” keyName=”SAP AG” keyValue=”31-626-8655” /> – Optional CategoryBag – <keyedReference tModelKey=”uddi:uddi.org:ubr:categorization:iso3166” keyName=”California, USA” – keyValue=”US-CA” /> –
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 <keyedReference tModelKey=”uddi:uddi.org:ubr:categorizatio n:wgs84:latitude” keyName=”WGS 84 Latitude” keyValue=”+49.682700” /> <keyedReference tModelKey=”uddi:uddi.org:ubr:categorizati on:wgs84:longitude” keyName=”WGS 84 Longitude” keyValue=”+008.295200” />
14
businessService
15
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
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 uddi:uddi.org:findqualifier:approximatematc h uddi:uddi.org:findqualifier:combinecategory bags
31
find_service
32
find_tModel
33
find_tModel Example uddi:uddi.org:findqualifier:caseinsensitivemat ch uddi:uddi.org:findqualifier:approximat ematch rosetta%
34
Combined Searches uddi:uddi.org:findqualifier:sortbynameasc uddi:uddi.org:sortorder:uts-10 uddi:uddi.org:findqualifier:orallkeys uddi:some.specific.example:tmodelkey uddi:uddi.org:findqualifier:approximatematch uddi:uddi.org:findqualifier:caseinsensitivematch uddi:uddi.org:sortorder:uts-10 Rosetta%
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/webhttp://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.U ddi.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 WSDLUDDI portTypetModel (categorized as portType) Namespace of portTypekeyedReference in categoryBag Local name of portTypetModel Name Location of WSDL Document overviewURL
48
portType->tModel StockQuotePortType http://location/sample.wsdl <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" />
49
WSDL Binding to UDDI tModel WSDLUDDI bindingtModel (categorized as binding and wsdlSpec) Namespace of bindingkeyedReference in categoryBag Local name of bindingtModel Name Location of WSDL Document overviewURL portType reference and protocol references keyedReferences in category bag
50
StockQuoteSoapBinding http://location/sample.wsdl <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" />
51
WSDL Service to UDDI Business Service WSDLUDDI ServicebusinessService (categorized as service) Namespace of ServicekeyedReference in categoryBag Local Name of ServicekeyedReference in categoryBag; optionally also the name of the service
52
WSDL Port to UDDI bindingTemplate WSDLUDDI portbindingTemplate Namespace Captured in keyedReference of the containing businessService Local name of port instanceParms of the tModelInstanceInfo relating to the tModel for the binding Binding implemented by port tModelInstanceInfo with tModelKey of the tModel corresponding to the binding portType implemented by port tModelInstanceInfo with tModelKey of the tModel corresponding to the portType
53
Business Service and Binding Templates <businessService serviceKey="102b114a-52e0-4af4-a292-02700da543d4" businessKey="1e65ea29-4e0f-4807-8098-d352d7b10368"> Stock Quote Service <bindingTemplate bindingKey="f793c521-0daf-434c-8700-0e32da232e74" serviceKey="102b114a-52e0-4af4-a292-02700da543d4"> http://location/sample <tModelInstanceInfo tModelKey="uuid:49662926-f4a5-4ba5-b8d0-32ab388dadda"> The wsdl:binding that this wsdl:port implements. The instanceParms specifies the port local name. StockQuotePort <tModelInstanceInfo tModelKey="uuid:e8cf1163-8234-4b35-865f-94a7322e40c3"> The wsdl:portType that this wsdl:port implements.
54
… and category bags for same <keyedReference tModelKey="uuid:6e090afa-33e5-36eb-81b7-1ca18373f457" keyName="WSDL type" keyValue="service" /> <keyedReference tModelKey="uuid:d01987d1-ab2e-3013-9be2-2a66eb99d824" keyName="service namespace" keyValue="http://example.com/stockquote/" /> <keyedReference tModelKey="uuid:2ec65201-9109-3919-9bec-c9dbefcaccf6" keyName="service local name" keyValue="StockQuoteService" />
55
Extending the Registry Categorization of tModels can be used to provide –Versioning of interfaces –QoS information on bindingTemplates
56
Versioning of tModels StockQuotePortType http://location/sample.wsdl <keyedReference tModelKey="uddi:uddi.org:versioning:minor-version" keyName="Minor Version" keyValue="1"/>
57
QoS Information on BindingTemplates Stock Quote Service http://location/sample This is the reference to the tModel that will have all of the QOS related categories attached. This points to the tModel that has the reference to the web service endpoint that allows detailed retrieval of information
58
The tModel with the QoS Information – QoS Information for Stock Quote Service http:// – – 10Mbps" />
59
Specs “Using WSDL in a UDDI Registry, Version 2.0.2” –http://www.oasis-open.org/committees/uddi- spec/doc/tn/uddi-spec-tc-tn-wsdl-v202- 20040631.htm
60
Articles.NET UDDI –Web Services Journal, “Microsoft UDDI SDK 2.0”, http://www.sys- con.com/webservices/article.cfm?id=544 –MSDN, “Using UDDI at Run Time, Part I”, http://msdn.microsoft.com/library/default.asp?url=/library/en- us/dnuddi/html/runtimeuddi1.asp - uses UDDI to query for other services for redundancy http://msdn.microsoft.com/library/default.asp?url=/library/en- us/dnuddi/html/runtimeuddi1.asp –MSDN, “Using UDDI and Run Time, Part II”, http://msdn.microsoft.com/library/default.asp?url=/library/en- us/dnuddi/html/runtimeuddi2.asp - uses UDDI to register service and then to query for instances of services supporting given tModel http://msdn.microsoft.com/library/default.asp?url=/library/en- us/dnuddi/html/runtimeuddi2.asp Extending UDDI –UDDI as an Extended Web Services Registry: Versioning, quality of service, and more”, Blum Web Services Journal, June 2004, http://www.sys-con.com/story/?storyid=45102&DE=1http://www.sys-con.com/story/?storyid=45102&DE=1 – “Extending UDDI with robust Web services information”, Blum http://searchwebservices.techtarget.com/originalContent/0,289142,sid26_gci952129,00. html
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.