将序列化的WCF对象转换回本机对象

时间:2008-12-30 16:15:18

标签: wcf .net-3.5 serialization

我错过.Net远程日,当我可以通过电线发送一个物体时,它可以在中间层的两侧工作而没有太多工作。原因如下:

我接到了一项任务。我正在构建逻辑/数据抽象层(愚蠢的PCI合规性),以便我们可以将数据库服务器从公司网络移到受保护的网络中。我曾经在.Net 2.0下使用远程处理做过这样的项目。我在中间件层上构建了对象,并将该对象发送到客户端,客户端使用了我的.Net对象。但是WCF需要序列化以便能够在管道上下发送内容,并且序列化消除了我用我所拥有的字段做出令人难以置信的事情的花哨方法。

我提出了两种不同的策略来解决这个问题:(1)将方法从类本身移动到静态实用程序类,以及(2)“反序列化”客户端上的数据并重建本机对象来自序列化对象的数据。

nativeObject.Name = serializedObject.Name;

第二种方法的缺陷是我必须重新序列化对象才能将其发送回中间件层。

serializedObject.Name = nativeObject.Name;

这两种方法都有效,但由于中间层造成的整个序列化混乱,它使得写入对象所需的时间比应该要长得多。我会回到.Net Remoting,但是建筑师说他希望在WCF中完成这个抽象层,因为(我的话,不是他的)它是新的和性感的。

那么如何在WCF连接的两端使用.Net本机对象...而不用写1000行胶水代码。

1 个答案:

答案 0 :(得分:1)

您可以生成代理并告诉它使用一组特定的类而不是创建新的代理。我相信这是使用svutil.exe的/ r参数完成的。如果您使用IDE(VS2008),则可以在添加服务引用单击高级时执行此操作,并确保选中“在程序集中重用类型”(我认为这是默认设置)。