Senior Fitness - Exercise and Nutrition for Aging Men and Women
FREE Article Feed for your website.
Home Ownership Magazine
Party Planning Information
Article Marketing Resources
Bio-Medical Research Article Database
Informative Articles on Life, Love and Happiness
Tutorials on Business to Writing
Famous Quotes from Famous People
Song Lyric Information
New US Patent Information
Comprehensive List of Content by Category
Online Auctions and Shopping Related Articles
Article Search
Most Recent Articles
Title: Level shifter with boost and attenuation programming
Patent Number: 7,417,484 Issued on 08/26/2008 to Voo

Title: Wide-band wide-swing CMOS gain enhancement technique and method therefor
Patent Number: 7,417,483 Issued on 08/26/2008 to Wong,   et al.

Title: Adaptive voltage scaling for an electronics device
Patent Number: 7,417,482 Issued on 08/26/2008 to Elgebaly,   et al.

Title: Controlling signal states and leakage current during a sleep mode
Patent Number: 7,417,481 Issued on 08/26/2008 to Ahsanullah,   et al.

Title: Delay line circuit
Patent Number: 7,417,478 Issued on 08/26/2008 to Kim,   et al.

Title: Circuit and method for generating power up signal
Patent Number: 7,417,475 Issued on 08/26/2008 to Byeon,   et al.

Title: Clock frequency division methods and circuits
Patent Number: 7,417,474 Issued on 08/26/2008 to Jamal

Title: Multi-channel integrated circuit
Patent Number: 7,417,472 Issued on 08/26/2008 to Tumer,   et al.

Title: Voltage comparator having hysteresis characteristics
Patent Number: 7,417,471 Issued on 08/26/2008 to Gong,   et al.

Title: Phase frequency detector with a novel D flip flop
Patent Number: 7,417,470 Issued on 08/26/2008 to Riley

Title: Compensation for leakage current from dynamic storage node variation by the utilization of an automatic self-adaptive keeper
Patent Number: 7,417,469 Issued on 08/26/2008 to Cheng,   et al.

Title: Dynamic and differential CMOS logic with signal-independent power consumption to withstand differential power analysis
Patent Number: 7,417,468 Issued on 08/26/2008 to Verbauwhede,   et al.

Title: Flip-flop circuit and frequency divider using the flip-flop circuit
Patent Number: 7,417,466 Issued on 08/26/2008 to Akahori

Title: N-domino output latch
Patent Number: 7,417,465 Issued on 08/26/2008 to Lundberg,   et al.

Title: Bi-directional signal transmission system
Patent Number: 7,417,464 Issued on 08/26/2008 to Crawford

Title: Wireline transmission circuit
Patent Number: 7,417,463 Issued on 08/26/2008 to Danesh,   et al.

Title: Variable external interface circuitry on programmable logic device integrated circuits
Patent Number: 7,417,462 Issued on 08/26/2008 to Wong,   et al.

Title: Multi-standard transmitter
Patent Number: 7,417,460 Issued on 08/26/2008 to De Laurentiis,   et al.

Title: On-die offset reference circuit block
Patent Number: 7,417,459 Issued on 08/26/2008 to Wilson,   et al.

Title: Gate driving circuit and display apparatus having the same
Patent Number: 7,417,458 Issued on 08/26/2008 to Ahn,   et al.

Title: Scalable non-blocking switching network for programmable logic
Patent Number: 7,417,457 Issued on 08/26/2008 to Pani,   et al.

Title: Dedicated logic cells employing sequential logic and control logic functions
Patent Number: 7,417,456 Issued on 08/26/2008 to Verma,   et al.

Title: Programmable function generator and method operating as combinational, sequential and routing cells
Patent Number: 7,417,455 Issued on 08/26/2008 to Verma,   et al.

Title: Low-swing interconnections for field programmable gate arrays
Patent Number: 7,417,454 Issued on 08/26/2008 to Rahman,   et al.

Title: System and method for dynamically executing a function in a programmable logic array
Patent Number: 7,417,453 Issued on 08/26/2008 to Goodnow,   et al.

Title: Techniques for providing adjustable on-chip termination impedance
Patent Number: 7,417,452 Issued on 08/26/2008 to Wang,   et al.

Title: Leakage power management with NDR isolation devices
Patent Number: 7,417,451 Issued on 08/26/2008 to Kawa

Title: Testing combinational logic die with bidirectional TDI-TMS/TDO chanel circuit
Patent Number: 7,417,450 Issued on 08/26/2008 to Whetsel

Title: Wafer stage storage structure speed testing
Patent Number: 7,417,449 Issued on 08/26/2008 to Posey,   et al.

Title: System to calibrate on-die temperature sensor
Patent Number: 7,417,448 Issued on 08/26/2008 to Lim,   et al.

Title: Probe cards employing probes having retaining portions for potting in a retention arrangement
Patent Number: 7,417,447 Issued on 08/26/2008 to Kister

Title: Probe for combined signals
Patent Number: 7,417,446 Issued on 08/26/2008 to Hayden,   et al.

Title: Probing method and prober for measuring electrical characteristics of circuit devices
Patent Number: 7,417,445 Issued on 08/26/2008 to Sakagawa,   et al.

Title: Method and apparatus for inspecting integrated circuit pattern
Patent Number: 7,417,444 Issued on 08/26/2008 to Shinada,   et al.

Title: Determination of effective resistance between a power sourcing equipment and a powered device
Patent Number: 7,417,443 Issued on 08/26/2008 to Admon,   et al.

Title: Method and apparatus for testing tunnel magnetoresistive effect element, manufacturing method of tunnel magnetoresistive effect element and tunnel magnetoresistive effect element
Patent Number: 7,417,442 Issued on 08/26/2008 to Hachisuka,   et al.

Title: Methods and systems for guarding a charge transfer capacitance sensor for proximity detection
Patent Number: 7,417,441 Issued on 08/26/2008 to Reynolds

Title: Methods and systems for the rapid detection of concealed objects
Patent Number: 7,417,440 Issued on 08/26/2008 to Peschmann,   et al.

Title: Impedance conversion circuit and integrated circuit including thereof
Patent Number: 7,417,439 Issued on 08/26/2008 to Hirabayashi,   et al.

Title: Battery voltage measurement apparatus
Patent Number: 7,417,438 Issued on 08/26/2008 to Miyamoto

Title: Vehicle battery testing assembly
Patent Number: 7,417,437 Issued on 08/26/2008 to Torres

Title: Selectable tap induction coil
Patent Number: 7,417,436 Issued on 08/26/2008 to Chesser,   et al.

Title: Method for generating a homogeneous magnetization in a spatial examination volume of a magnetic resonance installation
Patent Number: 7,417,435 Issued on 08/26/2008 to Diehl

Title: Magnetic resonance imaging system with iron-assisted magnetic field gradient system
Patent Number: 7,417,434 Issued on 08/26/2008 to Overweg

Title: Method, examination apparatus and antenna array for magnetic resonance data acquisition
Patent Number: 7,417,433 Issued on 08/26/2008 to Heid,   et al.

Title: Asymmetric ultra-short gradient coil for magnetic resonance imaging system
Patent Number: 7,417,432 Issued on 08/26/2008 to Overweg

Title: Coil array for magnetic resonance imaging with reduced coupling between adjacent coils
Patent Number: 7,417,431 Issued on 08/26/2008 to Lanz,   et al.

Title: Continuous moving-table MRI contrast manipulation and/or update of scanning parameters
Patent Number: 7,417,430 Issued on 08/26/2008 to Aldefeld,   et al.

