Source: http://www.google.com/patents/US20040031037?dq=6978253
Timestamp: 2016-08-24 12:21:19
Document Index: 86830545

Matched Legal Cases: ['art 114', 'art 116', 'art 119', 'art 121', 'art 114', 'art 114', 'art 119', 'arts 116', 'art 116', 'art 121']

Patent US20040031037 - Apparatus and method for use in distributed computing environment for ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsIn an object request broker (ORB) for processing requests or responses among distributed objects, a method and an apparatus for realizing a high processing speed of a process to convert from data (communication data) which is used in communication among the ORBs and is not specific to particular computers...http://www.google.com/patents/US20040031037?utm_source=gb-gplus-sharePatent US20040031037 - Apparatus and method for use in distributed computing environment for converting data format between program language-specific format used in respective computers and stream format used for communication among computersAdvanced Patent SearchPublication numberUS20040031037 A1Publication typeApplicationApplication numberUS 10/603,694Publication dateFeb 12, 2004Filing dateJun 26, 2003Priority dateApr 28, 1998Also published asUS6836892Publication number10603694, 603694, US 2004/0031037 A1, US 2004/031037 A1, US 20040031037 A1, US 20040031037A1, US 2004031037 A1, US 2004031037A1, US-A1-20040031037, US-A1-2004031037, US2004/0031037A1, US2004/031037A1, US20040031037 A1, US20040031037A1, US2004031037 A1, US2004031037A1InventorsMikio Ikoma, Youji Fujihara, Takahiro TanidaOriginal AssigneeMikio Ikoma, Youji Fujihara, Takahiro TanidaExport CitationBiBTeX, EndNote, RefManPatent Citations (1), Referenced by (8), Classifications (12), Legal Events (3) External Links: USPTO, USPTO Assignment, EspacenetApparatus and method for use in distributed computing environment for converting data format between program language-specific format used in respective computers and stream format used for communication among computers
US 20040031037 A1Abstract
In an object request broker (ORB) for processing requests or responses among distributed objects, a method and an apparatus for realizing a high processing speed of a process to convert from data (communication data) which is used in communication among the ORBs and is not specific to particular computers into a data format (program data) which is specific to a program language. A correspondence between the communication data which was transmitted and received by the ORB and the conversion into the program data corresponding thereto is stored in a cache which can be called at a high speed. When a receiving process of the same communication data cached at the second and subsequent times or a transmitting process of the program data occurs, the cached conversion result is used. Images(8) Claims(18)
BRIEF DESCRIPTION OF THE DRAWINGS [0010] [0010]FIG. 1 is a diagram showing a constructional example of a distributed computing environment to which the invention is applied; [0011] [0011]FIG. 2 is a diagram showing an ORB (object request broker) according to an embodiment of the invention; [0012] [0012]FIG. 3 is a diagram showing a flow of data at the time of marshalling and a structure of a cache in the embodiment of FIG. 2; [0013] [0013]FIG. 4 is a flowchart showing a flow of processes at the time of marshalling in the embodiment of FIG. 2; [0014] [0014]FIG. 5 is a diagram showing a flow of data at the time of unmarshalling and a structure of a cache in the embodiment of FIG. 2; [0015] [0015]FIG. 6 is a flowchart showing a flow of processes at the time of unmarshalling in the embodiment of FIG. 2; and [0016] [0016]FIG. 7 is a diagram that is useful for explaining an example of a marshalling process which does not use a cache and an unmarshalling process.
DETAILED DESCRIPTION OF THE EMBODIMENTS [0017] An embodiment of the invention will now be described hereinbelow with reference to the drawings. Similar component elements in the diagrams are designated by the same reference numerals. [0018] [0018]FIG. 1 is a diagram showing a construction of a distributed computing environment according to an embodiment of the invention. [0019] In the diagram, a client program 602 on a small computer 1 requests a processing work to a server program 601 on a large computer 2 existing at a remote place and having a plenty of computing resources via a network 3. By receiving this request, the server program 601 processes the processing job or task and returns a result of the processing to the client program 602. FIG. 2 is a diagram showing a flow of data in such a construction. [0020] In FIG. 2, a client program 111 has therein: program data 113 and 122 which is specific to a computer and a described program language; an ORB 141 which is used by the client program; and the like. A server program 112 has therein: program data 117 and 118 which is specific to the computer and the described program language; an ORB 142 which is used by the server program; and the like. [0021] How to exchange the data between the client program 111 and server program 112 in FIG. 2 will now be described with respect to a flow of data. In the client program 111, to transmit the program data 113 of a data format specific to the computer on which the client program operates and the described program to the server program 112, a marshalling part 114 of the ORB 141 converts from the program data 113 to request communication data 115 which is not specific to particular computers or program languages. In this instance, if all or a part of the program data 113 exists in a cache 131 of the client program by referring to the cache 131, the data is converted into the request communication data 115 by using the cache data. After completion of the conversion, the data 115 is transmitted to the server program 112. [0022] In the server program 112, an unmarshalling part 116 of the ORB 142 converts the received request communication data 115 into the program data 117 of a format which is specific to the computer on which the server program operates or to the described program language. In this instance, if all or a part of the request communication data 115 exists in a cache 132 of the server program by referring to the cache 132, the data is converted into the program data 117 by using the cache data. [0023] After the server program processed the request from the client, to return the program data 118 as a processing result to the client program, the data is converted into response communication data 120 by a marshalling part 119 of the ORB 142. At this time, if all or a part of the program data 118 exists in the cache 132 of the server program with reference to the cache 132, the data is converted into the response communication data 120 by using the cache data. The response communication data 120 is transmitted to the client program. [0024] In the client program 111, the received data is converted into the program data 122 of the client program language-specific format by an unmarshalling part 121 of the ORB 141. At this time, if all or a part of the response communication data 120 exists in a cache 131 of the client program with reference to the cache 131, the data is converted into the program data 122 by using the cache data. In this manner, the data transmission and reception can be performed between the distributed client and server programs at a high speed. [0025] An embodiment of processes in the marshalling part 114 and 119 in FIG. 2 will now be described with reference to FIG. 3. Although the marshalling part 114 in FIG. 2 is used as an example in the description, a similar embodiment is also possible in the marshalling part 119. [0026] [0026]FIG. 3 is a diagram showing a structure of the cache at the time of marshalling and a flow of data of the marshalling process. First, the structure of the cache will be explained. A pair of contents of the program data and contents of the communication data corresponding thereto have been stored in the cache every type of program data (in the example of FIG. 3, a pair of a program data cache 211 and a communication data cache 212 for an “aTable” struct). When the program data is based on the user definition type, every element (user definition type or basic type) of the user definition type data, an offset from the header of the communication data corresponding thereto is stored in the cache. In the example of FIG. 3, a system having the cache corresponding to every user definition type and basic type is shown. Although the case where the correspondence of the pair of communication data and program data is stored on the cache is shown in the diagram, a correspondence of a plurality of pairs of communication data and program data can be also provided on the cache. The “basic type” indicates data such as numeral, a single character, a character string, or the like. The “user definition type” indicates a set of basic type data and other user definition type data, which is generally complicated data. For example, a plurality of attributes of a particular employee such as name, age and employee identification number, can be represented by single user definition type data. [0027] A flow of data of the marshalling process and a flow of control will now be described with reference to FIGS. 3 and 4. In the marshalling part, first, the program data 113 to be transmitted and the program data 211 on the cache corresponding to its type are compared (S311) and whether their contents are matched with each other or not is discriminated (S312). Even in the case where the data to be checked is the user definition type such as struct, union, or the like, it is not decomposed to respective elemental types constituting the user definition type, but the user definition type is compared, as is, on the memory. If it is determined that the contents match as a comparison result, the next data is checked. When there is a difference or unmatch between the contents, the communication data 212 on the cache corresponding to the program data which was identical or matched until the difference is detected is copied into the request communication data 115 (S313). Whether the program data with the difference or unmatch is the basic type or the user definition type is discriminated (S314). In case of the basic type, since it does not take a long time for the converting process, a process to convert the program data into the communication data is performed (S315). In case of the user definition type, the data is long in many cases and there is a possibility that the user definition type data has been registered in another cache. Therefore, the marshalling process is recursively called (S316). (In the example of FIG. 3, the marshalling process is recursively called by using the struct “aStr” in which the output program data 113 does not coincide or match as an argument.) A conversion result in step S315 or S316 is registered into the cache (S317). The processes in steps S311 to S317 are executed to all of the data. When there is no data to be processed (S310), the communication data remaining on the cache at this time point is copied (S318). [0028] An embodiment of the processes in the unmarshalling parts 116 and 121 in FIG. 2 will now be described. Although the unmarshalling part 116 in FIG. 2 will be explained as an example, a similar embodiment is also possible even in the unmarshalling part 121. [0029] [0029]FIG. 5 is a diagram showing a structure of the cache at the time of unmarshalling and a flow of data in the unmarshalling process. First, the structure of the cache will be explained. A pair of contents of the program data and contents of the communication data corresponding thereto have been stored in the cache every type of program data (in the example of FIG. 5, a pair of a communication data cache 411 for an “aTable” struct and a program data cache 412). When the program data is the user definition type, every element (user definition type or basic type) of the program data of the user definition type, an offset from the header of the communication data corresponding thereto is stored in the cache. By using this correlation, to which element in the program data an arbitrary offset of the communication data corresponds will be understood. In the example of FIG. 5, a system having the cache every user definition type and basic type is shown. Although the case where the correspondence of the pair of communication data and program data has been stored on the cache every type is shown in the diagram, a correspondence of a plurality of pairs of communication data and program data can be also provided on the cache. [0030] A flow of data in the unmarshalling process and a flow of control will now be described with reference to FIGS. 5 and 6. In the unmarshalling part, the received request communication data 115 and the communication data 411 on the cache are compared on an octet unit basis as a unit of the communication data (S511). Whether they have the same value or not is discriminated (S512). Thus, if they have the same value, the next octet is checked. If they do not have the same value and there is a difference or unmatch, the program data 412 on the cache corresponding to the communication data which was identical or showed match until the difference or unmatch is detected is copied into the output program data 117 (S513). Whether the program data having the difference or unmatch is the basic type or user definition type is discriminated by looking at the program data or IDL 12 (S514). In case of the basic type, since it does not take a long time for the converting process, a process to convert the communication data into the program data is performed (S515). In case of the user definition type, the data is long in many cases and there is a possibility that the data of the user definition type has been registered in another cache (not shown). Therefore, the unmarshalling process is recursively called (S516). A conversion result in step S515 or S516 is registered into the cache (S517). The processes in steps S511 to S517 are executed to all of the octets of the communication data. When there is no data to be processed (S510), the program data remaining on the cache at this time point is copied (S518). [0031] Generally, the server object residentially or persistently exists on a certain computer and processes similar requests from many and unspecified client objects a plural number of times. Hitherto, to independently execute the marshalling and unmarshalling processes in response to those similar processing requests of a plural number of times, in the case where a complicated data format is exchanged between the client and the server, a load of computing resources (CPU, main memory) which are required for the marshalling and unmarshalling is large. In the embodiment, the converting process which was once performed is stored into the cache and it is used from the next time, so that the computing resources which are required for the marshalling and unmarshalling can be reduced. [0032] The procedures shown in FIGS. 4 and 6 and other procedures described herein can be stored into an ROM or a disk in each of the small computer 1 and large computer 2 or into another memory means. Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5940596 *Aug 4, 1997Aug 17, 1999I-Cube, Inc.Clustered address caching system for a network switch* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS7089562 *May 4, 2000Aug 8, 2006International Business Machines CorporationUniversal driver serverUS7434220 *Sep 15, 2003Oct 7, 2008Clearcube Technology, Inc.Distributed computing infrastructure including autonomous intelligent management systemUS7562368Jul 14, 2009International Business Machines CorporationUniversal driver serverUS8239877Aug 7, 2012International Business Machines CorporationPre-population of meta data cache for resolution of data marshaling issuesUS8457034Jun 4, 2013Raytheon CompanyAirborne communication networkUS20040107420 *Sep 15, 2003Jun 3, 2004Husain Syed Mohammad AmirDistributed computing infrastructure including autonomous intelligent management systemUS20090064184 *Aug 28, 2007Mar 5, 2009International Business Machines CorporationPre-population of meta data cache for resolution of data marshaling issuesUS20090310531 *Jun 10, 2009Dec 17, 2009Raytheon CompanyAirborne Communication Network* Cited by examinerClassifications U.S. Classification719/310International ClassificationG06F15/16, G06F13/00, G06F9/46, G06F9/54, G06F9/44, G06F9/00, G06F3/00Cooperative ClassificationG06F9/548, G06F9/541European ClassificationG06F9/54P1, G06F9/54ALegal EventsDateCodeEventDescriptionJul 7, 2008REMIMaintenance fee reminder mailedDec 28, 2008LAPSLapse for failure to pay maintenance feesFeb 17, 2009FPExpired due to failure to pay maintenance feeEffective date: 20081228RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services