LindDotNetCore相关介绍
单机安插(stand-alone):唯有一个饮水机提供劳动,服务只陈设一份
有关模块
- 全局都是看重DI
- 音信队列
- NoSql
- Caching
- 仓储
- 劳务总线
- Solr
- 调度
- 日志
- Asspect拦截组件
- UAA授权
- 各样零部件环境的搭建
-
各模块单元测试编写
#### 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)
RAID0:存储质量高的磁盘阵列,又称striping,它的法则是,将连接的数码分散到分歧的磁盘上囤积,这一个区其余磁盘能而且并行存取数据(速度块)
RAID1:安全性高的磁盘阵列,又称mirror,它的法则是,将数据完全复制到另一个磁盘上,磁盘空间利用率唯有50%(冗余,数据安全)
RAID0+1:RAID0和RAID1的概括方案,那也是国有集团用的相比多的储存方案(速度快,安全性又高,可是很贵)
RAID5:RAID0和RAID1的折衷方案,读取速度比较快(不如RAID0,因为多存储了校验位),安全性也很高(可以动用校验位復苏数据),空间利用率也没错(不完全复制,只冗余校验位),那也是网络公司用的比较多的仓储方案。
正文小编58沈剑,来源自架构师之路。