Title: Fibre tracking magnetic resonance imaging
Patent Number: 7,417,428 Issued on 08/26/2008 to Hoogenraad,   et al.

Title: Magnetic resonance data acquisition method and apparatus
Patent Number: 7,417,427 Issued on 08/26/2008 to Porter

Title: Continuous observation apparatus and method of magnetic flux distribution
Patent Number: 7,417,425 Issued on 08/26/2008 to Machi,   et al.

Title: Magnetic-field-measuring device
Patent Number: 7,417,424 Issued on 08/26/2008 to Desplats,   et al.

Title: Method of testing a magnetic head for eliminating defective magnetic heads
Patent Number: 7,417,423 Issued on 08/26/2008 to Sudou

Title: Rotary manipulation type input apparatus
Patent Number: 7,417,422 Issued on 08/26/2008 to Kang

Title: Switch to bypass optical diode for reducing power consumption of electrical meters
Patent Number: 7,417,420 Issued on 08/26/2008 to Shuey

Title: Method and arrangement for connecting electrical components in an electricity meter
Patent Number: 7,417,419 Issued on 08/26/2008 to Tate

Title: Thin film sensor
Patent Number: 7,417,418 Issued on 08/26/2008 to Ayliffe

Title: Spill-resistant beverage container with detection and notification indicator
Patent Number: 7,417,417 Issued on 08/26/2008 to Williams,   et al.

Title: Regulator with load tracking bias
Patent Number: 7,417,416 Issued on 08/26/2008 to Rasmus

Title: Voltage-controlled current source
Patent Number: 7,417,415 Issued on 08/26/2008 to Yen,   et al.

Title: DC-DC converter utilizing a modified Schmitt trigger circuit and method of modulating a pulse width
Patent Number: 7,417,412 Issued on 08/26/2008 to Koh

Title: Method and apparatus for power control
Patent Number: 7,417,410 Issued on 08/26/2008 to Clark, III,   et al.

Title: Power losses reduction in switching power converters
Patent Number: 7,417,409 Issued on 08/26/2008 to Partridge

Title: Method and arrangement for charging capacitors of direct-voltage intermediate circuit of frequency converter
Patent Number: 7,417,408 Issued on 08/26/2008 to Poyhonen,   et al.

Title: Circuit with a switch for charging a battery in a battery capacitor circuit
Patent Number: 7,417,407 Issued on 08/26/2008 to Stuart,   et al.

Title: Electronic apparatus that determines a characteristic of a battery
Patent Number: 7,417,406 Issued on 08/26/2008 to Miwa,   et al.

Title: Power recharger for use with robot cleaner
Patent Number: 7,417,404 Issued on 08/26/2008 to Lee,   et al.

Title: Compartment adaptor assembly for receiving an alternate sized battery into night vision goggles
Patent Number: 7,417,403 Issued on 08/26/2008 to Hankel,   et al.

Title: Method and device for operating a drive mechanism
Patent Number: 7,417,401 Issued on 08/26/2008 to Schweizer,   et al.

Title: Motor controller
Patent Number: 7,417,400 Issued on 08/26/2008 to Takeishi,   et al.

Title: Integrated motor device and method of setting and reading driver configuration parameters using driver configuration data embedded in driver control signals
Patent Number: 7,417,399 Issued on 08/26/2008 to Chang

Title: Vacuum pump
Patent Number: 7,417,398 Issued on 08/26/2008 to Kozaki,   et al.

Title: Automated shade control method and system
Patent Number: 7,417,397 Issued on 08/26/2008 to Berman,   et al.

Title: Manual operation device for automotive vehicle
Patent Number: 7,417,396 Issued on 08/26/2008 to Yoshida,   et al.

Title: Switch-based door and ramp interface system
Patent Number: 7,417,395 Issued on 08/26/2008 to Edwards,   et al.

Type extensions to web services description language Number:7,386,860 from the United States Patent and Trademark Office (PTO) owispatent

Home    Author Login    Submit Article    Article Search    Add Your Link    Edit Your Link    Contact Us    Advertising    Disclaimer

   

 
Web LinkGrinder.com

Top Breaking News
     Greek, Cypriot Leaders Resume Unification Talks in Nicosia by Nathan Morley
     Indonesia Tobacco Sales Grow, Raising Health Fears
     South Korea Allows Top Defector to Travel Overseas by VOA News

Title: Type extensions to web services description language

Abstract: A web service description language with object extensions provides type-centric extensions to web service description languages in order to describe and implement a type-centric, object-model agnostic, web service description. By implementing the constructs described herein, a heterogeneous distributed computing environment can implement rich type-centric services. For example, in a graph description, a type description indicates whether a type is encoded as a reference or embedded within another type. In a service reference description, a type description indicates whether a type is remoted by value or by reference. A type description indicates that a service extends another service, a service implements an interface (potentially multiple interfaces), a field of a type (including interfaces) is a reference type, a constant value field, or a bit field type that defines enumerations with associated values.

Patent Number: 7,386,860 Issued on 06/10/2008 to Dani,   et al.


Inventors: Dani; Savithri (Issaquah, WA), De Jong; Stephen P. (Bellevue, WA), Doise; Caleb (Bellevue, WA), Hawkins; Jonathan (Seattle, WA), Kakivaya; Gopala Krishna R. (Redmond, WA)
Assignee: Microsoft Corporation (Redmond, WA)
Appl. No.: 10/187,403
Filed: June 28, 2002


Current U.S. Class: 719/315 ; 719/330
Field of Search: 719/310,316,328,315 709/203,225,230,241 379/88.17


References Cited [Referenced By]

U.S. Patent Documents
6772216 August 2004 Ankireddipally et al.
6801604 October 2004 Maes et al.
6826594 November 2004 Pettersen
6850979 February 2005 Saulpaugh et al.
6865608 March 2005 Hunter
6868447 March 2005 Slaughter et al.
6934756 August 2005 Maes
6941560 September 2005 Lowry et al.
7062570 June 2006 Hong et al.
7159007 January 2007 Stawikowski
7159224 January 2007 Sharma et al.
7162687 January 2007 Pelegri-Llopart et al.
2003/0191803 October 2003 Chinnici et al.
2003/0204622 October 2003 Blizniak et al.
2003/0204644 October 2003 Vincent
2003/0220993 November 2003 Blizniak et al.

Other References

Christensen, E., Web Services Description Language (WSDL) 1.1, Mar. 15, 2001. cited by other .
Fallside, D., XML Schema Part 0: Primer, retrieved from the Internet on May 28, 2002. cited by other .
Thompson, H. et al., XML Schema Part 1: Structures, retrieved from the Internet on May 28, 2002, http://www.w3.org/TR/xmlschema-1/. cited by other .
Biron, P. et al., XML Schema Part 2: Datatypes, retrieved from the Internet on May 28, 2002. cited by other.

Primary Examiner: Nguyen; Van H.
Attorney, Agent or Firm: Klarquist Sparkman, LLP

Claims



We claim:

1. A method for providing web services over a network according to a request for a remote service made in an extensible mark-up language expression, where the extensible mark-up language expression is formed according to an object-model agnostic web services description language with type-centric extensions, the method comprising: receiving the extensible mark-up language expression transmitted across a communication boundary; identifying in the extensible mark-up language expression a type extension to an existing web service description language, the type extension comprising a field name typed as a service reference, the service reference including: a primary URL for accessing an implementation of a service class, an alternate URL for accessing the implementation of the service class, and a unique URI service reference identifier for providing an identity for the remote service; invoking the implementation of the service class identified via the field name typed as the service reference; and sending an extensible mark up language expression indicating the results of the invoked implementation; wherein the implementation is a request for an implementation on a typed service class described in a web services description language definition and an associated schema.

