大爷课堂。回到目录。

学科目录

率先讲  仓储大叔说系统架构_说架构设计

绑架构师要干什么

着力代码

初技巧培育

框架设计

数据库设计

型设计

主干疑难问题解决

次摆  仓储大叔说系统架构~基础篇

基础篇-大叔主要讲一下接口,抽象类,枚举,事件和委托在其实开发中之应用,及片段技巧性的东西

其三开腔  仓储大叔说系统架构~仓储模式与读写分离

搭中之面向接口是主导

IOC开始出台:主要讲Lind.DDD.IOC的兑现

EF读写分离讲一个朗诵写分离之原理和EF6是怎样促成者作用的

积存模式的特级实战分别介绍EFRepository,MongoRepository,RedisRepository和XMLRepository的实现原理

季提  大叔说框架-缓存篇

缓存的介绍,种类与贯彻原理 1
静态页缓存,使用HttpModule拦截请求,生成静态页,按URL为键进行仓储 2
数据缓存,对数据内容开展仓储,有逾期时的安,一般采取cache实现 3
分布式数据集缓存,对法进行阻拦,与IOC,AOP一起下,在道上添加缓存特性,然后真的是朗诵缓存,还是去缓存等

第五语  日志与生捕获和Dispose模式

日志的贯彻项目,文件存储,log4net存储,mongodb存储,在贯彻日志过程被运用了单例,工厂,策略等模式。
异常的破获应该是全局性的,全局的输入又有格外种注入方式,大叔介绍你的次里安事情应当加try…catch,哪些不应该加
Dispose模式的牵线

第六开腔  分布式Pub/Sub和信队列

根本对顾客模式(发布、订阅模式)进行详尽的执教,并跟豪门大快朵颐当实现的种类蒙凡是安使她的。
消息队列可以化解出现问题,它提供一个缓冲区,将横向的出现变成了纵向的行,这样好增进系统的吞吐量。

第七提  消息机制和领域事件

一个事件处理系统,让订阅和披露更灵敏介绍于项目中怎样实现又音讯发送功能的幸存,包括了Email,SMS,RTX等常用的简报机制;领域事件要封装了,现时可以完全和天地实体有效之竣工合在一起

第八言语  Redis集群与客户端应用

Redis的介绍及她的运场所,5独数据结构的介绍,服务端集群的布局,客户端集群的布置,读写分离的配置,客户端的使和如何落实信息队列。

第九叙  MongoDB集群与客户端采用

MongoDB的介绍及它的利用场所,文档型数据库的优势,以JSON和BJSON为根基对数码进行仓储,对读写性能都特别正确,向日志型数据,行为型数据都得以储存到MongoDB里,现时还会介绍复制集,切片的知识,对原生客户端的使。

第十出口  Cat集群与以

Cat上下文,它和其余数据上下文,Http上下文,文件上下文的意思是一样的,都是恃同一种对象的包,在cat里她的上下文由三只ID组
成,ROOT,Parent和Child,他们好像于数据库里之联名主键,在让大多单消息进行关联时,需要经过这些键值,我们当超过网络记录日志时,也待把
这三单对象传过去,在靶服务器上进行解析,然后立即片独消息就是整合了一个信息树了。

第十一开口  分布式文件存储和公事及污染

仅仅服务器的文件存储早都不够用了,现在犹是集群环境,一般有个行程由于服务器用于分配和针对资源,其它服务器用于存储文件;文件的上传我们拿图片,视频等开展了包装,方式客户端的调用。

第十二称  消息组件和老三着支付的合

针对通报来说,每个网站都是必需的,而其的复用也是要的,你莫容许为每个系统还出同拟发送email,sms,rtx的零件吧!
对于第三在支付以来,在电商网站尤其必要了,如何迅速的融会它们是咱提高开支效率的最主要,本讲主要说说支付宝和银联,再讨论微信支付!

第十三操  数据包和网络通讯

介绍网络通讯原理,数据包的定义,如何计划一个数据包,解决起来源网络通讯组件FastSocket的用法等

第十四讲  ORM和分布式事务

介绍ORM的打算,Linq2Sql,EF等ORM工具,数据上下文的介绍,在多表操作着,介绍要地工作以及分布式事务的利用状况!

第十五摆  MVVM和KnockoutJS

介绍MVVC设计模式,对于微软研发的KnockoutJS进行上,它是何许落实MVVM模式的,对于实现工作着我们什么样去行使它来简化页面开发。

第十六言语  任务调度Quartz

