This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!
Remoting Metadata Concepts
MetadataServices Concepts
Key Points
- Discovery
- HTTP GET on URL returns Generated XML Schema from Runtime MetaData via Remoting MetaDataServices (SUDS)
- Remoting MetaData converts XML Schema into MetaData via CodeGen or Reflection Emit
- Full fidelity of Runtime Meta into XML
- Class hierarchy, Interfaces
- Fields, Methods, Properties
- Delegates
Metadata Services can generate and consume XML Schema to and from NGWS runtime Runtime Metadata.
- Transform MetaData into XML Schema
- Transform XML Schema into MetaData using CodeGen
- Transform XML Schema into MetaData using Reflection Emit
Abstract Assembly Concepts
- The contract for remoting is a TYPE (e.g., not a methodref...). A VOS type is an interface or a class.
- In making a remote reference, the client side must have the full remoting contract. Having the full remoting contract means:
- if the type is a concrete class... full metadata plus code
- if the type is an abstract class... full metadata
- if the type is an interface... full metadata
- The assembly design in place today still holds:
- types are deployed in assemblies
- references to types are scoped by assembly
- remoting information is assembly configuration metadata
- Could design the client-side remoting contract in one of several ways (not exclusive):
- Opt1: it's just the server-side assembly... single contract; this would mean the full server-side assembly (incl code) would need to exist on client machine ("assembly light" may be a V2 feature, but not V1)
- Opt2: developer of remote server could elect to define a collection of interfaces/abstract types specifically to serve as the client-side contract, deployed in one/more assemblies, and then to inherit from / implement them in the server; this way, client side needs no code
- Could deploy the client-side remoting contract in one of several ways (not exclusive):
- Opt1: deploy to client
- Opt2: deploy to server; "where" name to assembly causes runtime/fusion to locate client-side remoting contract assembly and download/cache
- Observe:
- There's nothing special about a "client-side remoting contract assembly"... it's just an assembly.
- This is "better" than a remoting proxy because the "c-s r c a" is actually used by both client and server side.