我的项目的几个“部分”(exmaple的WinForms应用程序)使用了我基于L2SQL编写的DAL。我想加入几个WebApps,但问题是DAL“提供”的数据比WebApps需要的多得多。多得多。
如果我将网站所需的数据打包在web服务中,而不是直接连接到DAL,它将通过web服务访问DAL,这样可以吗?
我觉得这会增加很多开销,但另一方面,我绝对不喜欢知道WebApps拥有访问比实际需要多得多的数据的“能力”的感觉。
我们将非常感谢您的任何意见。非常感谢你的帮助。
发布于 2010-07-07 07:58:30
您可以创建web服务,也可以添加一个仅表示应用程序所需数据的repository层。存储库还有一个额外的好处,那就是它是一个解耦层,可以更容易地对应用程序进行单元测试(通过提供模拟存储库)。
如果您计划最终创建不同的前端(例如,web UI和WPF或Silverlight UI),则web服务非常有意义,因为它们提供了一个公共的数据基础来构建,并且可以跨层访问。
发布于 2010-07-07 07:58:53
如果您的数据访问层将所有数据都提取为IQueryable,那么您将能够更精确地查询DAL和深入挖掘db调用。
请参阅我使用Linq to SQL编写的关于存储库和服务层的非常简短的blog entry。我的文章是围绕MVC构建的,但是存储库和服务层的概念可以很好地与WebForms、WinForms、Web Services等一起工作。
同样,这里的关键是让您的存储库或Dal返回一个对象AsQueryable,这样您就可以等到最后可能的时刻才实际提交请求数据。
您的结构将如下所示
Domain Layer
Repository Layer (IQueryable)
Service layer for Web App
Website
Service layer for Desktop App
Desktop App
Service layer for Web Services
Web Service在您的服务层内部,您可以根据为其开发的应用程序自定义特定的调用。这允许在每个应用程序的基础上实现更高的安全性和配置,同时维护一个完整的存储库,该存储库在您换出ORM之前不需要修改(如果您决定需要换出ORM)
发布于 2010-07-07 08:00:01
在这种情况下,拥有超过你需要的东西本身并没有什么错。整个.NET 4客户端配置文件包含超过50MB的程序集、类等。我可能会在整个职业生涯中使用其中的5%。这并不意味着我不喜欢它的全部,以防我需要它。
如果您计划将DAL提供给不应该访问部分数据的开发人员,请编写包装器或派生新的DAL。我会避免使用服务路由,除非您有信心可以承担开销。
https://stackoverflow.com/questions/3191015
复制相似问题