2. The method of claim 1, wherein the implementation comprises a request for other service classes supported by the service reference.

3. The method of claim 1, further comprising: identifying a mechanism for determining a type and an identity of the remote service at runtime through invoking methods on a service interface.

4. The method of claim 1 wherein further identified in the extensible mark up language expression is a typelnfo field which is used to determine type information instead of invoking an InstanceOf method on the typed service class.

5. The method of claim 1 wherein further identified in the extensible mark up language expression is an optional extension field comprising an array of values of anytype.

6. The method of claim 1 wherein further identified in the extensible mark up language expression is a service class name element.

7. The method of claim 1 wherein further identified in the extensible mark up language expression is a service interface contract.

8. The method of claim 1 wherein further identified in the extensible mark up language expression is a service interface type which is defined in the type extension as not being allowed to be null.

9. The method of claim 1 wherein further identified in the extensible mark up language expression is a service class type which is defined in the type extension as not being allowed to be null.

10. A computer readable storage medium containing data with a structure formed according to an object-model agnostic web services definition language with type-centric extensions, said structure causing a computer to perform web services according to a service request for a remote service received on a network connection, wherein the service request is made in an extensible mark-up language expression, the structure comprising: a type extension to an existing web service description language, the type extension is identified in the extensible mark-up language expression and comprising a service reference including a binding to an implementation of a typed service class, the service reference including child elements comprising, a primary URL for accessing the implementation of the typed service class, an alternate URL for accessing the implementation of the typed service class, and a unique URI service reference identifier for providing an identity for the remote service; wherein the computer determines the requested service from the structure, invokes the implementation of the typed service class identified via a field name typed as the service reference, and sends an extensible mark up language expression indicating the results of the invoked implementation; and wherein the implementation is a request for an implementation on a typed service class described in a web services description language definition and an associated schema.

11. The computer readable storage medium of claim 10 wherein the computer is a control point.

12. The computer readable storage medium of claim 10 wherein the type extension further comprises a typelnfo field which is used to determine type information.

13. The computer readable storage medium of claim 10 wherein the type extension further comprises an optional extension field comprising an array of values of anytype.

14. The computer readable storage medium of claim 10 wherein the type extension further comprises a service class name element.

15. The computer readable storage medium of claim 10 wherein the type extension further comprises a service interface type which is defined in the type extension as not being allowed to be null.

16. The computer readable storage medium of claim 10 wherein the type extension further comprises a service class type which is defined in the type extension as not being allowed to be null.
Description



TECHNICAL FIELD

This invention relates to web services description languages, and more particularly, type extensions thereto.

BACKGROUND AND SUMMARY

The Web Services Description Language (WSDL) is an XML format for describing network services offered by a server. See http://www.w3.org/TR/2001/NOTE-wsdl-20010315. This specification assumes the reader is familiar with XML, XSD, SOAP, and WSDL. This technology space is well known and written about in the computer arts. Generally, WSDL is used to create an XML textual description of services provided by a network server and a set of operations within each service. WSDL describes the format that a client uses to request services. WSDL service description is used by the client and server to communicate in an agreed XML format. The server agrees to provide certain services only if the client sends a properly formatted XML request.

Programmers use WSDL to form proper messages and service requests, and proper message responses and service request responses. A client obtains a copy of the WSDL description, and uses the information in this file to format a conforming request. Upon receiving a compliant request, the server can complete an operation and return the results to the client in a WSDL compliant format.

In a general sense, FIG. 1 depicts how WSDL, SOAP, XSD, and XML support message passing and web services over a network 106 between computer systems 102, 104. WSDL is computing environment agnostic, meaning, so long as a client communicates in XML according to the WSDL definition, it makes little difference whether the client and server exist in compatible computing environments (e.g., COM, JAVA, CORBA, etc). Since WSDL describes a textual representation for message passing and invoking web services in XML, a WSDL compliant communication can be recognized and translated by any computer environment following the WSDL standard.

As shown in FIG. 1, XML and SOAP are specified on both computers 102, 104. However, in some cases WSDL and XSD are not specified on both computers. In one case, a client 104, may not have WSDL and XSD specified locally, as indicated by the dotted lines 108. In this case, the client 104 parses the server's 102 WSDL and XSD, and sends the server a SOAP message which corresponds with the server WSDL. In some cases, many computers access a server to parse a WSDL and/or XSD.

A WSDL document contains the following elements in the definition of network services as shown in Table 1.

TABLE-US-00001 TABLE 1 Types--A container for data type definitions using some type system (such as XSD). Message--An abstract, typed definition of the data being communicated. PortType--An abstract set of operations supported by one or more end- points. Binding--A concrete protocol and data format specification for a particular port type. Port--A single endpoint defined as a combination of a binding and a network address. Service--A collection of related endpoints.

As shown in FIGS. 2 and 3, the WSDL document structure is a set of definitions. There is a definitions element at the root 302, and definitions inside the document. The grammar of the WSDL document format is followed by the server that is providing services to its clients so as to allow any client to understand the syntax of the messages accepted by the server. As discussed in Table 1,the WSDL document may contain types 304, messages 306, port types 308, bindings 402, and services 404.

The namespace prefixes described in Table 2,along with the syntax and rules described in Table 3,are used in this specification. Namespaces are a way to uniquely identify elements and attributes within a document.

TABLE-US-00002 TABLE 2 prefix namespace URI definition wsdl http://schemas.xmlsoap.org/ WSDL namespace for WSDL framework. wsdl/ soap http://schemas.xmlsoap.org/ WSDL namespace for WSDL SOAP binding. wsdl/soap/ http http://schemas.xmlsoap.org/ WSDL namespace for WSDL HTTP GET & wsdl/http/ POST binding. mime http://schemas.xmlsoap.org/ WSDL namespace for WSDL MIME binding. wsdl/mime/ soapenc http://schemas.xmlsoap.org/ Encoding namespace as defined by SOAP 1.1 soap/encoding/ soapenv http://schemas.xmlsoap.org/ Envelope namespace as defined by SOAP 1.1 soap/envelope/ xsi http://www.w3.org/2001/X Instance namespace as defined by XSD MLSchema-instance xsd http://www.w3.org/2001/X Schema namespace as defined by XSD MLSchema tns (various) The "target namespace" (tns) prefix is used as a convention to refer to the current document. (other) (various) All other namespace prefixes are samples only. In particular, URIs starting with "http://example.com" represent some application-dependent or context-dependent URI

