我正在开发一个新的微服务应用程序,它将成为具有许多其他微服务的大型体系结构的一部分。该应用程序需要从其他应用程序获取内容,我想将HTTP调用封装到服务层中。但是我注意到有两种不同的方法。
假设我的应用程序将从另一个以用户API 部署的微服务获取联系信息。
此方法将公司名称作为文件名。在文件内部,只有一个get
公用方法,并且它接收单个参数。该方法调用user-api/contact/{id}
。
文件名:contact.service.js
方法:get(id) -> contact
此方法将用户API 和使用者应用程序之间的所有通信封装到一个文件中。为用户API 提供的每个端点都有一种方法。
文件名:user.service.js
方法:getContact(id) -> contact
使用这些方法的利弊是什么?
答案 0 :(得分:1)
这个问题实际上只是一个意见问题,不同的公司/不同的软件开发人员可能会为您提供不同的答案。
我的看法是,我认为将它们分成单独的文件-如果逻辑很复杂,甚至可以分解为各种方法-对可维护性/测试有很大帮助。
Something like test contact.service.test.js
中,更改是隔离的,他们可以立即轻松地运行相关测试。向自己问这些问题;
您的服务中是否包含非常复杂的逻辑,这些逻辑会将文件扩展成数千行-使其更难记录文档/更难以发现错误/更难以重构?还是它们是逻辑被卸载到系统其他部分的较小端点?
针对这些方法/服务的测试是否将存在于(另一个)单个文件中-模仿服务实现中的模式?在测试功能时,您能否调用单个测试?
您准备好适应所有服务中做出的决定了吗?因此,您的特定服务的确切文件可能相对较小,您的一位同事可能编写并变成一个巨大的1K行文件的服务又如何呢?