Asp.net 创建好的接口,应该包括什么,应该忽略什么

Asp.net 创建好的接口,应该包括什么,应该忽略什么,asp.net,architecture,interface,Asp.net,Architecture,Interface,我正在更新一个网站,这是两年内的第三次,看起来这种情况随时都会发生,而且有几个网站使用相同的数据库。我想对所有这些都使用相同的代码,并使其在将来易于更新。因此,我计划编写一些接口,然后将业务登录放在服务中,以保持全面一致,并添加一些单元测试 因此,我正在查看我当前的存储库,我不确定我的界面中应该有什么,我的服务中应该有什么 例如,我有一个Add方法——不用多想,我在接口中有一个Add,在服务中有一个Add 然后,我有一个AuthenticateAccountManager方法,它接受3个参数,这

我正在更新一个网站,这是两年内的第三次,看起来这种情况随时都会发生,而且有几个网站使用相同的数据库。我想对所有这些都使用相同的代码,并使其在将来易于更新。因此,我计划编写一些接口,然后将业务登录放在服务中,以保持全面一致,并添加一些单元测试

因此,我正在查看我当前的存储库,我不确定我的界面中应该有什么,我的服务中应该有什么

例如,我有一个Add方法——不用多想,我在接口中有一个Add,在服务中有一个Add

然后,我有一个AuthenticateAccountManager方法,它接受3个参数,这应该在这两个参数中,还是仅在服务中,并且在我的接口中有一个简单的Get方法(比如通过用户名),然后根据服务中的其他2个属性进行验证

我还有一个QualifyPartner,它将bool设置为true,如果这只是在服务中,并且在我的界面中再次有一个简单的Get方法,尝试将其保持尽可能小?

遵循原则-
AuthenticateAccountManager
是一个服务级别的操作。它应该调用您的存储库,存储库将返回原始用户数据。然后,服务根据存储库返回的内容进行身份验证或不进行身份验证


一般的指导原则是,存储库只负责检索和提交数据。基于数据解释和执行行为是业务逻辑。

所以我有大约20个相关表,现在我需要我的服务与其中一个相关表交互,我是向当前接口添加方法还是为此新表创建新方法?如果是这样的话,我的服务将以疯狂的界面结束——我如何决定做什么呢?这就是OR/M工具非常有用的地方。让Entity Framework或Mindscape Lightspeed为您生成存储库。PS-如果您使用Entity Framework,这里有一个很好的基于泛型的EF存储库:那么您将重新绑定到ORM并再次紧密耦合,不是吗?如果您不想花数小时编写样板文件,您必须忍受一些耦合。