从Asp.net 2.0开始,就有Provider Model.在实现细节上,提供者是从ProviderBase派生的类,它是一个抽象类而不是接口,但无论如何,Provider Model都存在,这样我们可以通过编辑web.config来实现不同的实现交换.例如,如果您创建一个博客应用程序,您可能有一个BlogProvider:ProviderBase,那么您可以使用BlogProvider的实现:SqlBlogProvider,OracleBlogProvider甚至MockBlogProvider进行测试.
现在,Repository Pattern越来越受欢迎,我觉得它是为了满足相同的需求,虽然在实现细节中,你通常使用接口,所以IBlogProvider,你通过构造函数而不是属性注入不同的实现,但实际上我不是看看这两种模式给我们的不同之处.
就个人而言,我觉得供应商模型在实施中对我来说更自然.那么,它们之间是否存在差异,或者它们是由不同社区给出的不同名称相同的东西?
我很感激任何评论,谢谢,雷.
存储库和提供者模式重叠,但它们没有正式描述相同的事物.我几乎会说Repository是Provider的子集.在实践中,我认为Repository模式是出于特定需求 - 抽象存储库 - 并在社区中演变为更通用的抽象模式.在这方面,它们已经成为描述相同概念的不同术语.但是,从原始定义来看,它们的范围不同:
存储库模式的目的是从应用程序中抽象出数据存储库的细节.
Provider模型的目的是抽象出远离应用程序的任何细节.这可能是一个数据存储库,但它常常是某种逻辑.
例如,在我们的应用程序中,我们有一个ContextFactoryProvider,它包含用于确定使用哪个ContextFactory的不同类型的逻辑.在这种情况下没有数据存储库; 它是纯粹的应用逻辑,需要随意改变; Provider模型允许我们使用单一责任原则将每种逻辑隔离到自己的类中,并轻松地交换出逻辑.