介绍如何利用Quartz实现又策,多种任务之调度机制,介绍Cron表达式的施用,如何定时,定点的实施任务,并介绍大叔开发的职责管理工具,在后台一直翻时正执行之…

第十七云  多线程与互为

叙什么时用到多线程,在利用时应该小心的地方,对出现编程的认识,并对原程序开展优化,为什么.net框架推出那么多异步版本,原因何!

合集大叔课程前16出口(学起来重新有利于)

存储大叔说系统架构_说架构设计
仓储大叔说系统架构~基础篇 仓储大叔说系统架构~仓储模式及读写分离
大叔讲框架-缓存篇 日志与甚捕获和Dispose模式 分布式Pub/Sub和消息队列
消息机制及天地事件 Redis集群 MongoDB集群 Cat集群
分布式文件存储和公事上传 消息组件和老三正支付 数据包和网络通讯
ORM和分布式事务 MVVM和KnockoutJS 任务调度Quartz

第十八提  IoC实现原理同联合的IoC容器

介绍DIP,IOC,DI,IOC容器的相干概念,如何错过领略她,在落实支付被,如何行使它们和利益是啊,如何封装一个面向autofac,unity的联的IOC容器。

第十九张嘴  webApi与安康校验

介绍因Restful的api涉及,对于Http请求进行教学,对合之用户权限进行验证,对api通讯的平安展开辨析,对她的安全性,防篡改性和唯一性进行落实。

第二十讲  领域让的统筹

老伯笔下的DDD,主要介绍实体,值对象,聚合根,领域服务,服务总线及轨道模式的定义。

第二十一唠  BootStrap和叔叔后台里的EF

要是怎样和外种类无论逢结合,讲一下角色,菜单,组织结构,用户权限,通用型数据集权限的筹划,同时介绍一下Bootstrap的布局.
后台主要说一下code first的用法

第二十二张嘴  Xamarin部署及Android开发

争以vs上安装xamrin,javaSdk,android sdk,ndk等,如何使xamarin for
android开发手机app,本讲主要说一下这些情节,大家快行动起来,一起开发APP吧!

第二十三语  Node.js和Sails.js

介绍node.js的优势以及运状况,NPM的认,使用webstorm可视化工具进行支付服务端的nodejs程序,使用sails这个框架进行快速的付出!

第二十四提  跨语言开发Thrift框架

Thrift是一个跨语言的服务配置框架,最初由Facebook于2007年开,2008年跻身Apache开源项目。Thrift通过一个中等语言
(IDL, 接口定义语言)来定义RPC的接口和数据类型,…

第二十五出口  什么样的代码需要重构

1.重命名:对类,接口,方法,属性等重命名,以使得更易理解
2.抽取代码:将方外的平段落代码抽取为任何一个方式,以让该段代码可以于其他方法调用,这是重构中深重大很…

第二十六叙  基础篇续~接口与抽象类_集合_数组_链表

接口和抽象类是何等以档次遭到应用的,技巧。 集合的门类,各集合的优势
数组和链表在啊时用到

第二十七摆  框架中因故到之设计模式

以框架设计受到,我们见面下群设计模式,这些设计模式都是怪当然的产出的,而连无是“为了模式要模式”。
主要干有针对极度工厂模式,单例模式,观察者模式,策略模式,…

第二十八说  单点统一登陆SSO的统筹

介绍SSO的概念和实现原理,解决Lind中凡哪些落实合并之SSO登陆的,相关技能
session,cookies,oauth,安全校验等。

第二十九讲  Session共享与WEB集群

Session共享的几种植方式,在框架中凡何等促成的,Web集群的牵线,WEB应用服务器集群在总体体系框架中的位置及作用。

第三十摆  数据库集群_多少并_Lind框架初衷

数据集的集聚群 双机热备(双勾对朗诵,实时同步) 读写分离(一描写多读)
SQLSERVER与moebius 数据并 数据包 数据完整性与校验 数据高并发以及队列机制
大叔Lind框架设计新衷…

父辈课程后14言语(看起再次便于)

差不多并程与并行 ,IOC原理 和合并的IOC容器 ,API安全和校验 ,领域让之设计模式
,Bootstrap和后台管理体系,Thrift,SSO,Session共享,数据集的集群等

千古更新中…

LindDotNetCore相关介绍

大爷课堂:http://www.genshuixue.com/667398328

回目录

本列表永久更新,在直播讲得了晚,大叔会拿相应的点播添加到本列表里

系模块

  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);
    }
    

    待续…
    回目录

相关文章