我编写了一个自定义序列化例程,它不使用ISerializable或SerialzableAttribute将我的对象保存到文件中。
我也远程调用这些相同的对象,并希望使用相同的序列化技术。但是,我不想实现ISerializable,因为我的序列化方法与我的对象完全分离(我希望它保持这种方式)。
有没有一种简单的方法(可能有远程接收器),我可以在其中获取流并向其写入字节,另一方面从中读取字节,跳过.NET中的序列化框架?
答案 0 :(得分:3)
如果您想使用远程处理,那么您只能使用BinaryFormatter
。通常,您可以使用“序列化代理”来提供与格式化程序分开的序列化程序,但AFAIK不能用于.NET远程处理。
然而;如果您编写自己的RPC堆栈(例如,通过TCP / IP或HTTP),您将拥有更多控制权。同样,使用WCF,您可以通过行为替换序列化程序。我在protobuf-net(WCF挂钩are here)中使用了这两个技巧。
不确定是否可以使用远程处理执行此操作 - 您可能必须使用ISerializable
。
答案 1 :(得分:1)
如果要显式处理进程之间的流字节,请使用管道。这是named pipes的一个入门,Google也有很多。
答案 2 :(得分:1)
您可以实施IClientFormatterSinkProvider& IServerFormatterSinkProvider并配置通道格式化程序(f.e。via configuration)。
有关实现的详细信息,请参阅BinaryServerFormatterSinkProvider / BinaryServerFormatterSink和BinaryClientFormatterSinkProvider / BinaryClientFormatterSink。