C# WCF服务/客户端中自定义序列化的设计解决方案

C# WCF服务/客户端中自定义序列化的设计解决方案,c#,wcf,serialization,C#,Wcf,Serialization,我的任务是在接收/传输大量数据的WCF服务中实现自定义序列化 我查看了MSDN上的示例以找到解决方案:作者为他的服务契约创建了一个序列化属性,并在每个数据契约类上实现了一个序列化接口 我喜欢这个想法,但在这个例子中,他只是通过在主线程中启动代理通道并让它获取数据来证明项目的正确性。我的客户机将作为一个单独的应用程序构建,这使得它如何继承序列化属性和数据契约变得复杂 我将序列化属性和数据契约移动到它们自己的库中,并在服务和客户机项目中包含引用,以便它们都可以使用它们。在为客户机对服务的引用生成的代

我的任务是在接收/传输大量数据的WCF服务中实现自定义序列化

我查看了MSDN上的示例以找到解决方案:作者为他的服务契约创建了一个序列化属性,并在每个数据契约类上实现了一个序列化接口

我喜欢这个想法,但在这个例子中,他只是通过在主线程中启动代理通道并让它获取数据来证明项目的正确性。我的客户机将作为一个单独的应用程序构建,这使得它如何继承序列化属性和数据契约变得复杂

我将序列化属性和数据契约移动到它们自己的库中,并在服务和客户机项目中包含引用,以便它们都可以使用它们。在为客户机对服务的引用生成的代码中,我在服务契约/接口上添加了属性,并且确信序列化在客户机端起作用

有没有更优雅的方法来解决这个问题?是否有一种通过元数据进行自定义序列化通信的方法?我不希望有什么办法,但我对WCF编程还不熟悉。我担心我目前的设计可能不是最好的做法,也许有WCF技术可以更好地满足我的目的。此外,如果此服务需要由.NET framework之外的应用程序访问,则我的序列化库将毫无用处

我还意识到,我的方法有点挫败了服务宣传其数据契约的整个要点:任何与服务通信的客户机都必须忽略元数据中的数据契约,并使用公共库中的类。如果客户机不知道这个公共库,它将收到错误和它尝试的任何操作契约的空值


如果我的问题在别处得到了回答,我深表歉意,但到目前为止,我找不到任何解决我的特定设计问题的方法。

如果使用自定义序列化,则无法在元数据中以有意义的方式对其进行描述。您使用单独库的方法似乎是正确的,是的,它在.net之外是不可用的。您必须描述您的序列化方法,以便用其他语言实现。您试图解决什么问题?为什么需要自定义序列化?您尝试过TCP上的二进制格式化程序吗?这还不够有效吗?不管怎样,还是简单地问一下你的问题为好,这在我看来太描述性了。@Shrike-问题是,对于给定的服务操作,服务将传回一组非常非常大的数据。用XML包装所有这些数据并用二进制格式化程序格式化字符串仍然太大-我需要尽可能简洁的东西-即在另一端正确反序列化的字节流。如果我描述得太过详细,我深表歉意,但我的理念是,当有疑问时,提供更多信息,而不是更少。@MichaelAlexander WCF也有流媒体选项。