TABLE-US-00003 TABLE 3 The syntax appears as an XML instance, but the values indicate the data types instead of values. Characters are appended to elements and attributes as follows: "?" (0 or 1), "*" (0 or more), "+" (1 or more). Elements names ending in "..." (such as <element...> or </element...>) indicate that elements/attributes irrelevant to the context are being omitted. <-- extensibility element --> is a placeholder for elements from some "other" namespace (like ##other in XSD). The XML namespace prefixes (defined below) are used to indicate the namespace of the element being defined. Examples starting with <?xml contain enough information to conform to this specification; others examples are fragments and require additional information to be specified in order to conform.

Using the WSDL document structure shown in FIGS. 2 and 3, and an example program ("CEchoString") shown in FIG. 4, a WSDL description of CEchoString is shown in FIG. 5.

For example, a server can publish, deliver, or otherwise make available, a copy of the WSDL description of CEchoString to a client. The client can use the description to send web service requests and responses. The client computer system includes software that sends and receives XML messages that comply with the description. The server computer system includes software that receives and sends messages according to the description. Both client and server may include software that translates the XML messages into their respective implementation environment.

Thus, a network server provides a WSDL description of the services it provides. Some of the messages sent to the server will have parameters, and some of these parameters may contain trees of objects. For example, given the XML message contained in FIG. 6, the trees of objects shown in FIG. 7 can be constructed.

The described extensions are directed towards providing type-centric descriptions to web service description languages. The extensions illustrated herein provide the constructs to describe and implement a type-centric, object-model agnostic, web service description. By implementing the constructs described herein, a heterogeneous distributed computing environment can implement rich type-centric services.

A few of the web services describable by this extended type-centric web service description language include support for representing graph data structures through its definition of the syntax for multi-reference pointers, for representing remote objects passed by-reference through its definition of service reference wire datatype, for discovering the type of a remote object at runtime through the definition of a service interface, and other type-centric constructs such as classes, interfaces, properties, events, and delegates. With this extended web service description language, a server can provide a type-centric, object-model agnostic description of a web service.

The type extensions described herein allow many added features. A few of these features are included for example purposes. In one respect, in a graph description, a type description indicates whether a type is encoded as a reference or embedded within another type. In another respect, in a service reference description, a type description indicates whether a type is remoted by-value or by-reference. In several other respects, a type description indicates that, a service extends another service, a service implements an interface (potentially multiple interfaces), or a field of a type (including interfaces) is a reference type, a constant value field, or a bit field type that defines enumerations with associated values.

In another respect, the type extensions provided the ability to define properties on types, to set enumeration values and types, to compose services including with other services, and to specify an array syntax.

Additional features and advantages will be made apparent from the following detailed description which proceeds with reference to the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of software layers in a prior art system.

FIGS. 2-3 define the prior art web service definition language.

FIG. 4 is a program listing later described in FIG. 5 using WSDL.

FIG. 5 is a prior art web service definition of the program in FIG. 4, according to the prior art web service definition language defined in FIGS. 2 and 3.

FIG. 6 is a prior art XML expression of a tree.

FIG. 7 is a prior art diagram showing the tree defined in FIG. 6.

FIG. 8 is a block diagram of a system utilizing the type-centric extensions.

FIG. 9 is an XML expression of a graph of objects and references thereto.

FIG. 10, is a graph of FIG. 9.

FIG. 11 is a program listing used in FIG. 12 to demonstrate added features of the type-centric extensions.

FIG. 12 is a description of the program in FIG. 11 using type-centric type extensions.

FIG. 13 is a schema for service reference.

FIGS. 14-15 is a web service description language including type extensions.

FIGS. 16-18 is the schema for the illustrated extensions.

FIG. 19 is an example program used in FIGS. 20-21.

FIGS. 20-21 is the web service description with object extensions for the program in FIG. 19.

FIG. 22 is a block diagram of a computer system that may be used to implement a method, apparatus, and system embodying the web service description language with type extensions.

DETAILED DESCRIPTION

As shown in FIG. 8, type-centric extensions 802, 804 are added to a web services description language. In the existing WSDL model, (FIG. 1), descriptions are limited to the description capabilities of the existing definitions 102, 104. These extensions 802, 804, expand the description capabilities thereby allowing services 806, 808, to communicate in a type-centric, yet object model agnostic way.

For example, the extensions described in this document support communications between the different type-centric runtime environments such as (e.g., CLR, JAVA, COM, CORBA, etc.), so long as a mapping exists between any type system 806, and any other type system 808 through the common subset captured by the extensions described in this document. The described extensions provide a mapping between heterogeneous type systems, and between homogeneous type systems, with an agnostic description language mapping, associated schemas, and type mappings.

As shown in FIG. 8, XML and SOAP are specified on both computers 802, 804. However, in some cases EXTENSIONS, WSDL and XSD are not specified on both computers. In one case, a client 804, may not have EXTENSIONS, WSDL and XSD specified locally, as indicated by the dotted lines 810. In such a case, the client 804 parses the server's 802 EXTENSIONS, WSDL and XSD, and sends the server a SOAP message or service request which corresponds with the server's EXTENSIONS, WSDL, and XSD. In some cases, many computers access a server to parse EXTENSIONS, WSDL and/or XSD.

The constructs provide the capacity for a literal translation across type systems, and for introducing type system description completeness. For example, FIG. 9 includes typed objects with unique object references. Using the unique identifier, an object graph 900, can be represented indicating that two objects hold references 904, 906, to the same typed object 902. The graph is represented in FIG. 10. Thus a reference to typed object (e.g., bar) from either object holding the unique reference (e.g., foo and foo2), will access the same data 908.

In order to provide a description environment capable of describing a type-centric network services, extensions are added as described herein. These extensions will be described in the "ts" namespace using the "xmlns:ts" prefix and the http://schemas.xmlsoap.org/wsdl/typesystem/namespace identifier. The resulting language and schema is general enough to create an object model agnostic description of multiple object systems.

SOAP Literal Encoding

The original WSDL binding section specifies two types of WSDL encodings, literal and encoded. This specification introduces a third type of encoding called SoapLiteral. SoapLiteral is similar to literal in that WSDL specifies the exact XML produced. It is similar to encoded in that it produces SOAP that conforms to Section 5 of the SOAP Specification. See http://schemas.xmlsoap.org/soap/encoding/.

SoapLiteral encoding eliminates redundant XML representations for similar concepts. Table 4 describes the redundant XML representation eliminated by the SoapLiteral binding.

TABLE-US-00004 TABLE 4 Avoids multiple ways of representing fields: attributes vs. elements. Use element representation. Avoids global element name-type name distinction. For every type, it allows definition of a single global element name in its schema namespace that has the same name as the type. Avoids using element substitution groups while representing fields of structs or classes. Uses element substitution groups to represent the elements of composite types without fields, e.g. collections, arrays. Avoids Choice grouping construct. Subtyping can be utilized to achieve functionality provided by it with a slight loss of strong typing at schema validation time. Classes will only include the class methods in their portType. If the class implements interfaces, the portType associated with the interface will contain the interface methods.

The schema types defined inside the types section of the WSDL document conforms to the above rules when SoapLiteral encoding is specified for a portType. In addition, the SoapAction "http" header is defined to be the fully qualified portname, followed by the `#` character, followed by the method name (e.g., porttype#methodname).

SoapLiteral binding defines a single element called "binding" that has one or more child elements called "transport" that specify the transports supported by the port. Further, all methods of the supplied porttype, should be equally accessible using SoapLiteral binding rules. For example, the binding fragment in Table 5 shows a stock quote binding accessible over "http" using SoapLiteral binding:

TABLE-US-00005 TABLE 5 <binding name="StockQuoteSoapBinding" type="defs:StockQuotePortType"> <soapliteral:binding xmlns:soapliteral= "http://schemas.xmlsoap.org/wsdl/typesystem/soapliteral/"> <transport>http://schemas.xmlsoap.org/soap/http</transport> </soapliteral:binding> </binding>

Types

Simple Types

The "ts" base definition directly uses the primitive types contained in the XSD schema namespace.

Enum and Bit Fields

Enumeration type is a value type based on one of the integer primitive types. It consists of a set of named elements. Values of an enumeration type typically consist of a consecutive range of integers starting at zero. It is also possible to specify the integer value associated with a specific element name, in which case the values of successors to that element are successors of that integer value.

The XSD enumeration facet is used to represent enumeration type in terms of the element names as shown in Table 6.

TABLE-US-00006 TABLE 6 <simpleType name="user-defined enum type name" ts:enumType="xsd:QName"> <restriction base="xsd:string"> <enumeration value="user-defined name" ts:enumValue="user-defined value"? /> ... </restriction> </simpleType>

As shown in Table 6, "ts:enumType" is an annotation on the type and gives the base integer type associated with the type; "ts:enumType" is defined as a global attribute in the "ts" schema namespace as, <attribute name="enumType" type="xsd:QName" form="qualified" default="xsd:int"/>. As specified by the above schema, unless explicitly qualified with "ts:enumType", an enumeration's type will default to "xsd:int". Of course this is implementation specific, and other defaults may apply in another implementation.

A "ts:enumValue" is another global attribute that allows the explicit setting of the integer value corresponding to the element name, <attribute name=enumValue type="int" form="qualified"/>. For example, given, enum Color={red=1,green, blue}, its representation would appear as shown in Table 7.

TABLE-US-00007 TABLE 7 <simpleType name="Color"> <restriction base="xsd:string"> <enumeration value="red" ts:enumValue="1"/> <enumeration value="green"/> <enumeration value="blue"/> </restriction> </simpleType>

When an "ts:enum Value" is not explicitly specified, the value is implicitly one greater than the predecessor or 0 if it is the first enumeration.

A bit field is a mathematical powerset on the values of its base type. In other words, a bit field is a special type of enumeration, in which the enumValues are powers of two rather than succeeding integers. The base type itself is an enumeration of named elements, where each element has an associated value of an integer type. A value of a bit field type is an XSD "list" type, and contains a combination of one or more elements of the base enumeration type. A bit field is represented as shown in Table 8.

TABLE-US-00008 TABLE 8 <simpleType name="user-defined type name" ts:enumType="qname"> <list> <simpleType> <restriction base="string"> <enumeration value="user-defined name" ts:enumValue="user-defined value"? /> . . . </restriction> </simpleType> </list> </simpleType>

For example, for a bit field specified as, [Flags] enum Color {red=1,green=2, blue=8}, its representation would appear as shown in Table 9.

TABLE-US-00009 TABLE 9 <simpleType name=Color> <list> <simpleType> <restriction base="xsd:string"> <enumeration value="red" ts:enumValue="1"/> <enumeration value="green" ts:enumValue="2"/> <enumeration value="blue" ts:enumValue="8"/> </restriction> </simpleType> </list> </simpleType>

Additionally, if an element "cc" of type "Color" had the value of "red|green" (both "red" and "green" bits are on simultaneously), the data appears as a space separated list of values (e.g., <cc>red green</cc>).

Structures and Data-Classes

Aggregate data types are of two types: struct or data-class. The "ts:struct" attribute differentiates between structures and data-classes. A struct is used when all field values are to be encoded in-line and it cannot be referenced from elsewhere in the XML document. A data-class is used when, due to the potential for circular references in the data, it can be referenced from other parts of the XML document. In other words, struct is a value type where as a data-class is a reference type. Further, data-classes support inheritance.

A structure is a composite value type that is a collection of named fields that are themselves of any simple or composite type. The fields of a structure can be accessed using their names. In this implementation, there can't be references to a struct as it is a value type and a structure can't extend another type. The XSD complexType is used to represent a "ts" structure as shown in Table 10,where "ts:struct" is a global attribute defined in the ts namespace defined as, <attribute name="struct" type="xsd:boolean" fixed="true" form="qualified"/>.

TABLE-US-00010 TABLE 10 <complexType name="struct name" ts:struct="true"> <sequence> <element name="field name" type"field type"/> ... </sequence> </complexType>

Since a struct is a value type that cannot be referenced, the schema fragment does not have the id attribute. Of course these are implementation details that may be varied.

For every struct definition, a corresponding global element is defined in the same namespace as the struct definition namespace. This global element has the same name as the struct name as shown in Table 11,where "anyValueElement" is defined as a global element in the "ts" namespace as <element name="anyValueElement" type="xsd:anyType" abstract="true"/>. The substitution group is useful when the struct appears as the element type of an array.

TABLE-US-00011 TABLE 11 <element name="struct name" type="tns:struct name" substitutionGroup="ts:anyValueElement"/>

A data-class is a multi-reference composite type that is a collection of named fields that are themselves of any simple or composite type. The fields of a data-class can be accessed using their names. A data-class can specify type inheritance, in which case it inherits all the fields specified in the base data-class. Unlike a struct, a data-class is reference type. In Table 12,an attribute group in the "ts" namespace is defined to support referencing of data-class instances.

TABLE-US-00012 TABLE 12 <attributeGroup name="dataClassRefAttrs"> <attribute name="id" type="xsd:ID" use="optional"/> <attribute name="href" type="string" use="optional"/> </attributeGroup>

The id attribute allows a data-class instance to be identified so that it can be referred to by other entities. The href attribute allows a reference field to point to a data-class instance stored in the field.

Data-classes are of two types: single-reference and multi-reference. Single-reference data-class instances can be referenced by only one field within a context, resulting in tree semantics. This permits many optimizations, such as in-line representation and not detecting aliasing. Multi-reference data-class instances can be referenced by more than one field within a context, resulting in graph semantics. As such, multi-reference is the general case. For example, data-class instances involving circular references can only be represented using multi-reference semantics. Of course these limitations are merely implementation specific.

A multi-reference data-class which is not derived from another type (not a subtype) can be represented as shown in Table 13.

TABLE-US-00013 TABLE 13 <complexType name="dataclass name"> <sequence minOccurs="0"> <element name="field name" type="field type"/> ... </sequence> <attributeGroup ref="ts:dataclassRefAttrs"/> </complexType>

For every data-class definition, a corresponding global element is defined in the same namespace as the data-class definition namespace. This global element has the same name as the data-class name: <element name="data-class name" type="tns:data-class name" substitutionGroup="ts:anyValueElement"/>. The any ValueElement is as defined earlier in the "structure" section. The substitution group is useful when the data-class instance appears as an element inside an array. The minOccurs="0" on the sequence element ensures that the above element can refer to a "dataClass name" instance by simply using the href attribute with empty content and still be schema-valid.

A multi-reference data-class which derives from another data-class (which must also be a multi-reference data-class) is represented as shown in Table 14.

TABLE-US-00014 TABLE 14 <complexType name="data-class name"> <complexContent> <extension base="base data-class name"> <sequence minOccurs="0"> <element name="field name" type="field type"/> ... </sequence> </extension> </complexContent> </complexType> <element name="data-class name" type="tns:data-class name" substitutionGroup="ts:anyValueElement"/>

A single-reference data-class which is not derived from another type is represented as shown in Table 15.

TABLE-US-00015 TABLE 15 <complexType name="data-class name"> <sequence> <element name="field name" type="field type"/>* </sequence> </complexType> <element name="data-class name" type="tns:data-class name" substitutionGroup="ts:anyValueElement"/>

The difference between a single-reference data-class and a structure is that by definition a structure cannot be referenced, while a data-class can be referenced and the reference can be null. Also, notice the absence of minOccurs="0" attribute on the sequence element and reference to the dataClassRefAttr attribute group.

When the single-reference data-class derives from a base type, it is represented as shown in Table 16.

TABLE-US-00016 TABLE 16 <complexType name="data-class name"> <complexContent> <extension base="base class name"> <sequence> <element name="field name" type="field type"/> ... </sequence> </extension> </complexContent> </complexType> <element name="data-class name" type="tns:data-class name" substitutionGroup="ts:anyValueElement"/>

The single-reference/multi-reference aspect of a type must be the same for every data-class within a hierarchy.

Fields

A struct or a data-class field is completely defined by the field name and its type. Fields can be represented as elements of the XSD complex type representing the enclosing composite type.

If a field has a unique (single) reference to an instance of a type that cannot be null (e.g. struct), it is represented as, <element name="field name" type="fieldType"/>. This is the form used to define value-type fields.

If a field has a unique (single) reference to an instance of a type that can be null (e.g. data-class), it is represented as, <element name="field name" type="fieldType" nillable="true"/>.

If a field has a multi (shared) reference to an instance of a type (e.g. data-class), it is represented as, <element name="field name" type="ts:reference" ts:refType="fieldType" nillable="true"/>. The "ts:reference" is defined as a complex XSD type in the "ts" namespace as shown in Table 17.

TABLE-US-00017 TABLE 17 <complexType name="reference" final="#all"> <attribute name="href" type="xsd:string" use="required"/> </complexType>

The "ts:refType" is a global attribute in the "ts" namespace defined as, <attribute name="refType" type="xsd:string" form="qualified"/>.

Thus, in the element declaration of a multi-reference field, the "type" of the field captures the reference aspect of the field and the "ts:refType" captures the real type of the field.

Since type inheritance affects the data corresponding to the field at runtime, it is necessary that the xsi:type attribute be specified with the instance data whenever the type of a field is a subtype.

In order to discuss an example using structs, data-classes, and their fields, the representation of the program segment shown in FIG. 11 is considered. Using the discussed type-centric extensions, the objects shown in FIG. 11 are represented as shown in FIG. 12.

Next, consider two employees XX and YY, where XX is a regular employee and YY is a manager. Their representation would be as shown in Table 18.

TABLE-US-00018 TABLE 18 <Employee id="XX-ID"> <name>XX</name> <empId>1</empId> </Employee> <Manager id="YY-ID"> <name>YY</name> <empId>1</empId> <mgrId>1</mgrId> </Manager>

Notice that each has been given a unique "id" attribute as specified by the <attributeGroup ref="ts:data-classRefAttrs"/> in their respective schemas. Also notice that YY is an extension of XX (a Manager is-a Employee).

Further, if XX is a speaker on Wednesday at 10.00 a.m., the presentation data is represented as shown in Table 19.

TABLE-US-00019 TABLE 19 <Presentation> <speaker href="#XX-ID"/> <startTime> <weekDay>2</weekDay> <hour>10</hour> <minute>2</minute> </startTime> </Presentation>

Since "speaker" is a multi-reference field, it references the "speaker" instance, whereas the "startTime" (struct) data appears inline.

If YY is the speaker, the "speaker" would appear with the instance type as shown in Table 20.

TABLE-US-00020 TABLE 20 <Presentation> <speaker href="#YY-ID"/> <startTime> <weekDay>2</weekDay> <hour>10</hour> <minute>2</minute> </startTime> </Presentation>

However, if "speaker" has been declared as a single reference field which is nullable, the schema fragment defining "Presentation" would be as shown in Table 21.

TABLE-US-00021 TABLE 21 <complexType name="Presentation"> <sequence minOccurs="0"> <element name="speaker" type="tns:Employee" nillable="true"/> <element name="startTime" type="tns:WeekTime"/> </sequence> <attributeGroup ref="ts:dataClassRefAttrs"/> </complexType>

Note the change in the speaker field declaration element compared to its previous in FIG. 12. Speaker is now represented in-line since it is a single reference.

If XX is the speaker on Wednesday at 10.00 a.m., the "Presentation" data would appear as shown in Table 22.

TABLE-US-00022 TABLE 22 <Presentation> <speaker> <name>XX</name> <empId>1</empId> </speaker> <startTime> <weekDay>2</weekDay> <hour>10</hour> <minute>2</minute> </startTime> </Presentation>

Since "Presentation" has only single references in both "speaker" and "startTime" fields, the data for both the fields appears inline.

If YY is the speaker, the "speaker" data would appear with the instance type as shown in Table 23.

TABLE-US-00023 TABLE 23 <Presentation> <speaker xsi:type="tns:Manager"> <name>YY</name> <empId>1</empId> <mgrId>1</mgrId> </speaker> <startTime> <weekDay>2</weekDay> <hour>10</hour> <minute>2</minute> </startTime> </Presentation>

Notice the use of the xsi:type attribute. This is the XSD-defined attribute that allows derived types to be used in place of base types (as in the above case).

Arrays

This document utilizes array representation from the soap-encoding schema namespace to represent arrays. However, the multiple choices for the element names provided by the soap-encoding is restricted to a single choice by utilizing the anyValueElement substitution group for representing array elements. The array elements are represented as instances belonging any ValueElement substitution group. In other words, element name of an array element will always be the type name as specified by the any ValueElement substitution group thereby indicating the type of the element.

Arrays are multi-reference types. Arrays have one or more dimensions (rank) whose members are distinguished by ordinal position. An array value is represented as a series of elements reflecting the element type, with elements appearing in ascending ordinal sequence. For multi-dimensional arrays, the dimension on the right side varies most rapidly.

An Array complex type is defined in the "ts" namespace as shown in Table 25.

TABLE-US-00024 TABLE 25 <complexType name="Array"> <complexContent> <sequence> <element ref="ts:anyValueElement" maxOccurs="unbounded"/> </sequence> <attributeGroup ref="ts:dataClassRefAttrs"/> <attributeGroup ref="soap-enc:arrayAttrs"/> </complexContent> </complexType> <element name="Array" type="ts:Array" substitutionGroup="ts:anyValueElement"/>

The substitution group is useful when an array appears as the element type of an array (for example, jagged arrays).

Arrays must contain the ts:arrayType attribute whose value specifies the static type of the array elements as well as the dimension(s) of the array. The ts:arrayType is defined as a global attribute in the ts namespace as follows: <attribute name="arrayType" type="string" form="qualified"/>. The value of the ts:arrayType attribute, in this implementation, follows the BNF syntax below: arrayTypeName :=arrayElementType arraySize arrayElementType :=QName (rank)* rank :="["(",")* "]" arraySize :="[" length ("," length?)* "]" length :=(DIGIT)+ For example, a jagged array of length 5 whose members are of type "single dimensional array of integers" would be represented as "int[][5]". Likewise, a rectangular jagged array of dimensions 3.times.5 whose members are of type "two-dimensional rectangular array of integers" would be represented as "int[,][3,5]". Note that the above array definition in the ts namespace is modeled after the array definition in the soap-encoding namespace and as such is simply following SOAP encoding rules. As such, it is possible to define array definition in the ts namespace as a restriction of the array definition in the soap-encoding namespace. Again, these are merely implementation details which may vary substantially.

Array Fields

A structure or a data-class field is defined by the field name and its type, which can be an array type. Fields can be represented as elements of XSD complex type representing enclosingType.

A single-reference field of an array type that cannot be null is represented as, <element name="array field name" type="ts:Array"ts:arrayType="arrayTypeName"/>, where ts:array, ts:arrayType and arrayTypeName are as defined in the array section above.

If the above field can be null, if it is represented as: <element name="array field name" type="ts:Array"ts:arrayType="arrayTypeName" nillable="true"/>.

A multi-reference field of an array type that cannot be null is represented as: <element name="array field name" type="ts:reference"ts:arrayType="arrayTypeName"/>. Note that the type has been changed from ts:Array to ts:reference in the above element declaration.

Array Example

Using these extensions, several examples of arrays are considered.

a) Given the earlier definition of the "WeekTime" class, and a class field which is of an array type "WeekTime[] today", the class field is represented as shown in Table 26.

TABLE-US-00025 TABLE 26 <element name="today" type="ts:Array" ts:arrayType="tns:WeekTime[ ]" nillable="true"/>

The actual array type information would appear as an attribute in the instance data as shown in Table 27.

TABLE-US-00026 TABLE 27 <today soap-enc:arrayType="tns:WeekTime[3]"> <tns:WeekTime> <weekday>3</weekday> <hour>10</hour> <minute>0</minute> </tns:WeekTime> <tns:WeekTime> <weekday>3</weekday> <hour>12</hour> <minute>30</minute> </tns:WeekTime> <tns:WeekTime> <weekday>3</weekday> <hour>15</hour> <minute>0</minute> </tns:WeekTime> </today>

b) Given the earlier definition of Employee and Manager, and a field which is an array of "Employees" (e.g., Employee[] devteam) that cannot be null, the field is represented as, <element name="devteam" type="ts:Array" ts:arrayType="Employee[]"/>.

