当前位置: 首页 > news >正文

网站建设北京海淀wordpress英文文章格式

网站建设北京海淀,wordpress英文文章格式,云浮网站建设,网站 点击量文章目录 工程结构概览:定义应用分层及依赖关系1.应用分层2.定义Entity3.仓储层3.1 工作单元#xff1a;事务管理3.2 仓储层 4.领域事件5.APIController最佳实践 工程结构概览:定义应用分层及依赖关系 1.应用分层 领域模型层基础设施层 ⇒ 仓储应用层 ⇒ Api、后台任务Job共… 文章目录 工程结构概览:定义应用分层及依赖关系1.应用分层2.定义Entity3.仓储层3.1 工作单元事务管理3.2 仓储层 4.领域事件5.APIController最佳实践 工程结构概览:定义应用分层及依赖关系 1.应用分层 领域模型层基础设施层 ⇒ 仓储应用层 ⇒ Api、后台任务Job共享层 总结 领域模型专注业务的设计不依赖仓储等基础设施层基础设施的仓储层仅负责领域模型的取出和存储使用CQRS模式设计应用层Web Api是面向前端的交互的接口避免依赖领域模型将共享代码设计为共享包使用私有Nuget仓库分发管理 2.定义Entity 要点总结 将领域模型字段的修改设置为私有使用构造函数表示对象的创建使用具有业务含义的动作来操作模型字段领域模型负责对自己数据的处理领域服务或命令处理者负责调用领域模型业务动作 3.仓储层 3.1 工作单元事务管理 仓储层最重要的就是事务的管理这里通过工作单元模式实现事务管理 工作单元特性 使用同一上下文跟踪实体的状态保障事务一致性 3.2 仓储层 仓储层接口TEntity必须继承Entity并且必须实现聚合根也就是仓储中储存的对象是一个聚合根对象, public interface IRepositoryTEntity where TEntity : Entity,IAggregateRoot {IUnitOfWork UnitOfWork {get;}TEntity Add(TEntity entity);TEntity Update(TEntity entity); }public interface IRepositoryTEntity,TKey:IRepositoryTEntity where TEntity : EntityTKey,IAggregateRoot {bool Delete(TKey id);TEntity Get(TKey id); } 4.领域事件 领域事件的构造和添加都应该在领域模型的方法内完成不应该被外界的代码调用创建因为这些事件都是领域模型内部发生的接受领域事件的处理应该定义在应用层创建完领域模型并保存之后领域事件的处理程序才触发 总结 1.由领域模型内部创建事件 2.由专有的领域事件处理类处理领域事件 3.根据实际情况来决定是否在同一事务中处理(如一致性、性能等因素) 5.APIController最佳实践 // 伪代码[HttpGet] public Tasklong CreateOrder([FromBody]CreateOrderViewModel viewModel) {var model viewModel.ToModel();// 模型转换return await orderService.CreateOrder(model);// 业务代码调用 }// 服务中代码 class OrderService : IOrderService {public long CreateOrder(CreateOrderMode model){var address new Address(测试路,测试市区,123);var order new Order(订单名称,客户名称,999,address);_orderRepository.Add(order);await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken);return order.Id;} } 上述代码随着业务逻辑的复杂化Controller就会越来越膨胀。而DD领域设计的理念中更新倾向于把应用程序的每一层明确区分层与层之间的界限应该是明确的同时在实现上应该也是隔离的。因此控制器不应该负责处理领域模型处理仓储这些动作Controller应该负责与前端交互主要责任应该是定义输入和输出实现身份认证、授权等功能。因此上述代码不建议使用 推荐使用中间者模式演示代码如下 // 这里不建议使用属性服务进行服务注册因为当使用属性注入的时候需要把属性设置为public并且开放setget方法可能出现意外情况这可能导致代码的维护不可控 IMediator _mediator; public OrderController(IMediator mediator) {_mediator mediator; }// 这里尽可能的定义异步的action可以帮助提高应用程序的吞吐量 [HttpPost] public async Tasklong CreateOrder([FromBody] CreateOrderCommans cmd) {return await _mediator.Send(cmd,HttpContext.RequestAborted); } 总结 负责用户的输入输出定义负责身份认证和授权与领域服务职责区分开不承载业务逻辑
http://www.hkea.cn/news/14363984/

相关文章:

  • 白城做网站网站 建设情况
  • asp网站建设案例京东客网站怎么做
  • google 网站突然一条收录也没有网络推广公司成都
  • 梅州建设工程交易中心网站wordpress 添加搜索引擎
  • 网站建设建站在线建站ui中国
  • 舟山公司网站制作搜索引擎优化的重要性
  • 个人物流网站建设方案网站投稿系统怎么做
  • 罗湖网站设计楼盘推荐排行榜
  • 网站设计的主要特点wordpress设置爬虫页面
  • 有什么网站帮做邀请函设计的网站建设杭州缘择低价
  • wordpress建站页面wordpress主题模块添加图片尺寸
  • 如何构成网站英语不好的做网站运营可以吗
  • 做毕设网站多少钱网络推广一个月的收入
  • 福建省建设银行网站网店推广的方法
  • 网站建设应遵循哪几项原则阿坝州网站制作
  • 北京西城区建设网站酒店软装设计公司官网
  • 劳动人事争议仲裁网站建设wordpress vanilla
  • 能打开各种网站的浏览器app网站开发的成果
  • 网站 各种 备案wordpress百科插件
  • 利用模板如何制作网站wordpress伪静态cdn
  • 网页设计与网站建设在线考试和女的做那个视频网站
  • 招聘网站开发源码易语言做网站登陆
  • 网站板块策划中国建设银行云南官网站纪念币
  • 服装网站设计方案如何注册一个自己的网址
  • 买服务器做网站主机长春做网站推广的公司
  • 微网站栏目图标山东省建设执业资格注册中心网站
  • 只想怎样建设自己的销售网站网站都是什么软件做的
  • 网站开发实践实验教程wordpress 文章内目录
  • 手机销售网站的设计与实现网站美食建设图片
  • 贵司不断优化网站建设网站制作哪些分类