使用存储库模式实现 Web 服务的正确方法是什么

What's the correct way to implement a web service with the repository pattern

我即将开始一个项目,该项目需要一个连接到网络服务的网站。 Web 服务将从数据库中检索数据,然后 return 将其发送到网站。

我的问题是关于如何正确地将业务问题与数据访问分开。

可以利用存储库模式分离服务。然后在服务调用实现中,我可以以实体的形式从存储库中获取所需的数据,然后 return 通过网络获取。

同样我可以在网站上做同样的事情。使用存储库隐藏从服务获取数据并将其序列化为一个或多个实体的实现细节。

但是,我对这种方法的主要问题是服务和网站都将对其实体进行定义。是否有一种我可以使用的模式允许我一次定义这些实体,或者这种架构是否偏离了常见/最佳实践。

我应该提一下,我使用的技术是 asp.net 和 c#,我没有使用 entity framework。

在同一个解决方案中创建一个 WCF 数据服务和一个客户端。 Visual Studio 将允许在客户端使用您在服务端定义的完全相同的 类 和模型。

好处:如果你正确使用了这个概念,IQueryable 将可以编组到客户端(而不是结果),所以你甚至可以在客户端进行临时查询,(假设你使用存储库的方法 returns with IQueryable) 只是结果将通过网络传输。这对于分页场景也很重要。

开始阅读here