Mar*_*ell 13 .net silverlight wcf serialization protobuf-net
在"完整".NET中,交换序列化程序非常容易 - 无论是在配置中还是通过自定义属性.但是,我想在Silverlight的WCF中做类似的事情 - 即提供不同的序列化引擎.我将提供引擎(protobuf-net) - 我只需要让WCF使用它!
上次我看到这个(前一段时间)没有明显的好选择.我最好的kludge是将数据公开为byte[]或Stream- 但这会失去所有"mex"善良.这是一种耻辱,因为它完全适用于完整的.NET.
这可能吗?WP7的加分点:)
car*_*ira 13
这是可能的,但这很难做到.DataContractSerializerOperationBehavior类(通常通过覆盖CreateSerializer方法替换序列化程序)是SL内部的,因此您无法真正使用它.您需要做的是创建一个执行DCSOB操作的IOperationBehavior - 即设置客户端将用于在Message body(XML Infoset)和操作参数/返回值之间进行转换的IClientMessageFormatter.这意味着编写代码以将操作中的参数包装/解包到Message对象中.并非完全不可能,但应该有效.
至于WP7,它没有此解决方案所需的可扩展点(IOperationBehavior,IClientMessageFormatter)不存在(它们是在SL4上添加的,WP7与SL3大致兼容),所以我认为不可能那里 - 或者至少不是通用的方式(你可以用Message对象声明所有的操作 - Message MyOperation(消息输入) - 并且在那个阶段你可以直接处理消息Infoset(GetReaderAtBodyContents),但这需要在每个操作调用中完成.
更新:好吧,我试过,它也可以在Windows Phone 7(和Silverlight 3)中实现,它只是更难.我使用一对自定义通道重新创建了扩展点.有关如何做到这一点的说明,请访问http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/21/wcf-extensibility-extensibility-in-windows-phone-and-silverlight- 3.aspx.
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |