我有模块化的API
MyProject.Modules
Module1
Logic and Repositories
Module2
Logic and Repositories
MyProject.RestApi
Controllers我已经创建了1个版本的REST API (使用ID (int作为ID))
我想创建一个使用UUID的新版本(前一个保留),也会有新的端点
如何处理模块?
对于新版本的API,我必须更改存储库中的数据库查询,命名方法等。
您会为新的API版本创建新的模块吗?或者其他解决方案会正确吗?
发布于 2019-07-12 17:51:05
我认为这在很大程度上取决于你的模块封装的是什么,它们是否故意持有不同的版本,或者它们是否是一个商业领域的持有者,例如Module1是用于加载用户的。
如果Module1正在加载用户,假设您有以下伪代码:
public class UserRepository
public User GetUser(int userId)然后,这样做将返回相同的类,因此可能会自然地位于相同的存储库中:
public User GetUser(guid userId)为了保持示例的简单性,我特意没有提到接口,但是假设您有IRepository指示存储库负责返回用户,那么无论它们是通过查找guid还是int返回的,它们都与用户相关。
然而,你的仓库代码变得相当笨重,所以你的仓库可以简单地封装两个单独的类,并呈现一个统一的用户获取界面。
然而,另一方面,您可能不希望现有存储库的使用者也依赖于他们没有使用的方法(遵循接口分离原则https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design#toc-interface-segregation-principle)
所以你可能希望有IRepositoryGetByGuid,IRepositoryGetByInt,我会让你来决定这对于你的用例来说是不是太复杂了。
https://stackoverflow.com/questions/57003219
复制相似问题