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

web服务中数据转换的低效率感知

  •  0
  • Vaccano  · 技术社区  · 14 年前

    这个问题的目的是确保我遵循最佳实践,而不仅仅是增加额外的工作。

    这是数据从数据库到最终用户再返回的路径。

    1. 服务将它从数据库获取到数据访问层(DAL)对象中。
    2. 客户端获取数据协定并将其转换为客户端对象
    3. 客户端显示对象/用户进行更改/添加对象
    4. 客户端将客户端对象转换为数据联系人并将其发送到服务
    5. 服务接收数据协定并将其转换为数据访问层对象。

    如果您一直跟踪,则对象将转换4次(DAL->Contract->Client object->Contract->DAL)。当你的应用程序开始扩展数据时,这看起来像是大量的转换。

    如果重要的话,我使用的是Visual Studio 2008、WCF、LinqToSQL和Windows Mobile 5.0(NETCF)。

    1 回复  |  直到 14 年前
        1
  •  1
  •   John Saunders    14 年前

    如果减少转换次数(也就是说,如果将层更紧密地结合在一起),可能会忽略发生的问题。

    服务可以直接返回一个DAL对象。问题是DAL对象可能包含的数据是关于它们是DAL对象的事实,而不是关于它们所携带的数据。例如,LINQ-to-SQL类派生自包含LINQ-to-SQL功能的基类-客户机不需要这些基类数据,也不应发送这些数据。

    客户端可以直接使用从服务器发回的DAL对象。但这需要客户机和服务器使用相同的平台,例如.NET。他们还必须使用兼容的.NET版本,这样客户端才能使用服务器端的DAL对象。

    请注意,每个层都有自己的需求。通过保持这些需求的独立性,代码更易于设计和维护。是的,您必须对数据进行一些复制,但与维护代码的成本(同时执行四种不同的操作)相比,这是便宜的。