Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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_Serialization_Remoting - Fatal编程技术网

C# 如何在.NET远程处理期间使用自定义序列化?

C# 如何在.NET远程处理期间使用自定义序列化?,c#,.net,serialization,remoting,C#,.net,Serialization,Remoting,我编写了一个自定义序列化例程,它不使用ISerializable或SerializableAttribute将对象保存到文件中 我还远程处理这些相同的对象,并希望使用相同的序列化技术。但是,我不想实现ISerializable,因为我的序列化方法与对象完全解耦(我希望它保持这种状态) 有没有一种简单的方法(可能是使用远程处理接收器),我可以获取流并向其中写入字节,另一方面从中读取字节,跳过.NET中的序列化框架?如果您想显式处理进程之间的流字节,请使用管道。这里有一个入门指南,谷歌也有很多。如果

我编写了一个自定义序列化例程,它不使用ISerializable或SerializableAttribute将对象保存到文件中

我还远程处理这些相同的对象,并希望使用相同的序列化技术。但是,我不想实现ISerializable,因为我的序列化方法与对象完全解耦(我希望它保持这种状态)


有没有一种简单的方法(可能是使用远程处理接收器),我可以获取流并向其中写入字节,另一方面从中读取字节,跳过.NET中的序列化框架?

如果您想显式处理进程之间的流字节,请使用管道。这里有一个入门指南,谷歌也有很多。

如果你想使用远程处理,那么你只能使用
BinaryFormatter
。通常,您可以使用“序列化代理”来提供一个独立于格式化程序的序列化程序,但假定此deoesn不适用于.NET远程处理

但是,;如果您编写自己的RPC堆栈(例如,通过TCP/IP或HTTP),您将拥有更多的控制权。同样,使用WCF,您可以通过行为替换序列化程序。我在(WCF挂钩)中使用了这两种技巧

但不确定远程处理是否可以做到这一点-您可能必须使用
ISerializable

您可以实现&IServerFormatterSinkProvider并配置通道格式化程序(f.e.)


有关实现的详细信息,请参见BinaryServerFormatterSinkProvider/BinaryServerFormatterSink和BinaryClientFormatterSinkProvider/BinaryClientFormatterSink。如果您使用的是.NET 3.5或更高版本,也可以使用System.IO.Pipes。