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

做电影网站侵权吗crm系统 网站建设

做电影网站侵权吗,crm系统 网站建设,建行个人网上登录入口,兰州seo实战优化微软官方的开源项目eShopOnContainers中#xff0c;用到了一个实现中介者模式的类库#xff1a;MediatR。这个类库的作者叫Jimmy Bogard#xff0c;在其gtihub主页上可以看到#xff0c;注明的对象映射组件AutoMapper 就是他写的。其博客上的自我介绍是这么写的#xff1a… 微软官方的开源项目eShopOnContainers中用到了一个实现中介者模式的类库MediatR。这个类库的作者叫Jimmy Bogard在其gtihub主页上可以看到注明的对象映射组件AutoMapper 就是他写的。其博客上的自我介绍是这么写的Headspring的首席架构师《MVC in Action》的作者国际演说家高产的开源软件开发者。擅长分布式系统REST消息领域驱动设计和CQRS。回到MediatR这个组件他是一个低调的类库致力于解决一个简单的问题解耦进程内消息的发送与处理。跨平台支持.NET4.5和netstandard1.1。中介者模式在继续研究MediatR之前先回顾下“中介者设计模式Mediator”中介者模式的定义为用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互应用从而使其耦合松散而且可以独立地改变他们之间的交互。其结构图如下以下是一个具体的中介者模式demo/// summary /// 抽象中介者 /// /summary public abstract class AbstractMediator {public abstract void SendMessage(string msg, AbstractColleague colleague); }/// summary /// 抽象同事类 /// /summary public abstract class AbstractColleague {public string Name { get; set; }protected AbstractMediator Mediator;protected AbstractColleague(AbstractMediator mediator){Mediator mediator;}public abstract void PrintMsg(string msg); }/// summary /// 具体中介者负责同事类之间的交互他必须清楚的知道需要交互的所有同事类的细节。 /// /summary public class Mediator : AbstractMediator {public AbstractColleague ColleagueA;public AbstractColleague ColleagueB;public override void SendMessage(string msg, AbstractColleague colleague){if (colleague ColleagueA){ColleagueB.PrintMsg(msg);}else if (colleague ColleagueB){ColleagueA.PrintMsg(msg);}} }/// summary /// 具体同事类A他是不知道其他具体同事类的存在的。他与其他同事类的交互是通过中介者来实现的。 /// /summary public class ConcreteColleagueA : AbstractColleague {public ConcreteColleagueA(AbstractMediator mediator) : base(mediator){}public void SendMessage(string msg){Mediator.SendMessage(msg,this);}public override void PrintMsg(string msg){Console.WriteLine($A收到消息{msg});} }public class ConcreteColleagueB : AbstractColleague {public ConcreteColleagueB(AbstractMediator mediator) : base(mediator){}public void SendMessage(string msg){Mediator.SendMessage(msg, this);}public override void PrintMsg(string msg){Console.WriteLine($B收到消息{msg});} }class Program {/// summary/// 客户端调用/// /summary/// param nameargs/paramstatic void Main(string[] args){var mediator new Mediator();var colleagueA new ConcreteColleagueA(mediator);var colleagueB new ConcreteColleagueB(mediator);mediator.ColleagueA colleagueA;mediator.ColleagueB colleagueB;colleagueA.SendMessage(你好B中午一起饭吧);colleagueB.SendMessage(你好A好的。);Console.ReadLine();} }程序输出如下B收到消息你好B中午一起饭吧 A收到消息你好A好的。中介者类把不同的同事类之间的交互提升到其内部这样同事类之间的交互变得简单了同事类不需要知道其他同事类的存在通过中介者类来完成与其他同事类的交互。另一方面中介者类本身复杂性增加中介者类需要知道所有的同事类例如调用他们的公共方法。MediatRMediatR可以与很多依赖注入组件一起工作其github文档有详细说明。以下是我结合Autofac组件的代码研究。新建ASP.NET Core Console程序添加MediatR和Autofac依赖包。然后配置Autofacvar builder new ContainerBuilder(); // mediator itself builder.RegisterTypeMediator().AsIMediator().InstancePerLifetimeScope();// request handlers builder.RegisterSingleInstanceFactory(ctx {var c ctx.ResolveIComponentContext();return t c.TryResolve(t, out var o) ? o : null;}).InstancePerLifetimeScope();// notification handlers builder.RegisterMultiInstanceFactory(ctx {var c ctx.ResolveIComponentContext();return t (IEnumerableobject)c.Resolve(typeof(IEnumerable).MakeGenericType(t));}).InstancePerLifetimeScope();//builder.RegisterTypePingHandler().AsImplementedInterfaces().InstancePerDependency(); builder.RegisterAssemblyTypes(typeof(Program).GetTypeInfo().Assembly).AsImplementedInterfaces();var mediator builder.Build().ResolveIMediator(); Test(mediator);MediatR可以支持几种模式有请求/响应模式发布模式。请求/响应模式也可以叫做命令模式主要适用于命令和查询场景。一个请求只能被一个处理者捕获如果存在多个处理者那么只有最后一个处理者会被激活。以下代码声明消息然后定义处理者/*注意请求/响应接口适用于命令和查询场景。*都只能有一个Handler如果注册多个只有最后一个会生效。*/ public class Ping : IRequeststring {public int MsgId { get; set; } }public class PingHandler : IRequestHandlerPing, string {public Taskstring Handle(Ping request, CancellationToken cancellationToken){return Task.FromResult($MsgID{request.MsgId},Pong);} }/// summary /// 为了方便不需要CancellationToken的Handler可以继承AsyncRequestHandler类 /// /summary public class AsyncNoCancellation : AsyncRequestHandlerPing, string {protected override Taskstring HandleCore(Ping request){return Task.FromResult(Pong);} }/// summary /// 如果Handler是完全同步的可以继承RequestHandler类 /// /summary public class SyncHandler : RequestHandlerPing, string {protected override string HandleCore(Ping request){return $SyncHandler Pong;} }然后就是发送请求了var response await mediator.Send(new Ping(){MsgId 100}); Console.WriteLine(response); // SyncHandler Pong另外请求/响应模式还支持不带任何返回值的处理者public class OneWay:IRequest {public int MsgId { get; set; } }public class OneWayHandler : IRequestHandlerOneWay {public Task Handle(OneWay request, CancellationToken cancellationToken){Console.WriteLine(${request.MsgId},OneWayHandler);return Task.CompletedTask;} }发布模式一般用于发布一个事件通知订阅者某件事情已经发生对此事感兴趣的订阅者可以采取行动了。一般是一个发布这多个订阅者。public class Hello : INotification {public int MsgId { get; set; } }public class Hello1 : INotificationHandlerHello {public async Task Handle(Hello notification, CancellationToken cancellationToken){await Task.Delay(3000);Console.WriteLine(${notification.MsgId},{Thread.CurrentThread.ManagedThreadId});} }public class Hello2 : INotificationHandlerHello {public async Task Handle(Hello notification, CancellationToken cancellationToken){await Task.Delay(3000);Console.WriteLine(${notification.MsgId},{Thread.CurrentThread.ManagedThreadId});} }像这样发布消息await mediator.Publish(new Hello() {MsgId 300});程序输出如下300,4 300,5 Main 5这里可以看到2个订阅者都被激活了。另外可以看到不同的订阅者所处的线程ID不一样他们是异步执行的。原文地址 http://coderyu.com/2018/04/02/mediatr-%E4%B8%AD%E4%BB%8B%E8%80%85/.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.sadfv.cn/news/123685/

