title: What RPC technology can I use to call a compiled assembly (rather than my own class) in C#?
body: <p>I want to access a .NET compiled assembly through RPC (the calling code is Python but that is not really relevant).</p>
  
  <p>The assembly represents an API to a running third-party application (Autodesk AutoCAD, for example). It contains several namespaces which contain static classes which contain API objects. I need to access all kinds of stuff in that object hierarchy: properties, objects, methods and, perhaps most complex, transactions that use IDisposable interface (that essentially means that state, i.e. objects storage, should be maintained between RPC calls).</p>
  
  <p>Rather than continuing to develop my own solution (which uses ZeroMQ messaging and reflection-based call dispatch), I wonder what RPC technology would suit my needs.</p>
  
  <p>I looked into basic examples of popular libraries that implement JSON-RPC and SOAP. I see that these libraries demand that you inherit your callable class from their base classes and put attributes into class declaration, for example</p>
  
  <pre><code>[SoapMethod("RequestResponseMethod")]
  </code></pre>
  
  <p>in order for RPC to work. Obviously, I cannot do that in the case of an external pre-compiled assembly. </p>
  
  <p>I would like to know if JSONRPC or SOAP are indeed the wrong choice for the task that I described or there actually is a way to make RPC work with an external assembly that I don't know about.</p>
  
  <p>Any guidance, comments or basic advice would be much appreciated since I have no experience using any of the existing RPC technologies.</p>