2009-04-17 34 views
5

我写了一个不使用ISerializable或SerialzableAttribute将自己的对象保存到文件的自定义序列化例程。如何在.NET远程处理过程中使用自定义序列化?

我也远程这些相同的对象,并希望使用相同的序列化技术。但是,我不想实现ISerializable,因为我的序列化方法与我的对象完全分离(并且我希望它保持这种方式)。

有没有一种简单的方法(可能与远程接收器)在哪里我可以采取一个流并写入字节,另一侧从它读取字节,在.NET中跳过序列化框架?

回答

3

如果您想使用远程处理那么您只能使用BinaryFormatter。通常情况下,您可以使用“序列化代理”来为格式化程序提供独立的序列化程序,但AFAIK这种方法不适用于.NET远程处理。

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

不知道你可以这样做远程处理虽然 - 你可能必须使用ISerializable

1

如果您想明确处理流程之间的流式传输字节,请使用管道。这里有一个入门named pipes,Google也有很多。

+1

或者如果您使用的是.NET 3.5或更高版本,则可以使用System.IO.Pipes。 – 2010-04-07 19:02:53

1

您可以执行IClientFormatterSinkProvider & IServerFormatterSinkProvider并配置通道格式化程序(f.e. via configuration)。

有关实现细节,请参阅BinaryServerFormatterSinkProvider/BinaryServerFormatterSink和BinaryClientFormatterSinkProvider/BinaryClientFormatterSink。

相关问题