LindDotNetCore澳门美高梅手机网站~基于模块化注入的牵线

重临目录

澳门美高梅手机网站 1

LindDotNetCore相关介绍

单机安插(stand-alone):唯有一个饮水机提供劳动,服务只陈设一份

有关模块

  1. 全局都是看重DI
  2. 音信队列
  3. NoSql
  4. Caching
  5. 仓储
  6. 劳务总线
  7. Solr
  8. 调度
  9. 日志
  10. Asspect拦截组件
  11. UAA授权
  12. 各样零部件环境的搭建
  13. 各模块单元测试编写

    #### DI统世界首次大战线

    LindDotNet框架同样运用了全局DI注入的法子来利用模块对象的,那种松耦合的统筹对于单元测试
    是很方便人。

    services.AddLog4Logger(o =>
    {
    o.Log4ConfigFileName = "log4.config";
    o.ProjectName = "test";
    });
    services.UseDapper(o =>
    {
    o.ConnString = $"Data Source=/Data/intergratetest.db";
    o.DbType = Lind.DotNetCore.Repository.DbType.SqlLite;
    });
    

    #### 音讯队列

    新闻队列首要接纳’rabbitmq,kafka’已毕的,用来解耦项目,处理高并发义务和耗时义务,生产者
    不供给关心是何人来消费,它只管把新闻发到队列中;而顾客不保养新闻如何暴发,只把消费按着
    作业逻辑去处理掉!

    services.AddRabbitMQ(o =>
    {
    o.ExchangeName = "zzl";
    o.MqServerHost = "192.168.200.214";
    o.VirtualHost = "/";
    o.ExchangeType = "topic";
    });
    

    #### NoSql

    时下框架的NoSql部分由redis和mongodb结合,之具备选用那两种框架最大的来头就是它们覆盖了
    NoSql所有的采纳情状,像redis用来囤积k/v键值对,帮衬5大数据结构;而mongodb用来存储文档
    型数码,支持复杂的询问,嵌套查询等。

    services.AddRedis(o =>
    {
    o.Host = "localhost:6379";
    o.AuthPassword = "";
    o.IsSentinel = 1;
    o.ServiceName = "mymaster";
    o.Proxy = 0;
    });
    

    #### Caching

    数码缓存是比较重大的有的,用来存储一些热数据,近来分布式环境使用redis,单机可以直接使用
    运作时缓存。

    services.AddRuntimeCache(o =>
    {
    o.CacheKey = "lindCache";
    o.ExpireMinutes = 5;
    });
    

    #### 仓储

    储存主要简化数据持久化的操作,对外提供不难的CURD操作接口,使用者直接调用即可,不须要干预SQL语句,
    从那点上来说,开发功用确实升高了不少。近来大爷框架里集成了ef,dapper,mongodb,redis,elastic等仓储,其中
    EF和Dapper可以操作sqlserver,mysql,sqllite等数据库。

    services.UseDapper(o =>
    {
    o.ConnString = $"Data Source={Directory.GetCurrentDirectory()}/intergratetest.db";
    o.DbType = Lind.DotNetCore.Repository.DbType.SqlLite;
    });
    

    #### 服务总线

    劳务总线首如若用来解耦项目标层与层之间的调用,让程序员把关心点放在工作上,方今框架提供了IOC方式的轩然大波,
    基于不难内存字典存储的轩然大波等。

    services.AddIocBus();
    services.AddInMemoryBus();
    

    #### Solr

    Solr是在Lucene基础之前支付的,使用java编写,一般安顿在tomcat上,有温馨的图像管理界面,可以用来管理core,
    诚如地,大家在筹划一个core时,须要为它创设相应的实业,与它的core里的属性对应起来;solr有抬高的插件,像一些
    华语分词包,索引包等。

    services.AddSolrNet(o =>
    {
    o.ServerUrl = "http://192.168.200.214:8081/solr/system_companysubject";
    o.UserName = "sa";
    o.Password = "sa";
    });
    

    #### 调度服务

    调度服务是以quartz为着力,并对它的机能拓展了打包,帮衬实时添加的职务,这点利用了windows/linux的目录监控事件
    ,也是.netcore帮大家完成的,大家只需求订阅相关事件即可。

    var watcher = new FileSystemWatcher
    {
    Path = AppDomain.CurrentDomain.BaseDirectory,
    NotifyFilter = NotifyFilters.Attributes |
                   NotifyFilters.CreationTime |
                   NotifyFilters.DirectoryName |
                   NotifyFilters.FileName |
                   NotifyFilters.LastAccess |
                   NotifyFilters.LastWrite |
                   NotifyFilters.Security |
                   NotifyFilters.Size,
    Filter = "*.dll"
    };
    // quartz运行时,可以添加新job,但不能覆盖,删除等
    watcher.Created += new FileSystemEventHandler((o, e) =>
    {
    foreach (var module in Assembly.LoadFile(e.FullPath).GetModules())
    {
        foreach (var type in module.GetTypes().Where(i => typeof(ISchedulingJob).IsAssignableFrom(i)))
        {
            JoinToQuartz(type, DateTimeOffset.Now);
        }
    }
    });
    //Start monitoring.
    watcher.EnableRaisingEvents = true;
    

    #### 日志

    日志框架与事先的Lind框架里日志差别不大,只是把目的的生命周期移到了DI容器去联合保管,都使用单例形式,目后天记框架提供了
    对log4net的协理,同时轻量级日志可以选用lindlogger来完成。

    services.AddLog4Logger(o =>
    {
    o.Log4ConfigFileName = "log4.config";
    o.ProjectName = "test";
    });
    

    #### Asspect拦截组件

    主意阻碍在微软mvc,api框架里应用相当大面积,可以在情势执行前与实施后动态增进任何逻辑,而不需求关怀方法细节,落成拦阻行为
    的开发人士不须求去关爱方法细节,这利用了面向对象的封装特性,而也符合开闭原则,因为你可以在不改动原来代码的场所下,动态
    为它助长行为。

    [Fact]
    public void FuncInvoke()
    {
    var obj = ProxyFactory.CreateProxy<AspectTest, AspectTest>();
    Assert.Equal("OK", obj.GetHello());
    }
    [Fact]
    public void ActionInvoke()
    {
    var obj = ProxyFactory.CreateProxy<AspectTest, AspectTest>();
    obj.SetHello();
    Assert.Equal(1, 1);
    }
    

    待续…
    归来目录

