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

网站开发的过程步骤江苏省建设网站首页

网站开发的过程步骤,江苏省建设网站首页,wordpress做个论坛,wordpress首页文字广告框架背景 相信前面几篇关于微服务的文章也介绍了那么多了#xff0c;在构建微服务的过程中确实需要这么一个东西#xff0c;即便不是在构建微服务#xff0c;那么在构建分布式应用的过程中也会遇到分布式事务的问题#xff0c;那么 CAP 就是在这样的背景下诞生的。 最初打算做…背景 相信前面几篇关于微服务的文章也介绍了那么多了在构建微服务的过程中确实需要这么一个东西即便不是在构建微服务那么在构建分布式应用的过程中也会遇到分布式事务的问题那么 CAP 就是在这样的背景下诞生的。 最初打算做这个东西是在去年2016年底最初是为了解决分布式系统中的分布式事务的问题然后当时有了一个大概的概念轮廓当时我对于前面两篇文章中关于异步消息和微服务之间通讯还不是太了解只是觉得这样能够解决这一系列的问题然后就着手做了最后发现和这些概念竟然不谋而合。 经过大半年的不断重构以及修改最终 CAP 1.0 版本发布了。作为一个开源项目最初项目是在我的个人Github下然后于上个月已经贡献给了 .NET China Foundation 组织目前该项目由我和 DotNetCore 项目组共同维护。 CAP 介绍 Githubhttps://github.com/dotnetcore/CAP 开源协议MIT CAP 是一个在分布式系统中SOAMicroService实现事件总线及最终一致性分布式事务的一个开源的 C# 库她具有轻量级高性能易使用等特点。 你可以轻松的在基于 .NET Core 技术的分布式系统中引入CAP包括但限于 ASP.NET Core 和 ASP.NET Core on .NET Framework。 CAP 以 NuGet 包的形式提供对项目无任何入侵你仍然可以以你喜爱的方式来构建分布式系统。 CAP 具有 Event Bus 的所有功能并且CAP提供了更加简化的方式来处理EventBus中的发布/订阅。 CAP 具有消息持久化的功能也就是当你的服务进行重启或者宕机时她可以保证消息的可靠性。 CAP 实现了分布式事务中的最终一致性你不用再去处理这些琐碎的细节。 CAP 提供了基于 Microsoft DI 的 API 服务她可以和你的 ASP.NET Core 系统进行无缝结合并且能够和你的业务代码集成支持强一致性的事务处理。 CAP 是开源免费的。CAP基于MIT协议开源你可以免费的在你的私人或者商业项目中使用不会有人向你收取任何费用。 Getting Started 目前 CAP 同时支持使用 RabbitMQ 或 Kafka 进行底层之间的消息发送你不需要具备 RabbitMQ 或者 Kafka 的使用经验仍然可以轻松的集成到项目中。 CAP 目前支持使用 MS Sql Server 数据库的项目其他数据库正在支持中... CAP 同时支持使用 EntityFrameworkCore 和 Dapper 的项目你可以根据需要选择不同的配置方式。 下面是CAP在系统中的一个不完全示意图 图中实线部分代表用户代码虚线部分代表CAP内部实现。 下面我们看一下 CAP 怎么集成到项目中 Step 1: 你可以运行下面的命令来安装CAP NuGet 包 PM Install-Package DotNetCore.CAP 根据底层消息队列你可以选择引入不同的包 // 如果你使用的是 KafkaPM Install-Package DotNetCore.CAP.Kafka// 如果你使用的是 RabbitMQPM Install-Package DotNetCore.CAP.RabbitMQ CAP 目前支持使用 SQL Server 的项目你需要引入 PM Install-Package DotNetCore.CAP.SqlServer Step 2: 在 Startup.cs 文件中添加如下配置 public void ConfigureServices(IServiceCollection services){......services.AddDbContextAppDbContext();services.AddCap(x {        // 如果你的 SqlServer 使用的 EF 进行数据操作你需要添加如下配置// 注意: 你不需要再次配置 x.UseSqlServer()x.UseEntityFrameworkAppDbContext();        // 如果你使用的Dapper你需要添加如下配置x.UseSqlServer(数据库连接字符串);    // 如果你使用的 RabbitMQ 作为MQ你需要添加如下配置x.UseRabbitMQ(localhost);    //如果你使用的 Kafka 作为MQ你需要添加如下配置x.UseKafka(localhost9092);}); }public void Configure(IApplicationBuilder app){.....    // 添加 CAPapp.UseCap(); } 发布事件/消息 在 Controller 中注入 ICapPublisher 然后使用 ICapPublisher 进行消息发布: public class PublishController : Controller{    private readonly ICapPublisher _publisher;    public PublishController(ICapPublisher publisher)    {_publisher publisher;}[Route(~/checkAccountWithTrans)]    public async TaskIActionResult PublishMessageWithTransaction([FromServices]AppDbContext dbContext)    {         using (var trans dbContext.Database.BeginTransaction()){            //指定发送的消息标题供订阅和内容await _publisher.PublishAsync(xxx.services.account.check,                new Person { Name Foo, Age 11 });            // 你的业务代码。trans.Commit();}        return Ok();} } 订阅事件/消息 在 Controller 中如果是在Controller中直接添加[CapSubscribe()] 来订阅相关消息。 public class PublishController : Controller{[NoAction][CapSubscribe(xxx.services.account.check)]    public async Task CheckReceivedMessage(Person person)    {Console.WriteLine(person.Name);Console.WriteLine(person.Age);     return Task.CompletedTask;} } 在 xxxService中如果你的方法没有位于Controller 中那么你订阅的类需要继承 ICapSubscribe然后添加[CapSubscribe()]标记 namespace xxx.Service{    public interface ISubscriberService{        public void CheckReceivedMessage(Person person);}    public class SubscriberService: ISubscriberService, ICapSubscribe{[CapSubscribe(xxx.services.account.check)]          public void CheckReceivedMessage(Person person)        {}} } 然后在 Startup.cs 中的 ConfigureServices() 中注入你的 ISubscriberService 类 public void ConfigureServices(IServiceCollection services){services.AddTransientISubscriberService,SubscriberService(); } 结束了怎么样是不是很简单 鸣谢 感谢 lan Ye 同学对本项目的英文翻译工作。 感谢 AlexLEWIS 同学对本项目的其他支持。 感谢 .NET China Foundation 团队成员对本项目的支持。 总结 如果你有任何问题都可以去 Github 给我们提交 Issue我们会在第一时间处理。 如果你觉得这个开源项目还不错给个Github Star 支持一下那就太好了。 原文地址http://www.cnblogs.com/savorboard/p/cap.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.hn-smt.com/news/37276/

