代码之家  ›  专栏  ›  技术社区  ›  thaBadDawg

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

  •  1
  • thaBadDawg  · 技术社区  · 16 年前

    我想念。网络远程处理时代,我可以通过网络发送一个对象,它可以在中间层的两侧工作,而不需要做太多工作。原因如下:

    我被分配了一项任务。我正在构建一个逻辑/数据抽象层(愚蠢的PCI合规性),这样我们就可以将数据库服务器从公司网络转移到受保护的网络中。我曾经做过这样的项目。带远程处理的Net 2.0。我在中间件层构建了对象,并将该对象发送到客户端,客户端拥有我的。要使用的网络对象。但是WCF需要序列化才能在管道中上下发送内容,序列化剥夺了我对现有字段做不可思议的事情的花哨方法。

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

    nativeObject.Name = serializedObject.Name;
    

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

    serializedObject.Name = nativeObject.Name;
    

    这两种方法都有效,但由于中间层造成的整个序列化混乱,编写对象所需的时间比预期的要长得多。我会回去的。Net Remoting,但架构师表示,他希望在WCF中完成这个抽象层,因为(我的话,不是他的)它新颖而性感。

    那么,如何着手工作呢。WCF连接两侧的网络本机对象。..无需编写1000行胶水代码。

    1 回复  |  直到 16 年前
        1
  •  1
  •   JoshBerke    16 年前

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

    推荐文章