我一直在阅读关于Microservice Architecure以及互联网上有限的有价值信息,我相信我从理论的角度对它有一个公正的理解。据我所知,从高层次上看,这种架构意味着从monoliths转向,并且拥有小型的独立服务。但是,我在互联网上看到的所有示例都建议连接到ESB,以编写松散耦合的Windows服务(在非MS实现的情况下,守护进程)。据我所知,编写符合SRP的小型,松散耦合的Web服务也适合微服务帐单。这就是说,oData.Net服务(所有oData控制器(微服务?)被部署为一个整体)显然违反了微服务架构模式。这是否是正确的声明,使oData.net不是作为微型服务工作的?如果你的答案是否定的,请在一个例子的帮助下解释。另外,请帮助我理解,如何在组合中使用API网关模式。是否可以通过oData.net实现微服务
1
A
回答
3
ODATA确实适合微服务。但是,微服务不适合odata。我的意思是,没有什么能够阻止你在微服务中暴露OData。
但是,通过这样做,您通常会在微服务中暴露一大组内部数据结构。这反过来会增加不同服务之间的耦合。通过这样做,由于依赖关系,您更难以更改服务。
我个人的经验法则是要尽可能从每个服务中公开一个小的API。我公开的数据结构与内部数据结构不一样。它们可能会变平或在不同内部实体中的数据之间进行联合。
我的推理是:如果您要创建单独的服务,请尝试尽可能多地分开它们。否则,你只是建立一个巨石,碰巧运行在几个不同的窗口服务。
1
oData作为暴露微服务的方法是完全有效的;暴露一个明确的表,但不是微服务。所以我完全不同意jgauffin。没有理由使用oData无法提供API。我同意JGauffin的观点是,API应该有一个与源或目标的详细数据结构分离的小而平面的空间。因此,服务调用它来转换API,但意味着API的通用格式可以重用,只要业务需求在那里,并且技术平台根据需要进行切换。
相关问题
- 1. 是否可以通过微软Exchange服务器在django发送电子邮件?
- 2. React VR - 是否可以通过socket.io实现实时对象?
- 3. 如何通过弹簧启动微服务实现协调?
- 4. 是否可以从现有实体创建服务和DTO?
- 5. PJSIP是否可以实现服务器端?
- 6. 是否可以实现多个wcf服务(多个http:方案)
- 7. 是否可以通过ActiveScaffold实现has_many :: through?
- 8. 是否可以实现通过EF添加插入行的ID
- 9. core.async是否可以通过序列实现它的功能?
- 10. 是否可以通过自举响应式css实现拖放?
- 11. 在IIS7中是否可以通过FastCGI实现v8cgi?
- 12. 是否可以通过MailAddress类实现XSS?
- 13. 我们是否可以通过AIR应用程序实现SSO
- 14. 是否可以通过简单的方式实现动态ConfigurationSection?
- 15. 是否可以通过thread_local实现boost :: thread_specific_ptr?
- 16. 是否可以通过WCF实现/保留延迟执行?
- 17. 是否可以通过Apigee代理Web套接字服务?
- 18. 是否可以通过手机浏览器触发Android服务?
- 19. 是否可以通过服务在后台启动活动?
- 20. 是否可以通过REST服务更改TemplateID - “修改模板”
- 21. 是否可以通过互联网连接到VisualSVN服务器
- 22. 检查服务器是否可以通过IPv6访问?
- 23. 是否可以通过CGI控制服务器?
- 24. 是否可以通过链接调用Web服务?
- 25. 是否可以通过Windows Installer服务监控安装?
- 26. 是否可以通过编程调用OS X服务?
- 27. 是否可以通过Javascript连接到UDP服务器?
- 28. 是否可以通过QtService编写(Windows或Linux)服务?
- 29. 是否可以在微服务应用程序中代理POJO?
- 30. 我可以通过服务器实现客户端 - 客户端通信吗?
是的,你应该通过API提供“视图模型”,而不是从数据库中提供实际的域对象。 – FlavorScape