0

我已经编写 Web 服务大约一年了,我用来从数据库中获取数据一直显示给用户并再次返回的过程似乎效率低下。

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

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

  1. 服务将其从数据库中获取到数据访问层 (DAL) 对象中。
  2. Service 将其转换为 DataContract 以发送给客户端。
  3. 客户端获取 DataContract 并将其转换为客户端对象
  4. 客户端显示对象/用户进行更改/添加对象
  5. 客户端将客户端对象转换为 DataContact 并将其发送到服务
  6. 服务接收 DataContract 并将其转换为数据访问层对象。
  7. 服务使用更改/新对象更新数据库。

如果您正在跟踪对象被转换 4 次 (DAL->Contract->Client Object->Contract->DAL)。当您的应用开始扩展其数据时,这似乎是很多转换。

这是做到这一点的“最佳”方式吗?我错过了什么吗?

万一这很重要,我正在使用 Visual Studio 2008、WCF、LinqToSQL 和 Windows Mobile 5.0 (NETCF)。

4

1 回答 1

1

如果您减少转换次数(也就是说,如果您将层更紧密地耦合在一起),您可能会错过会发生什么的问题。

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

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

客户端现在可以显示它喜欢的 DAL 对象,假设它不需要像 INotifyPropertyChanged 这样的客户端接口,服务器不需要运行这样的代码,但客户端可能需要它来进行数据绑定和验证。

请注意,每一层都有自己的需求。通过保持这些需求独立,代码更易于设计和维护。是的,您必须复制一些数据,但这与维护必须同时做四件不同事情的代码的成本相比是便宜的。

于 2010-03-09T18:52:27.763 回答