The elements of the array can be "Employee" or any of its subtypes. Since "Employee" is a shared reference type, the instance data would appear as shown in Table 28.Note the use of element name to represent elements of the array.

TABLE-US-00027 TABLE 28 <devteam soap-enc:arrayType="Employee[2]"> <tns:Manager href="#YY-ID" /> <tns:Employee href="#XX-ID"/> </devteam>

If, instead, "Employee" and "Manager" were defined as single-reference types, the instance data would appear as shown in Table 29.

TABLE-US-00028 TABLE 29 <devteam soap-enc:arrayType="tns:Employee[2]"> <tns:Employee> <name>XX</name> <empId>1</empId> </tns:Employee> <tns:Manager> <name>YY</name> <empId>1</empId> <mgrId>1</mgrId> </tns:Manager> </devteam>

c) A field which is an array of arrays (jagged array), such as "Employee [][] subteams", that cannot be null is represented as, <element name="subteams" type="ts:Array"ts:arrayType="tns:Employee[][]"/>. As shown in Table 30,the array type information appears as an attribute in the instance data, and the element names directly indicate data elements that are of a subtype.

TABLE-US-00029 TABLE 30 <subteams soap-enc:arrayType="Employee[ ][2]"> <ts:array href="#subteams-1-ID"/> <ts:array href="#subteams-2-ID"/> </subteams> <ts:array id="subteams-1-ID" soap-enc:arrayType="Employee[3]"> <tns:Manager href="#YY-ID"/> <tns:Employee href="#XX-ID"/> <tns:Employee href="#ZZ-ID"/> </ts:array> <ts:array id="subteams-2-ID" soap-enc:arrayType="Employee[2]"> <tns:Manager href ="#RR-ID"/> <tns:Employee href="#SS-ID"/> </ts:array>

