我正在写两个单独的服务。第一个服务的输出提供给第二个服务。我应该使用共享库,以便类型检查器可以确保接口匹配吗?
"产品"服务需要Application
并生成Products
。
"得分"服务需要Application
和Products
并生成Score
。它使用的信息不到一半。
我是否应该拥有"分数"完全匹配"产品"的输出,即使它没有使用所有信息?两者都将由同一客户端使用,并且不必进行任何转换将非常方便。我可以使用只包含类型的共享库和可以强制执行此操作的json序列化代码。构建系统可以依赖于共享库的旧版本,因此只要我保持向前兼容,我就不需要更新"分数"当字段被添加到"产品"的输出时。
或者我应该得到"分数"重塑自己的界面概念,只需要它需要的领域?字段名称可能不匹配,使客户端更难连接它们。优点是接口完全解耦。
答案 0 :(得分:0)
如果您真的想要遵循微服务方式,那么我就说不要使用共享库。
这个概念的重点是解耦服务。如果你创建一个共享库,其中包含一些"相同的"对于多个服务,每次服务想要增强这些类时,都必须在共享库中完成,迫使其他服务适应。
将服务分离使每个服务都可以单独发展。