C# 如何在.NET远程处理期间使用自定义序列化?
我编写了一个自定义序列化例程,它不使用ISerializable或SerializableAttribute将对象保存到文件中 我还远程处理这些相同的对象,并希望使用相同的序列化技术。但是,我不想实现ISerializable,因为我的序列化方法与对象完全解耦(我希望它保持这种状态)C# 如何在.NET远程处理期间使用自定义序列化?,c#,.net,serialization,remoting,C#,.net,Serialization,Remoting,我编写了一个自定义序列化例程,它不使用ISerializable或SerializableAttribute将对象保存到文件中 我还远程处理这些相同的对象,并希望使用相同的序列化技术。但是,我不想实现ISerializable,因为我的序列化方法与对象完全解耦(我希望它保持这种状态) 有没有一种简单的方法(可能是使用远程处理接收器),我可以获取流并向其中写入字节,另一方面从中读取字节,跳过.NET中的序列化框架?如果您想显式处理进程之间的流字节,请使用管道。这里有一个入门指南,谷歌也有很多。如果
有没有一种简单的方法(可能是使用远程处理接收器),我可以获取流并向其中写入字节,另一方面从中读取字节,跳过.NET中的序列化框架?如果您想显式处理进程之间的流字节,请使用管道。这里有一个入门指南,谷歌也有很多。如果你想使用远程处理,那么你只能使用
BinaryFormatter
。通常,您可以使用“序列化代理”来提供一个独立于格式化程序的序列化程序,但假定此deoesn不适用于.NET远程处理
但是,;如果您编写自己的RPC堆栈(例如,通过TCP/IP或HTTP),您将拥有更多的控制权。同样,使用WCF,您可以通过行为替换序列化程序。我在(WCF挂钩)中使用了这两种技巧
但不确定远程处理是否可以做到这一点-您可能必须使用ISerializable
您可以实现&IServerFormatterSinkProvider并配置通道格式化程序(f.e.)
有关实现的详细信息,请参见BinaryServerFormatterSinkProvider/BinaryServerFormatterSink和BinaryClientFormatterSinkProvider/BinaryClientFormatterSink。如果您使用的是.NET 3.5或更高版本,也可以使用System.IO.Pipes。