NGWS SDK Documentation  

This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!

Versioning in NGWS

The versioning problems encountered with Windows applications today exist in part because there is no way for an application developer to express versioning rules between pieces of an application and have those rules honored and enforced by the system. Instead, our current approach to versioning is based upon developers following "common-sense" coding practices. These practices state that interface definitions are static once published, and that a single piece of code must maintain backward compatibility with previous versions. Furthermore, code is typically designed so that only a single version of it can be present and executing on a machine at any given time.

The versioning problem is further complicated by the fact that there is no way to maintain consistency between the set of components that were built together and the set that will be present at run time.

The manifestation of these versioning problems is one aspect of what we refer to as DLL Hell. Specifically, installing one application can inadvertently break an existing application because a certain software component was installed that was not fully backward compatible with a previous version. Once this situation occurs, there is no support in the system itself for diagnosing and fixing the problem.

To solve the versioning problem, the runtime must:

The remainder of this document describes how assemblies are used as the means for specifying version rules and how the NGWS runtime supports the concept of side by side execution.