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

c 网站开发简单实例教程wordpress 高级主题

c 网站开发简单实例教程,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.zqtcl.cn/news/843354/

相关文章:

  • 荆州网站建设多少钱国外网站设计理念
  • 网站备案成功后wordpress文字加框
  • 中小企业怎么优化网站西安网站建设求职简历
  • 网站开发者模式怎么打开商城网站建设特点有哪些
  • 网站登录按纽是灰色的做网站的前途怎么样
  • 常州城乡建设局网站霸榜seo
  • 网站响应样式如何制作自己的公众号
  • 网站的友情连接怎么做免费收录链接网
  • 太原网站设计排名wordpress 设置语言
  • 南京模板建站定制网站网站单页面怎么做的
  • 宁夏住房建设厅网站石家庄最新今天消息
  • 写网站软件tomcat部署wordpress
  • 怎么做下载网站吗分析一个网站
  • 网站建设禁止谷歌收录的办法做挂网站
  • 佛山优化网站公司做购物网站需要多少钱
  • 山东网站建设维护营销型网站是什么样的
  • 长沙营销网站建设苏州风险区域最新
  • 个人网站百度推广收费wordpress发邮件慢
  • 三门峡网站设计wordpress 去掉功能
  • 网站小程序开发公司wordpress 用户授权
  • 做外贸的几个网站响应式网站wordpress摄影
  • 专业建设网站技术wordpress 虚拟资源
  • 广告网站设计哪家快网站建设外包包含内容
  • 网页游戏网站模板张家口住房和城乡建设部网站
  • 冀州建设局网站公司制作网站多少钱
  • 建设个招聘网站黄页88和58那个推广好
  • 如何设计一个漂亮的网站电商设计素材
  • 沈阳建设银行网站首页果冻影视传媒有限公司
  • 建设部网站有建筑施工分包网站规划设计方案
  • 网站wap怎么做郑州做网站华久科技