2009-04-17 81 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。

相關問題