相关文章:

  • 深圳建站公司企业建设一个网站大概需要多久
  • 公司网站建设合规吗受欢迎的徐州网站建设
  • 湖南省交通建设质量安全监督管理局网站metro风格网站
  • 做时时网站要多少钱用KEGG网站做通路富集分析
  • 企业网站设计规范如何分享自己的wordpress
  • 网站开发和软件开发工作创建全国文明城市工作总结
  • 鞍山招聘信息最新招聘提升seo搜索排名
  • 南宁隆安网站建设北京模板建站代理
  • 网站建设宀金手指排名响应式酒店网站模板
  • 开发大型网站的最主流语言wordpress侧边栏 菜单
  • 黑龙江省城乡建设厅网站wordpress不同背景图片
  • 收录网站的平台有哪些网站开发个人技能
  • 旅游网站建设规划书模板下载wordpress中国可以用吗
  • 美食网站开发与研究 论文网站收录提交入口
  • 集团企业网站建设成都营销类网站设计
  • 黄石网站建设(乐云践新)网页制作淘宝网站建设
  • 不用域名做自己的网站苏州品牌网站设计开发
  • 怎么花最少的钱做网站wordpress数据库移动
  • 无经验可以做网站编辑吗注册有限公司注册有限公司
  • 湖北省住房和城乡建设厅网站的公示公告网络服务提供者对在业务活动中收集的公民个人电子信息
  • 外贸网站建设ppt模板下载域名的作用是什么
  • 怀化买房网站wordpress 页面 微博
  • 申请收费网站空间互联网是什么意思
  • 织梦商城网站模板建设网站协议合同范本
  • 免费制作头像的网站网站从建设到运行要多少
  • 手机配件网站模板河南省建协网官方网站
  • 打码网站怎么做wordpress主题验证
  • 汽车网站图片韶关网站建设制作
  • 电力建设专家答疑在哪个网站中国最好的公关公司
  • 灵宝市建设局网站福州seo推广