Data-Class Constant Values

A constant value of a simple type can be represented using the XSD "fixed" constraint. For example, the class "AA" shown in Table 31,is represented as shown in Table 32.

TABLE-US-00030 TABLE 31 class AA { const int c1 = 5.0; }

TABLE-US-00031 TABLE 32 <complexType name="AA"> <sequence minOccurs="0"> <element name="c1" type="int" fixed="5" minOccurs="0" maxOccurs="0"/> </sequence> </complexType>

To represent constant values of complex types, a global attribute "constantValue" is defined in the "ts" namespace as follows: <attribute name="constantValue" type="xsd:string" form="qualified"/>. Given the two classes shown in Table 33,the types section contains the definitions shown in Table 34.

TABLE-US-00032 TABLE 33 class BB { int c1; int c2; } and class CC { const BB bb = new BB (5, 6); int c3; }

TABLE-US-00033 TABLE 34 <complexType name="BB"> <sequence . . . /> <complexType> <element name="BB" type="tns:BB" substitutionGroup="ts:anyValueElement"/> <complexType name="CC"> <sequence minOccurs="0"> <element name="bb" type="tns:BB" minOccurs="0" maxOccurs="0" ts:constantValue="#Valuebb" /> <element name="c3" type="xsd:int"/> </sequence> </complexType> <element name="CC" type="tns:CC" substitutionGroup="ts:anyValueElement"/>

