Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跨网络封送.NET类型_C#_.net_Class_Types - Fatal编程技术网

C# 跨网络封送.NET类型

C# 跨网络封送.NET类型,c#,.net,class,types,C#,.net,Class,Types,在Java中,您可以执行以下操作: byte[] code = ReadFromClassFile("SomethingSomething.class"); SendAcrossNetwork(code); 另一方面: byte[] code = ReadFromNetwork(); Class marshalledCode = CustomClassLoader.defineClass(code, 0, code.length); Object obj = marshalledCode.ne

在Java中,您可以执行以下操作:

byte[] code = ReadFromClassFile("SomethingSomething.class");
SendAcrossNetwork(code);
另一方面:

byte[] code = ReadFromNetwork();
Class marshalledCode = CustomClassLoader.defineClass(code, 0, code.length);
Object obj = marshalledCode.newInstance();  //Hey look, I've marshalled a class over the network!
上述内容遗漏了90%的细节,但你应该明白这一点

我的问题是,.NET的等价物是什么?
我可以找到关于远程处理的各种引用,但在这种类加载上什么都找不到


我一直坚持将byte[]作为最低级别的传输级别(基本上是套接字)

需要明确的是,所涉及的类型从一台机器开始,需要封送到其他机器,这些机器只有一个在公共程序集中定义的公共接口。接收计算机上不存在要封送的类型

远程调用是不可接受的。在这种情况下,我需要对象只从创建它们的进程接收方法调用。网络流量控制非常严格;我基本上是根据需要在网络上发送本地行为,而不是以任何方式分发计算。

签出或传输

序列化是将正确标记的对象转换为二进制或XML(或存在格式化程序的其他格式)格式的过程

远程处理和套接字具有类似的用途,但在套接字是非常低级的数据传输原语的情况下,远程处理作为一个系统是相当高级的——在完全控制(套接字)和易用性(远程处理)之间进行权衡

编辑:啊,我明白了。那么,远程处理就是您想要使用的。如果要使用的类型都是从同一个基派生的,并且客户端和服务器都知道该基,那么远程处理将为您提供其余的方法

要实例化服务器上存在的客户端类型,请参阅本页及其参考-

请查看。它允许您动态生成类型和程序集。您必须找到一种方法来序列化类型定义,将其发送到另一台计算机,然后在第二台计算机上生成新的类型/程序集


抱歉,如果这有点模糊,但希望它足以让您开始。

从您可以获得的类型中,程序集可以是,或者您可以获得它,然后通过网络发送,接收器可以创建程序集并实例化类型。这是可能的,但不是开箱即用的(你必须写管道)。另外,您还需要考虑到类型和安全性问题。

我正在寻找在机器1上接受TypeA并将其发送到程序集中某个地方没有TypeA的机器2的代码。字节[]是一种隐含的传输介质。我将更新这个问题。远程处理看起来像是让一个进程调用另一个进程中的对象上的方法。这不是我在这里想要做的;对象需要在接收端的流程中实例化。如果我有误解,我需要一些示例代码;因为这就是我所看到的。把所有的人都集合起来真是太过分了。尤其是在程序集中定义了公共接口的情况下,因为如果没有命名冲突,就无法加载两个这样的程序集。@Kevin:当您实际上不知道也不控制程序集时,我的想法是使用通用解决方案