IP Library Granted Patent US 7,624,400
Granted Patent B2
US 7,624,400 · App. 11/567,058 · Granted Nov 24, 2009

Type bridges

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,624,400
App. No.
11/567,058
Granted
Nov 24, 2009
Kind
B2
Abstract

Methods, systems, and computer program products for converting an object of one type to an object of another type that allow for the runtime operation of the conversion process to be altered or customized. The conversion may occur within an extensible serialization engine that serializes, deserializes, and transforms objects of various types. The runtime operation of the serialization engine is altered by one or more extension routines that implement the desired customizations or extensions, without requiring replacement of other existing routines. Based on type information, identified for an initial object, the object is converted to an intermediate representation which permits runtime modification, including modification of object names, object types, and object data. The intermediate representation of the initial object is modified in accordance with extension routines that alter the runtime operation of the serialization engine, and the intermediate representation is converted to a final object and type.

Claims (22)

1. In a computing system comprising an extensible serialization engine that is capable of serializing and deserializing data objects of various types, a method of transforming an initial object of an initial type to a final object of a final type, wherein the method allows for runtime operation of the serialization engine to be altered by one or more extension routines, without having to replace a monolithic implementation of the serialization engine, the method comprising:

receiving an initial object of an initial type for runtime processing by the serialization engine;

receiving type information for the initial type of the initial object;

generating an intermediate representation of the initial object that is suitable for runtime modification, the intermediate representation being based upon the type information of the initial object, based upon data within the initial object, and based upon patterns of types associated with the initial object, the intermediate representation further being a mutable object based upon a mutable type;

calling one or more custom extension routines to change the intermediate representation of the initial object to a modified intermediate representation of the initial object, thereby altering the runtime operation of the serialization engine; and from the modified intermediate representation of the initial object, generating a final object of a final type,

wherein the one or more custom extension routines called to change the intermediate representation specify how to change the intermediate representation, without actually changing the intermediate representation, such that changing the intermediate representation is deferred until generating the final object, in order to reduce buffering requirements.

2. The method as recited in claim 1 , wherein the intermediate representation comprises an overall type for the initial object and, for one or more objects contained within the initial object, an object name, an object type, and object data.

3. The method as recited in claim 2 , further comprising changing at least one of the overall object type, and, for the one or more objects contained within the initial object, the object name, the object type, and the object data.

4. The method as recited in claim 1 , further comprising calling one or more standard routines to modify the intermediate representation of the initial object.

5. The method as recited in claim 1 , wherein modification of the intermediate representation of the initial object is based on a particular pattern within the type information.

6. The method as recited in claim 1 , wherein modification of the intermediate representation of the initial object is based on object data within the initial object.

7. The method as recited in claim 1 , wherein the serialization engine is part of a messaging system for a distributed application that sends and receives one or more messages, and wherein the initial object and the final object represent at least a portion of a message.

8. The method as recited in claim 1 , wherein the initial object comprises an in-memory object, and wherein the serialization engine operates to serialize the initial object to generate the final object.

9. The method as recited in claim 1 , wherein the final object comprises an in-memory object to be instantiated and populated based on the initial object, and wherein the serialization engine operates to deserialize the initial object to generate the final object.

10. For a computing system comprising an extensible serialization engine that is capable of serializing and deserializing data objects of various types, a computer program product comprising one or more computer readable storage media carrying computer executable instructions that implement a method of transforming an initial object of an initial type to a final object of a final type, wherein the method allows for runtime operation of the serialization engine to be altered by one or more extension routines, without having to replace a monolithic implementation of the serialization engine, the method comprising the method of claim 1 .

11. The computer program product as recited in claim 10 , wherein the intermediate representation comprises an overall type for the initial object and, for one or more objects contained within the initial object, an object name, an object type, and object data.

12. The computer program product as recited in claim 11 , the method further comprising an act of changing at least one of the overall object type, and, for the one or more objects contained within the initial object, the object name, the object type, and the object data.

13. The computer program product as recited in claim 10 , the method further comprising an act of calling one or more replaceable standard routines to modify the intermediate representation of the initial object.

14. The computer program product as recited in claim 10 , wherein modification of the intermediate representation of the initial object is based on at least one of a particular pattern within the type information, metadata, and object data within the initial object.

15. The computer program product as recited in claim 10 , wherein if the initial object comprises an in-memory object, the serialization engine operates to serialize the initial object to generate the final object, and if the final object comprises an in-memory object to be instantiated and populated based on the initial object, the serialization engine operates to deserialize the initial object to generate the final object.

16. The computer program product as recited in claim 10 , wherein both the initial object and the final object are in-memory objects.

17. The computer program product as recited in claim 10 , wherein the one or more custom extension routines called to change the intermediate representation specify how to change the intermediate representation, without actually changing the intermediate representation, such that changing the intermediate representation is deferred until generating the final object, in order to reduce buffering requirements.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2007
From: PHARIES, STEFAN H.; SRINIVASAN, SOWMY K.; JETHANANDANI, NATASHA H.; CHRISTENSEN, YANN ERIK; KHARITIDI, ELENA A.; PURDY, DOUGLAS M.
To: MICROSOFT CORPORATION
Reel/Frame 018833/0648 →
Continuity (2)
Continuation 1040124400 · Mar 26, 2003
Related Publication 20070124738A1 · May 31, 2007