集群计划(cluster):有多个饮水机同时提供劳务,服务冗余计划,每个冗余的劳动都对外提供劳动,一个劳动挂掉时依然可用

热备布署(hot-swap):唯有一个桶提供劳务,另一个桶stand-by,在水用完时自动热替换,服务冗余布署,只有一个主服务对外提供劳动,影子服务在主服务挂掉时顶上

磁盘阵列RAID(Redundant
Arrays of independent Disks)

澳门美高梅手机网站 2

RAID0:存储质量高的磁盘阵列,又称striping,它的法则是,将连接的数码分散到分歧的磁盘上囤积,这一个区其余磁盘能而且并行存取数据(速度块)

澳门美高梅手机网站 3

RAID1:安全性高的磁盘阵列,又称mirror,它的法则是,将数据完全复制到另一个磁盘上,磁盘空间利用率唯有50%(冗余,数据安全)

RAID0+1:RAID0和RAID1的概括方案,那也是国有集团用的相比多的储存方案(速度快,安全性又高,可是很贵)

澳门美高梅手机网站 4

RAID5:RAID0和RAID1的折衷方案,读取速度比较快(不如RAID0,因为多存储了校验位),安全性也很高(可以动用校验位復苏数据),空间利用率也没错(不完全复制,只冗余校验位),那也是网络公司用的比较多的仓储方案。

 

正文小编58沈剑,来源自架构师之路。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注