.NET应用架构设计—工作单元模式(摆脱过程式代码的重要思想,逆(2)
来源:未知 责任编辑:责任编辑 发表时间:2015-05-17 16:44 点击:次
Order活动记录对象的字段部分。
namespace OrderManager.Business { public partial class Order { public bool CheckOrder() { //执行部分业务验证工作 if (this.OId <= 0) return false; return true; } } }
Order活动记录对象主体,纯粹为了演示而用,包含了一个简单的判断业务逻辑。
namespace OrderManager.Business { public partial class OrderProducts { public long OrderId { get; set; } public long PId { get; set; } public float Price { get; set; } } }
订单商品部分字段。
namespace OrderManager.Business { public partial class OrderProducts { public bool CheckProducts() { //执行部分业务验证工作 if (this.OrderId <= 0) return false; return true; } } }
每一个商品都包含了自己的逻辑验证。
我们接着看一下应用层入口方法是如何协调两个活动记录对象之间的业务操作和数据存储的。
namespace OrderManager { using OrderManager.Business; using OrderManager.DataSource; public class OrderManagerController : ControllerBase { public bool AddOrder(Order order) { using (UnitOfWork unitOfWork = new UnitOfWork()) { order.CheckOrder();//执行业务检查 order.Products.ForEach(item => { item.CheckProducts();//执行每个活动记录对象的业务检查,这里也可以使用表模块来处理。 }); OrderGateway orderGateway = new OrderGateway(unitOfWork); var orderDbResult = orderGateway.AddOrder(order);//第一个数据库表操作 OrderProductsGateway productGateway = new OrderProductsGateway(unitOfWork); var productDbResult = productGateway.AddOrderProducts(order.Products);//第二个数据库表操作 if (orderDbResult && productDbResult) { if (unitOfWork.Commit()) { this.SendOrderIntegrationMssage(order);//发送成功集成订单消息 return true; } this.PushOrderProcessQueue(order);//将本次订单发送到处理队列中 return false; } this.LogBusinessException(order);//记录一个业务处理异常LOG,以备排查问题。 return false; } } } }
相关新闻>>
- 发表评论
-
- 最新评论 更多>>