相关文章:

  • appium包含文本定位的5种方法
  • Docker部署Code-Server,实现远程写代码
  • 软件工程学习日志2025.11.13
  • 2025-11-13 PQ v.Next日志记录
  • IOS抓包------Stream
  • C++之变量与基本类型(三) - Invinc
  • (八大排序)快速排序(递归)
  • (八大排序)冒泡排序
  • 11.13 比赛总结
  • Python迭代器_迭代器对象可迭代对象必须分开场景
  • 为啥要搞utf-8等,直接存储Unicode码点不行吗?
  • 2025年安徽商标注册公司Top5排行榜:专业机构深度解析
  • 2025年比较好的非标设备机架产品推荐排行榜单,非标设备机架公司精选实力品牌榜单发布
  • 2025年北京继承官司律师机构推荐,这些律所值得信赖,北京丰台继承律师/北京离婚纠纷/离婚纠纷律师/遗产继承律师事务所维权机构选哪家
  • 2025钢结构反吊膜十大供应商排行榜,膜结构车棚厂家,膜结构看台厂家,有实力的膜结构自行车棚供应厂家排行,哪家好怎么选
  • 完整教程:告别“静态”VI手册:InDesign与AE打造可交互的动态品牌规范
  • 2025年成都火锅品牌排行榜出炉,这些网红店你打卡了吗?社区火锅/老火锅/附近火锅/重庆火锅/火锅/成都火锅/牛肉火锅/地摊火锅品牌哪个好
  • 2025年山西博物馆展示柜厂家综合实力排行榜TOP10
  • 2025年冷库建造实力厂家权威推荐榜单:冷库工程/冷库/果蔬保鲜冷库源头厂家精选
  • 2025年海南景区标识标牌设计公司权威推荐榜单:海口标识标牌制作/标识标牌制作/安全标识标牌设计源头公司精选
  • 【MySQL】数据库表的CURD(二) - 详解
  • OLIDWORKS 2025 SP5.0 多语言完整版 10 月更新,解锁三维机械设计新高度
  • 构建数据安全体系,数据分类分级是核心
  • go beego http
  • 新乡LCD拼接屏实用指南:聚焦跨平台能力与售后体系
  • 从0到1构建一个稳定redis架构
  • WireWorld 美国线世界:以专利科技重塑家用音响线缆的高保真革命
  • P13544 [OOI 2022] Serious Business
  • 新建 Microsoft Word 文档
  • 2025下半年国内液压/电动/半自动升降柱厂家排行榜:技术领先企业全面解析