web services registries and uddi n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Web Services Registries and UDDI PowerPoint Presentation
Download Presentation
Web Services Registries and UDDI

Loading in 2 Seconds...

play fullscreen
1 / 60

Web Services Registries and UDDI - PowerPoint PPT Presentation


  • 146 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Web Services Registries and UDDI' - rashad


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
web services registries and uddi

INFOSYS290-3

Web Services: Concepts, Design and Implementation

Web Services Registriesand UDDI

ablum@good.com

agenda
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
why do we need a web services registry
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
what does uddi contain
What Does UDDI Contain?
  • Businesses and other service providers
  • Services they expose
  • Bindings (locations) of those services
  • Interfaces supported by those services
uddi entities
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
core uddi entities
Core UDDI Entities

businessEntity

businessService

Interface tModel

bindingTemplate

bindingTemplate

Interface tModel

businessService

bindingTemplate

design principles
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”/>
businessentity identifying elements
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
businessentity identifiers and categories
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>
uddi keyed references
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
keyed reference groups
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>
businessservice1
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
bindingtemplate
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 -
tmodels
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
tmodel structure1
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
uddi keys
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
uddi apis
UDDI APIs
  • Inquiry
  • Publication
  • Subscription
  • Security
  • Custody Transfer
  • Replication
inquiry api patterns
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
inquiry api functions
Inquiry API Functions
  • find_binding
  • find_business
  • find_relatedBusinesses
  • find_service
  • find_tModel
  • get_bindingDetail
  • get_businessDetail
  • get_operationalInfo
  • get_serviceDetail
  • get_tModelDetail
find business example
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>
find tmodel example
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>

combined searches
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>

publication api
Publication API
  • save_binding
  • save_business
  • save_service
  • save_tModel
  • Delete_xx
  • Xx_publisherAssertions
uddi registries
UDDI Registries
  • UBR
    • Microsoft
      • Uddi.microsoft.com
    • IBM
      • https://uddi.ibm.com/ubr/registry.html
    • SAP
    • NTT
  • Systinet
    • http://www.systinet.com/uddi/web
connecting to uddi with net
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;

}

finding businesses with net
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);

}

publishing with net
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;
finding services with net
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);

}

finding bindings and connecting
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

}

}

mapping wsdl to uddi
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)
porttype tmodel
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>
slide50
<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>
business service and binding templates
Business Service and Binding Templates
  • <businessService
  •          serviceKey="102b114a-52e0-4af4-a292-02700da543d4"
  •          businessKey="1e65ea29-4e0f-4807-8098-d352d7b10368">
  •     <name>Stock Quote Service</name>
  •     <bindingTemplates>
  •          <bindingTemplate
  •              bindingKey="f793c521-0daf-434c-8700-0e32da232e74"
  •              serviceKey="102b114a-52e0-4af4-a292-02700da543d4">
  •              <accessPoint URLType="http">
  •                  http://location/sample
  •              </accessPoint>
  •              <tModelInstanceDetails>
  •                  <tModelInstanceInfo
  •                       tModelKey="uuid:49662926-f4a5-4ba5-b8d0-32ab388dadda">
  •                       <description xml:lang="en">
  •                           The wsdl:binding that this wsdl:port implements. The instanceParms specifies the port local name.
  •                       </description>
  •                       <instanceDetails>
  •                           <instanceParms>StockQuotePort</instanceParms>
  •                       </instanceDetails>
  •                  </tModelInstanceInfo>
  •                  <tModelInstanceInfo
  •                       tModelKey="uuid:e8cf1163-8234-4b35-865f-94a7322e40c3">
  •                       <description xml:lang="en">
  •                           The wsdl:portType that this wsdl:port implements.
  •                       </description>
  •                  </tModelInstanceInfo>
  •              </tModelInstanceDetails>
  •          </bindingTemplate>
  •     </bindingTemplates>
and category bags for same
… and category bags for same
  • <categoryBag>
  •     <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" />
  • </categoryBag>
  • </businessService>
extending the registry
Extending the Registry
  • Categorization of tModels can be used to provide
    • Versioning of interfaces
    • QoS information on bindingTemplates
versioning of tmodels
Versioning of tModels

<tModel tModelKey="uddi:mycompany.com:stockquoteporttype">

<name>StockQuotePortType</name>

<overviewDoc>

<overviewURL> http://location/sample.wsdl <overviewURL>

<overviewDoc>

<categoryBag>

<keyedReference tModelKey="uddi:uddi.org:versioning:major-version" keyName="Major Version" keyValue="2"/>

<keyedReference

tModelKey="uddi:uddi.org:versioning:minor-version" keyName="Minor Version" keyValue="1"/>

<keyedReference tModelKey="uddi:uddi.org:versioning:revision-number" keyName="Revision Number" keyValue="Build 1241"/>

<keyedReference tModelKey="uddi:uddi.org:versioning:milestone" keyName="Milestone" keyValue="latest-revision"/>

<keyedReference tModelKey="uddi:uddi.org:versioning:versioning-component" keyName="Versioning Component" keyValue="StockQuoteSampleComponent"/>

<keyedReference tModelKey="uddi:uddi-org:xml:namespace" keyName="portType namespace" keyValue="http://example.com/stockquote/"/>

<keyedReference tModelKey="uddi:uddi-org:wsdl:types" keyName="WSDL type" keyValue="portType"/>

</categoryBag>

</tModel>

qos information on bindingtemplates
QoS Information on BindingTemplates

<businessService serviceKey="uddi:mycompany.com:StockQuoteService" businessKey="uddi:mycompany.com:business> <name>Stock Quote Service</name> <bindingTemplates>

<bindingTemplate bindingKey="uddi:mycompany.com:StockQuoteService:primaryBinding" serviceKey="uddi:mycompany.com:StockQuoteService"> <accessPoint URLType="http">http://location/sample </accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo tModelKey="uddi:mycompany.com:StockQuoteService:PrimaryBinding:QoSInformation">

<description xml:lang="en"> This is the reference to the tModel that will have all of the QOS related categories attached.

</description>

</tModelInstanceInfo>

<tModelInstanceInfo tModelKey="uddi:mycompany.com:StockQuoteService:Primary Binding:QoSDetail">

<description xml:lang="en">

This points to the tModel that has the reference to the web service endpoint that allows detailed retrieval of information

</description>

</tModelInstanceInfo>

</tModelInstanceDetails>

</bindingTemplate> </bindingTemplates>

</businessService>

the tmodel with the qos information
The tModel with the QoS Information
  • <tModel tModelKey="mycompany.com:StockQuoteService: PrimaryBinding:QoSInformation"" >
    • <name> QoS Information for Stock Quote Service </name> <overviewDoc>
      • <overviewURL> http://<URL describing schema of QoS attributes> <overviewURL>
    • <overviewDoc>
  • <categoryBag>
    • <keyedReference tModelKey="uddi:uddi.org:QoS:ResponseTime" keyName="Average ResponseTime" keyValue="fast" /> <keyedReference tModelKey="uddi:uddi.org:QoS:Throughput" keyName="Average Throughput" keyValue=">10Mbps" /> <keyedReference tModelKey="uddi:uddi.org:QoS:Reliability" keyName="Average Reliability" keyValue="99.9%" />
  • </categoryBag>
  • </tModel>
specs
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
articles
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
    • 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
  • 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=1
    • “Extending UDDI with robust Web services information”, Blum
      • http://searchwebservices.techtarget.com/originalContent/0,289142,sid26_gci952129,00.html