我正在尝试使用Service Oriented Architecture SOA
来构建一个至少包含16或20个模块的大型.NET应用程序,所以现在我只为一个模块实现了4个服务。
四个服务中的一个是core service
,我需要将其包含在每个模块中,因为它包含例如Logging , Security etc..
我可以将它包含在每个新服务中。
我面临很多问题需要咨询。
class libraries
放在一个解决方案中,或者将它们分成多个解决方案,现在我有大约40个类库。database
我现在有一个数据库,我也将数据库分开,或者将它放在一个数据库中。帮助我让我的应用程序的架构师考虑使用SOA
和高可维护性的任何指导也不会让开发团队与这个大型架构师混淆
答案 0 :(得分:0)
我不确定我的问题是100%。但是,SOA服务(以及最近的微服务)是自包含且松散耦合的。实际上,这通常意味着服务在不同的条件下发展,并且应该可以在分离中进行部署/测试。我相信你的项目结构应该反映出来。
我个人会为每项服务选择两个模块。模块A将是一个接口规范,可以在依赖于服务的其他模块中使用。模块B将是服务实现。我会为每个项目/解决方案提供一个由这两个模块组成的服务。
对于数据库:我认为每个服务都应该对它自己的数据库负责。当然,您可以在服务之间共享数据库服务器,但每个服务应该管理它自己的数据库或至少管理此计算机上的模式。 DB中不同服务的数据之间不应存在外键关系或其他依赖关系,因为这些是通过内部服务通信处理的。