To capture the instance value referenced by the constantValue attribute, this specification defines a "values" section in the "ts" namespace that is a sibling of the wsdl "types" section. For the above example, the "ts" values section would contain the value of "bb" as shown in Table 35.

TABLE-US-00034 TABLE 35 <ts:values> <AA id="Valuebb"> <c1>5</c1> <c2>6</c2> </AA> </ts:values>

The "ts:constant Value" can also represent simple (primitive) types directly using the distinction that they do not start with # character, thereby avoiding the indirection. The # character is escaped when representing string values.

PortType Extensions

In this implementation, operations, representing actions and property accessors, and events are combined into logical and formally classified groups using the WSDL portType construct as shown below. There are two kinds of WSDL portTypes: a service-interface portType and a service-class portType. A service-interface portType is an abstract aggregation of methods, properties and event sources. A service-class portType is a similar aggregated construct that represents concrete implementations of zero or more service-interface portTypes plus additional methods, properties and event sources. Some service classes define fields that are accessed using FieldGetter and FieldSetter methods. In such a case, the service class will have an entry in both the <Types> section and the <portType> section. If there are no fields, then the service class is only defined within the <portType> section. However, this may vary based on the implementation.

Note that a Property construct is really just a simplified means for specifying paired get and/or set methods (operations called accessors) for a given logically-exposed data element within the context of a service-class or service-interface. Properties are therefore considered behavioral and as such are defined within <portType> section WSDL document. Properties are typically used to model the state of a Service. This specification defines a simplified syntax for specifying properties within the <portType> section.

Service-Classes

As stated above, service-class portTypes are used to formally declare aggregated units of concrete behavior that can be accessed remotely. Further service-classes support extension of a service-class's behavior via inheritance. A service-class portType is identified by the presence of a "ts:serviceClass" element in its portType definition. The "ts:serviceClass" element has two distinct types of child elements. The first, "ts:extends" points to the service-class from which the current service-class inherits. As a service-class can extend at most only one other service-class, there can only be at most one "ts:extends" element within a "ts:serviceClass" element. Of course this would vary based on the implementation. The second, "ts:implements" points to the service-interface implemented by the current service-class. As a service-class can implement zero or more service-interfaces, there can be zero or more "ts:implements" elements within a "ts:serviceClass" element. The structure is shown in Table 36,and the xsd schema for the "ts:serviceClass" is shown in Table 37.

TABLE-US-00035 TABLE 36 <portType name="name"> <ts:serviceClass> <ts:extends>qname</extends>? <ts:implements>qname</implements>* </ts:serviceClass> <operation name = "portTypeOperation"> ... </operation> </portType>

TABLE-US-00036 TABLE 37 <complexType name="serviceClass"> <sequence> <element name="extends" type="qname" minOccurs="0" /> <element name="implements" type="qname" minOccurs="0" maxOccurs="unbounded" /> </sequence> </complexType> <element name="serviceClass" type="tns:serviceClass"/>

Service-Interfaces

