项目作者: msdn129

项目描述 :
DotNetFramework.CAP 是一个基于 .NET Framework的 C# 库,它是一种处理分布式事务的解决方案,基于DotNetCore.CAP修改。
高级语言: C#
项目地址: git://github.com/msdn129/DotNetFramework.CAP.git
创建时间: 2019-07-17T03:28:49Z
项目社区:https://github.com/msdn129/DotNetFramework.CAP

开源协议:MIT License

关键词:
distribution

下载


联系QQ 355809289

DotNetFramework.CAP

DotNetFramework.CAP 是一个基于 .NET Framework的 C# 库,它是一种处理分布式事务的解决方案,基于DotNetCore.CAP修改。

1. 此代码是基于DotCore.CAP 2.5.1 版本修改.

2. DotNetFramework.CAP 新增Core文件夹主要实现 DotNetCore下的Ioc容器. 日志Logger.

  1. ###a. 使用 AutoFac 实现 ServiceProvider,ServiceCollection,ServiceScope,ActivatorUtilities.
  2. ###b. 使用 Serilog 实现 Core下的Logger.

3. 内部代码修改如下:

  1. ###a. 删除DashBoard.暂时没有实现。
  2. ###b. 启动配置修改。
  3. ./App_Srart
  4. public class CapConfig
  5. {
  6. public static IServiceCollection Services { get; set; }
  7. public static void RegisterCap()
  8. {
  9. Services = new ServiceCollection();
  10. Services.AddCap(stetup =>
  11. {
  12. // 注册节点到 Consul
  13. stetup.UseSqlServer("Data Source=localhost;database=donet61;Uid=sa;pwd=sa;");
  14. stetup.UseRabbitMQ(option =>
  15. {
  16. option.VirtualHost = "HengQueue";
  17. option.HostName = "localhost";
  18. option.Port = 5672;
  19. option.UserName = "zhangheng";
  20. option.Password = "123456";
  21. });
  22. });
  23. Services.BeginRegister();
  24. Services.ServiceProvider.GetService<IBootstrapper>().BootstrapAsync(new CancellationToken());
  25. }
  26. }
  27. protected void Application_Start()
  28. {
  29. CapConfig.RegisterCap();
  30. }
  31. ###c. 获取controller下订阅方法修改。
  32. (这里由于.net core asp.net framework asp.netweb机制变化)
  33. //heng
  34. //var types = Assembly.GetEntryAssembly().ExportedTypes;
  35. var types = BuildManager.GetGlobalAsaxType().BaseType.Assembly.ExportedTypes;
  36. ###d. Dapper执行Sql (将异步执行改为同步,因为发现在frameworkwork下会卡死)
  37. connection.Execute(sql);
  38. ###e. Sqlserver执行操作的发布消息时机的改动。
  39. ###f. EntityFramework执行操作的发布消息时机的改动。
  40. Diagnostic.DiagnosticSource
  41. 由于原作者(DoNetCoreCAP基于CoreSqlserverDiagnostic,完成的观测时机进行发布消息),
  42. 然而在framework下的Sqlserver Client代码没有实现Diagnostic的可观测行为。
  43. 扩展commit方法实时消息推送)
  44. 修改为: public static void Commit(this IDbTransaction trans, ICapPublisher bus)
  45. {
  46. bus.Transaction.Commit();
  47. }
  48. public static void Commit(this DbContextTransaction trans, ICapPublisher bus)
  49. {
  50. bus.Transaction.Commit();
  51. }
  52. 提交事务使用如下代码:
  53. transaction.Commit(_capBus); 详情参阅例子代码CapWeb251