US2004064528A1PendingUtilityA1

Safe interoperability among web services

Assignee: MICROSOFT CORPPriority: Sep 30, 2002Filed: Sep 30, 2002Published: Apr 1, 2004
Est. expirySep 30, 2022(expired)· nominal 20-yr term from priority
H04L 61/10H04L 67/06H04L 67/51H04L 69/12H04L 67/10H04L 69/329H04L 67/14H04L 67/02
43
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

The joining of Web services is accomplished via a virtual contract through the use of safeties. The joining of Web services heightens the safe interoperability of Web services to create greater functionality than each Web service alone can provide. Moreover, because the joining of Web services is formed programmatically, Web services are more trustworthy, dependable, and available if the safeties of Web services are complied with. The programmatic joining reduces or eliminates mistakes, lost requests, faults in the face of invalid requests, or corrupt persisted data in the interoperability of Web services

Claims

exact text as granted — not AI-modified
The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:  
     
         1 . A networked system for allowing Web services to communicate, comprising: 
 a first Web service for offering computing services, the first Web service including a first port for transmitting and receiving messages, the first port including a first porttype; and    a second Web service that desires the computing services offered by the first Web service, the second Web service including a second port for transmitting and receiving messages, the second port including a second porttype, the second port being fusable with the first port for safe access to the services offered by the first Web service if the second porttype is compatible with the first porttype.    
     
     
         2 . The networked system of  claim 1 , wherein the first Web service includes a third port for transmitting messages, and the second Web service provides a fourth port for receiving messages from the third port.  
     
     
         3 . The networked system of  claim 2 , wherein the fourth port is located on a third Web service, the fourth port being provided to the second Web service by the third Web service.  
     
     
         4 . The networked system of  claim 1 , wherein the first Web service is executed on a first computing device.  
     
     
         5 . The networked system of  claim 2 , wherein the second Web service is executed on a second computing device.  
     
     
         6 . A networked system for allowing Web services to communicate, comprising: 
 a first Web service offering a first set of services, the first Web service including a first safety that programmatically expresses safe access to the first set of services; and    a second Web service offering a second set of services, the second Web service including a second safety that programmatically expresses safe access to the second set of services, the second Web service accessing the first set of services and the first Web service accessing the second set of services if the second safety is able to programmatically align with the first safety.    
     
     
         7 . The networked system of  claim 6 , wherein the first set of services of the first Web service are accessible via a first set of operations, the first safety programmatically specifying allowable invocation permutations of the first set of operations.  
     
     
         8 . The networked system of  claim 7 , wherein the second set of services of the second Web service are accessible via a second set of operations, the second safety programmatically specifying allowable invocation permutations of the second set of operations.  
     
     
         9 . The networked system of  claim 8 , wherein the first Web service includes a first porttype, the first porttype including the first set of operations and the first safety.  
     
     
         10 . The networked system of  claim 9 , wherein the second Web service includes a second porttype, the second porttype including the second set of operations and the second safety.  
     
     
         11 . A networked system for allowing Web services to communicate, comprising: 
 a first Web service offering services, the first Web service including a safety that programmatically describes an order in which to access the offered services; and    a second Web service that desires he services offered by the first Web service, the second Web service accepting the safety of the first Web service to form a virtual contract with the first Web service so that the second Web service can access the offered services.    
     
     
         12 . The networked system of  claim 11 , wherein the first Web service includes a first porttype and the second Web service includes a second porttype, wherein the virtual contract is formed when the first porttype is compatible with the second porttype.  
     
     
         13 . The networked system of  claim 11 , wherein the second Web service includes another safety, wherein the virtual contract is formed when the safeties are acceptable to both the first Web service and the second Web service.  
     
     
         14 . The networked system of  claim 11 , wherein the first Web service includes a first port and the second Web service includes a second port, wherein the first port and the second port is fused when the virtual contract is formed.  
     
     
         15 . The networked system of  claim 11 , wherein the first Web service programmatically joins the second Web service when the virtual contract is created to form a composition Web service that comprises both the first Web service and the second Web service.  
     
     
         16 . A computer-readable medium having a customizable, tag-based data structure stored thereon for use by a Web service to evaluate safe interoperability with another Web service, the data structure comprising: 
 a porttype tag that is indicative of operations capable of being invoked by Web services; and    a safety tag that is indicative of a safety that programmatically specifies an order by which Web services invoke the operations.    
     
     
         17 . The computer-readable medium of  claim 16 , wherein the safety tag is nested within the porttype tag.  
     
     
         18 . The computer-readable medium of  claim 17 , wherein nesting within the porttype tag are one or more signature tags that are indicative of signatures of the operations.  
     
     
         19 . The computer-readable medium of  claim 17 , wherein nesting within the safety tag is a stop safety tag that is indicative of inactivity or termination of the safety.  
     
     
         20 . The computer-readable medium of  claim 17 , wherein nesting within the safety tag is a choice safety tag that is indicative of a choice between two safeties.  
     
     
         21 . The computer-readable medium of  claim 17 , wherein nesting within the safety tag is a menu safety tag that is indicative of a choice between two safeties.  
     
     
         22 . The computer-readable medium of  claim 17 , wherein nesting within the safety tag is a parallel safety tag that is indicative of parallel execution of two safeties.  
     
     
         23 . The computer-readable medium of  claim 17 , wherein nesting within the safety tag is a recursion safety tag that is indicative of a recursion of the safety.  
     
     
         24 . The computer-readable medium of  claim 17 , wherein nesting within the safety tag is a reference safety tag that is indicative of a name for the safety.  
     
     
         25 . A computer-implemented method for creating a specification for a Web service that corresponds to a program of the Web service, the method comprising: 
 creating a set of operations that are capable of being invoked by Web services; and    creating a safety that specifies the permissible invocation permutations of the set of operations.    
     
     
         26 . The method of  claim 25 , wherein the method further comprising creating a porttype and placing the set of operations and the safety in the porttype.  
     
     
         27 . The method of  claim 26 , wherein the method further comprising creating abstract definitions of the Web service and placing the porttype into the abstract definitions of the Web service.  
     
     
         28 . The method of  claim 27 , wherein the method further comprising creating concrete descriptions for the Web service.  
     
     
         29 . A computer-readable medium having computer-executable instructions for performing a method of creating a specification for a Web service that corresponds to a program of the Web service, the method comprising: 
 creating a set of operations that are capable of being invoked by Web services; and    creating a safety that specifies the permissible invocation permutations of the set of operations.    
     
     
         30 . The computer-readable medium of  claim 29 , wherein the method further comprising creating a porttype and placing the set of operations and the safety in the porttype.  
     
     
         31 . The computer-readable medium of  claim 30 , wherein the method further comprising creating abstract definitions of the Web service and placing the porttype into the abstract definitions of the Web service.  
     
     
         32 . The computer-readable medium of  claim 31 , wherein the method further comprising creating concrete descriptions for the Web service.  
     
     
         33 . A computer-implemented method for checking the compatibility of a first porttype of a first Web service and a second porttype of the second Web service, the method comprising: 
 extracting a first safety (S1) from the first porttype of the first Web service and a second safety (S2) from the second porttype of the second Web service; and    testing the compatibility of the first safety with the second safety by binding the first safety with the second safety (S1:=:S2) to determine whether the result of the binding is an input-guarded process.    
     
     
         34 . The method of  claim 33 , wherein the first Web service includes a first port of the first porttype and the second Web service includes a second port of the second porttype, the first port being fusable with the second port if the result of the binding is an input guarded process.  
     
     
         35 . The method of  claim 33 , wherein the first Web service includes a first port of the first porttype and the second Web service includes a second port of the second porttype, the first port being fusable with the second port if the result of the binding is not an input-guarded process and both the first Web service and the second Web service tolerate the fusing of the first port and the second port.  
     
     
         36 . The method of  claim 33 , wherein if the first safety is a stop safety (0) and the second safety is of the form (S), the result of the binding is the second safety.  
     
     
         37 . The method of  claim 33 , wherein if the first safety is a sequence safety (M.S) and the second safety is a parallel safety (S 0 |S 1 ), the result of the binding is a menu safety ((S:=:S 0 /M)&(S:=:S 1 /M)).  
     
     
         38 . The method of  claim 33 , wherein if the first safety is a choice safety (S 0 +S 1 ) and the second safety is of the form (S), the result of the binding is a choice safety ((S 0 :=:S)+(S 1 :=:S)).  
     
     
         39 . The method of  claim 33 , wherein if the first safety is a menu safety (S 0 &S 1 ) and the second safety is of the form (S), the result of the binding is a menu safety ((S 0 :=:S)&(S 1 :=:S)).  
     
     
         40 . The method of  claim 33 , wherein if the first safety is a parallel safety (S 0 |S 1 ) and the second safety is another parallel safety (S 2 |S 3 ), the result of the binding is a menu safety ((S 0,2,3,1 )&(S 1,2,3,0 )&(S 2,0,1,3 )&(S 3,0,1,2 )).  
     
     
         41 . The method of  claim 40 , wherein each choice in the menu safety ((S 0,2,3,1 )&(S 1,2,3,0 )&(S 2,0,1,3 )&(S 3,0,1,2 )) can be placed in a form (S i,m,n,j ), wherein if a relationship ((S i :=:(S m |S n )):=:S j ) is defined for a particular choice, the result of the binding is the relationship ((S i :=:(S m |S n )):=:S j ) or otherwise the result of the binding is another relationship ((S i :=:(S m |S n ))|S j ).  
     
     
         42 . The method of  claim 33 , wherein if the first safety is a recursion safety (rec(K).S 0 ) and the second safety is of the form (S), the result of the binding is a relationship (S 0 {rec(K).S 0 /K}:=:S).  
     
     
         43 . The method of  claim 33 , wherein if the first safety is of the form (S) and the second safety is of the form (0/S 0 ), the result of the binding is undefined.  
     
     
         44 . The method of  claim 33 , wherein if the first safety is of the form (S) and the second safety is of the form (M 0 .S/M 1 ) and a match function (match(M 0 , M 1 )) is defined, the result of the binding is equated to a cut function (cut(M 0 , M 1 )).  
     
     
         45 . The method of  claim 33 , wherein if the first safety is of the form (S) and the second safety is of the form (M 0 .S/M 1 ) and a match function (match(M 0 , M 1 )) is not defined, the result of the binding is undefined.  
     
     
         46 . The method of  claim 33 , wherein if the first safety is of the form (S) and the second safety is of the form ((S 0 +S 1 )/M), the result of the binding is equated to a choice safety ((S 0 /M)+(S 1 /M)).  
     
     
         47 . The method of  claim 33 , wherein if the first safety is of the form (S) and the second safety is of the form ((S 0 &S 1 )/M), the result of the binding is equated to a menu safety ((S 0 /M)&(S 1 /M)).  
     
     
         48 . The method of  claim 33 , wherein if the first safety is of the form (S) and the second safety is of the form ((S 0 |S 1 )/M), the result of the binding is equated to a menu safety ((S 0 /M)&(S 1 /M)).  
     
     
         49 . The method of  claim 33 , wherein if the first safety is of the form (S) and the second safety is of the form (rec(K).S/M), the result of the binding is equated to a recursion safety (rec(K).(S/M)).  
     
     
         50 . A computer-readable medium having computer-executable instructions for performing a method for checking the compatibility of a first porttype of a first Web service and a second porttype of the second Web service, the method comprising: 
 extracting a first safety (S1) from the first porttype of the first Web service and a second safety (S2) from the second porttype of the second Web service; and    testing the compatibility of the first safety with the second safety by binding the first safety with the second safety (S1:=:S2) to determine whether the result of the binding is an input-guarded process.    
     
     
         51 . The computer-readable medium of  claim 50 , wherein the first Web service includes a first port of the first porttype and the second Web service includes a second port of the second porttype, the first port being fusable with the second port if the result of the binding is an input guarded process.  
     
     
         52 . The computer-readable medium of  claim 50 , wherein the first Web service includes a first port of the first porttype and the second Web service includes a second port of the second porttype, the first port being fusable with the second port if the result of the binding is not an input-guarded process and both the first Web service and the second Web service tolerate the fusing of the first port and the second port.  
     
     
         53 . The computer-readable medium of  claim 50 , wherein if the first safety is a stop safety (0) and the second safety is of the form (S), the result of the binding is the second safety.  
     
     
         54 . The computer-readable medium of  claim 50 , wherein if the first safety is a sequence safety (M.S) and the second safety is a parallel safety (S 0 |S 1 ), the result of the binding is a menu safety ((S:=:S 0 /M)&(S:=:S 1 /M)).  
     
     
         55 . The computer-readable medium of  claim 50 , wherein if the first safety is a choice safety (S 0 +S 1 ) and the second safety is of the form (S), the result of the binding is a choice safety ((S 0 :=:S)+(S 1 :=:S)).  
     
     
         56 . The computer-readable medium of  claim 50 , wherein if the first safety is a menu safety (S 0 &S 1 ) and the second safety is of the form (S), the result of the binding is a menu safety ((S 0 :=:S)&(S 1 :=:S)).  
     
     
         57 . The computer-readable medium of  claim 50 , wherein if the first safety is a parallel safety (S 0 |S 1 ) and the second safety is another parallel safety (S 2 |S 3 ), the result of the binding is a menu safety ((S 0,2,3,1 )&(S 1,2,3,0 )&(S 2,0,1,3 )&(S 3,0,1,2 )).  
     
     
         58 . The computer-readable medium of  claim 57 , wherein each choice in the menu safety ((S 0,2,3,1 )&(S 1,2,3,0 )&(S 2,0,1,3 )&(S 3,0,1,2 )) can be placed in a form (S i,m,n,j ), wherein if a relationship ((S i :=:(S m |S n )):=:S j ) is defined for a particular choice, the result of the binding is the relationship ((S i :=:(S m |S n )):=:S j ) or otherwise the result of the binding is another relationship ((S i :=:(S m |S n ))|S j ).  
     
     
         59 . The computer-readable medium of  claim 50 , wherein if the first safety is a recursion safety (rec(K).S 0 ) and the second safety is of the form (S), the result of the binding is a relationship (S 0 {rec(K).S 0 /K}:=:S).  
     
     
         60 . The computer-readable medium of  claim 50 , wherein if the first safety is of the form (S) and the second safety is of the form (0/S 0 ), the result of the binding is undefined.  
     
     
         61 . The computer-readable medium of  claim 50 , wherein if the first safety is of the form (S) and the second safety is of the form (M 0 .S/M 1 ) and a match function (match(M 0 , M 1 )) is defined, the result of the binding is equated to a cut function (cut(M 0 , M 1 )).  
     
     
         62 . The computer-readable medium of  claim 50 , wherein if the first safety is of the form (S) and the second safety is of the form (M 0 .S/M 1 ) and a match function (match(M 0 , M 1 )) is not defined, the result of the binding is undefined.  
     
     
         63 . The computer-readable medium of  claim 50 , wherein if the first safety is of the form (S) and the second safety is of the form ((S 0 +S 1 )/M), the result of the binding is equated to a choice safety ((S 0 /M)+(S 1 /M)).  
     
     
         64 . The computer-readable medium of  claim 50 , wherein if the first safety is of the form (S) and the second safety is of the form ((S 0 &S 1 )/M), the result of the binding is equated to a menu safety ((S 0 /M)&(S 1 /M)).  
     
     
         65 . The computer-readable medium of  claim 50 , wherein if the first safety is of the form (S) and the second safety is of the form ((S 0 |S 1 )/M), the result of the binding is equated to a menu safety ((S 0 /M)&(S 1 /M)).  
     
     
         66 . The computer-readable medium of  claim 50 , wherein if the first safety is of the form (S) and the second safety is of the form (rec(K).S/M), the result of the binding is equated to a recursion safety (rec(K).(S/M)).

Join the waitlist — get patent alerts

Track US2004064528A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.