In this implementation, service-interfaces are purely abstract functionality types that can't be exposed directly; a service-interface's functionality can only be exposed via the service-class implements construct. A service-interface is a portType which describes other inherited service-interfaces, operations (properties and actions), and events. Service-interfaces are used by the standards organizations to model reusable behavior that is not necessarily bound to a particular implementation or endpoint. A service-interface is identified by the presence of "ts:serviceInterface" element in its portType definition, as shown in Table 38.The "ts:serviceInterface" element has only one type of child element, "ts:extends", that points to the service-interfaces extended by the current service-interface. As a service-interface can extend zero or more service-interfaces, there can be zero or more "ts:extends" elements within a "ts:serviceInterface" element. However, this may vary based on the implementation.

TABLE-US-00037 TABLE 38 <portType name="name"> <ts:interface> <extends>qname</extends>* </ts:interface> <operation name = "portTypeOperation"> ... </operation> </portType>

The xsd schema for the ts:interface type is shown in Table 39.

TABLE-US-00038 TABLE 39 <complexType name="serviceInterface"> <sequence> <element name="extends" type="qname" minOccurs="0" maxOccurs="unbounded" /> </sequence> </complexType> <element name="interface" type="tns:serviceInterface" />

Properties

A property defines a named value and the methods to access the value. The named value is of a particular type. The property may support get and/or set methods. A set of properties are defined using the "ts:properties" element within either a "ts:serviceClass" or "ts:serviceInterface" portType. A "ts:property" element has the child elements described in Table 40.

TABLE-US-00039 TABLE 40 Child Ele- ment Description Name The property name is unique across all the methods and properties encapsulated within the enclosing portType. Type The property type is a qualified name referring to a type definition present in a schema namespace. Such a schema can be present in the type section of document. Get These elements defines the mode of operations (accessors) and allowed on the property. There are two accessors possible: a get Set and a set. These elements identify the operations that implement the corresponding accessors which are implicitly named with get_ or set_prefixes respectively on the associated property name when empty. The methods are required to be defined in the port type enclosing the property definition when explicitly specified.

The "ts:properties" is defined as shown in Table 41,with the xsd schema shown in Table 42.

TABLE-US-00040 TABLE 41 <portType name="name"> <ts:properties> ? <ts:property>* <name>nmtoken</name> <type>qname</type> <get>GetOperation?</get>? <set>SetOperation?</set>? </ts:property> </ts:properties> <operation name = "portTypeOperation"> ... </operation> </portType>

TABLE-US-00041 TABLE 42 <complexType name="properties"> <sequence> <element ref="property" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <element name="properties" type="tns:properties"/> <complexType name="property"> <sequence> <element name="name" type="xsd:NCName" /> <element name="type" type="xsd:QNname" /> <element name="get" type="xsd:NCName" minOccurs"0" /> <element name="set" type="xsd:NCName" minOccurs="0" /> </sequence> </complexType> <element name="property" type="tns:property"/>

Event Source

An event source is a named and typed entity which supports subscriptions for interested parties. When the event occurs, a value of the type specified in the eventSource is returned to the subscriber in an event notification message.

A set of event-sources are defined using the "ts:eventSources" element within either a "ts:serviceClass" or "ts:serviceInterface" portType. A "ts:EventSource" has the elements described in Table 43.

TABLE-US-00042 TABLE 43 Child Element Description Name The event source name is unique across all the methods, properties, and event sources encapsulated within the enclosing service or interface. Type The event type is a qualified name referring to a type definition present in a schema namespace. The types section can be used to define the event type.

The "ts:eventSource" is defined as shown in Table 44,with the xsd schema for the "ts:eventSource" type shown in Table 45.

TABLE-US-00043 TABLE 44 <portType name="name"> <ts:eventSources> ? <ts:eventSource>* <name>nmtoken</name> <type>qname</type> </ts:eventSource> </ts:eventSources> <operation name = "portTypeOperation"> ... </operation> </portType>

TABLE-US-00044 TABLE 45 <complexType name="eventSources"> <sequence> <element ref="eventSource" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <element name="eventSources" type="tns:eventSources"/> <complexType name="eventSource"> <sequence> <element name="name" type="xsd:NCName" /> <element name="type" type="xsd:QName" /> </sequence> </complexType> <element name="eventSource" type="tns:eventSource"/>

Service-Class and Service-Interface Constant Values

Symbols can be given constant values in service-class and service-interface portTypes using the standard XSD element construct as follows: <xsd:element name="symbol name" type="QName" fixed="string"ts:constantValue="string"/>.

A constant value of a simple type can be represented using the XSD fixed constraint. For example, the program segment shown in Table 46,can be represented as shown in Table 47.

TABLE-US-00045 TABLE 46 ServiceInterface AA { const int c1 = 5.0; }

TABLE-US-00046 TABLE 47 <portType name="AA"> <ts:serviceInterface/> <xsd:element name="c1" type="int" fixed="5" minOccurs="0" maxOccurs="0"/> ... </portType>

XSD does not, however, define a mechanism for declaring constant values for complex data types. To support the definition of constant values of complex types, the "ts:contantValue" attribute defined in the data-classes constant value section is used. For example, a data-class containing two integers, as shown in Table 48,can be represented as shown in Table 49.

TABLE-US-00047 TABLE 48 class BB { int c1; int c2; } ServiceInterface CC { const BB bb = BB (5, 6); }

TABLE-US-00048 TABLE 49 <portType name="CC"> <ts:serviceInterface/> <xsd:element name="bb" type="tns:BB" ts:constantValue="#Valuebb"/> ... </portType>

Further, the types section of the description would contain the definitions shown in Table 50,and the "ts:values" section of the description would contain the value of bb as shown in Table 51.

TABLE-US-00049 TABLE 50 <xsd:complexType name="BB"> <sequence minOccurs="0"> <element name="c1" type="xsd:int"/> <element name="c2" type="xsd:int"/> </sequence> <attributeGroup ref="ts:dataClassRefAttr" </xsd:complexType> <xsd:element name="BB" type="tns:BB" substitutionGroup="ts:anyValueElement"/>

TABLE-US-00050 TABLE 51 <ts:values> <AA id="Valuebb"> <c1>5</c1> <c2>6</c2> </AA> </ts:values>

Note that the id attribute of the AA element in the "ts:values" section has the same string value as the corresponding value of the "ts:constantvalue" attribute defined in the CC portType, above. Further, the "ts:constantValue" can also represent simple (primitive) types directly using the distinction that they do not start with the # character, thereby avoiding the indirection. The # character can be escaped when representing string values.

Accessing Child Services

Properties can be used to obtain the child


Free Web Sudoku Puzzles.
Solve with your browser.
      1 4   3 8  
              5  
3   7 5     9    
1   9 2     8    
7 8           1 9
    2     9 5   3
    1     6 7   2
  7              
  4 6   7 5      
What is it?



Add Your Site · Terms Of Service · Privacy Policy


DISCLAIMER
Linkgrinder is a free service that searches the Internet and indexes all files found so that you may search quickly and easily for shared files. These files are created and made available individually by users whose identity we are not aware of and who we have no control over. In essence we function like a search engine tool; these files ARE NOT STORED OR SERVED BY OUR NETWORK. We are not responsible for any materials obtained by using our service. We do not monitor any of the contents of these files. These files may contain viruses, illegal materials, materials inappropriate for minors, offensive files and the like. BY USING OUR SERVICE, YOU ASSUME FULL RESPONSIBILITY FOR DOWNLOADING THESE MATERIALS AND WILL INDEMNIFY US FOR ANY DAMAGES THAT MAY BE INCURRED.

For More Specific Information VIEW OUR TERMS OF SERVICE.

Thank you and Enjoy!