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!

Cross-Language Interoperability

Before the NGWS runtime was available, objects compiled by different language compilers could communicate only if they followed an established binary standard. NGWS objects automatically have the ability to communicate and interact with each other, even if they are written in different languages. Your objects can call methods on other objects, inherit implementation from other objects, and pass instances of a class to another class's methods, regardless of the language they are implemented in. In addition, the runtime’s language interoperability enables one debugger to understand your multi-language application and step through it. Exception handling reveals another aspect of language interoperability: the NGWS runtime enables exceptions to be handled the same way across languages. Your code can throw an exception in one language and that exception can be caught and understood by an object written in another language.

In some scenarios, language interoperability is particularly desirable. For example, if you are writing components for a distributed Web application, it would be helpful to know that no matter what language you choose to write your components in, they can interact closely with each other and with components supplied by other developers.

Or, suppose you have developed several components for your server application in one language, but you realize that another language is better suited for implementing the functionality that the remaining component provides. Or, maybe an existing corporate code base is in one language and you are asked to enhance it, but you are much more comfortable using a different programming language or you would like to leverage your development staff's experience with another language. It would be convenient to be able to implement the remaining components in the language that is best suited for the job and/or most efficient for you to use.

Language interoperability is also significant with respect to class library development. Because the runtime enables and supports language interoperability, you can develop class libraries that can be called from any language.

However, there are situations in which you might not be concerned about language interoperability. For example, if you are designing components for an internal application within your company, and you know that your code will only ever use objects written in a particular language, it doesn't matter whether your components are guaranteed to interoperate with components written in other languages.