This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!
Problems Addressed
The Virtual Object System addresses a number of issues that have complicated the creation and deployment of distributed applications:
- Similar and but subtly incompatible types - Dates, Times, Integers, SQL nullable type, etc.
- Limited code reuse - Cannot import a type from a different language and treat it the same as types defined directly in the language.
- Non-uniform object models – Differing ways of dealing with events, dynamic behaviors, persistence, properties, exceptions, etc.
The VOS abstracts and simplifies the details of the language/tool that must be known before a service can be built. By providing a common framework, it allows the runtime and associated services to automate much of the work that is performed manually today. The common framework repairs the following weaknesses in today’s infrastructure:
- No common execution model - No uniform way to inspect the state of an executing program. Crucial for code access security, enables declarative runtime services, and simplifies tools like profilers.
- Brittle binding mechanisms – All the things that lead to “DLL hell” and the general versioning problems that arise from software evolution.
In short, too little is known about a program after it is compiled. NGWS addresses this problem by providing:
- a common type system (the VOS Type System),
- a means of persisting information about types along with the components that use them (metadata),
- a specification of the subset of types that have broad reach across programming languages, and
- a means of building instances given type descriptions (the Virtual Execution System).