-
Notifications
You must be signed in to change notification settings - Fork 15
Home
MessagePack RPC for CLI (Common Language Infrastructure) is a binding of the MessagePack RPC for CLI. That is, this is not only a binding for C#,but also is able to be used from Visual Basic, F#, PowerShell, Iron Python, Iron Ruby, and so on. Currently supported runtime is only Full CLR(v4.0 or above, including client profile), but drops for Silverlight(v4 or v5), Mono and Windows Phone Runtime(v7.1) is available. Note that there are no automated test suite for 'not supported' projects.
- Usage:
- Quick Start - Quick start for RPC.
- RPC Client Programming - Basic client side usage description.
- RPC Server Programming - Basic server side usage description.
- Locating RPC Services - Describes how to locate your services on default dispatcher.
- Configuration API - Basic server side usage description.
- Silverlight Considerations - There are some considerations when you use MsgPack-RPC for CLI on Silverlight.
- Mono Limitations - There are a few limitations when you use MsgPack-RPC for CLI on Mono.
- Advanced:
- Debug Mode - Debug mode to ease client-server error cases debugging.
- Implementing Custom Locator - Describes how to implement own service type locator.
- Implementing Custom Dispatcher - Describes how to implement own dispatcher.
- Implementing Custom Transport - Describes how to implement own dispatcher.
- Socket Shutdown - Describes socket shutdown sequence and its effect.
- Implementation Notes - Describes implementation notes for code readers.
- Timeout - Describes various timeouts.
- Filters - Describes message filter to process raw message in the transport layer.
- Trace Code Lists - See *Trace.tt files in projects.
- Message Quota - See RPC Filters.
- Fully asynchronous client/server.
- De facto error specification support.
- Fine trace messages to help debugging.
- Dynamic object based out-of-box proxy.
If you are interesting for core (serialization) library MessagePack for CLI more detail, please see serialization library's wiki.
Any idea?
- IDL support. It is convenient to implement early draft of MessagePack IDL. There is excellent implementations on the Haskell binding, but it cannot use CodeDOM API so I have to implement many generators for CLI languages...
- Multi version support. There is a new draft for RPC to support multi versioning.
-
Q Are there IDLs?
- A No, it will be implemented in the future.
-
Q Why does the RpcClient class provide both of task based and APM?
- A I think that Task is not ideal for non-blocking async operation now, because it always wraps exceptions as AggregatedException which is suitable for parallel operation. In .NET 4.5, however, will introduce the solution, the ExceptionDisatchInfo, as well as cool Awaiter methods. So I decides supporting both patterns.
-
Q Can I use in WCF stack?
- A Maybe but not supported yet. Please tell me you want to do it.
-
Q Can I host in IIS/WAS?
- A No.