我负责大型SOA应用程序。客户端是ASP.NET WebForms,业务是带有WCF的.NET。
我们的业务代码确实很糟糕(BBOM),经过一番阅读之后,我陷入了DDD。我真的很想用DDD概念重写业务的某些部分。
使用SOA,我处于一个无国籍的世界。因此,如果网页使用户能够处理订单,例如添加订单明细,删除订单明细等,则每种业务方法都必须在应用业务规则并保持更改之前重新加载数据以充实我的汇总。
当很少考虑数据时,这不是问题。但是,当聚合很大且加载数据并对其进行水化需要几秒钟时,会发生什么?
是否可以有状态地使用SOA体系结构?
最佳答案
根据SOA无状态的one definition,
服务无状态原则提供了有利于
通过转移状态管理使服务成为无状态
从服务到其他外部体系结构的开销
零件
因此,状态被从服务推迟到其他地方,但是显然,它并没有完全消失。
关于推迟状态的所有选项都是打开的。您提到了将其存储在数据库中的潜在性能问题,但是您是否首先经历了这些问题?它是DDD应用程序中域状态存储的最常见形式,并且作为一般的良好实践,聚合应该很小。
其他选项包括将状态存储在客户端,Web框架提供的会话机制中,cookie中等。请确保您了解每个对象的来龙去脉,以做出明智的选择。
关于c# - DDD和SOA应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34765087/