.net架构师高级编程技术汇总

汇总.net相关学习使用知识:

好记性不如烂笔头

1.架构师知识汇总

2..net core 知识介绍

3..net架构师的技能及需掌握的高级编程技术

4.编程哪些事儿?从普通开发到架构师,补齐短板

5.asp.net 反射reflection(原理读元数据,3种加载方法,反射的几种调用方法,反射在MVC,ORM中的应用)

6.asp.net 高级应用 泛型generic(定义,原理,约束,缓存,协变,逆变)

7..NetCore 微服务技术栈

8.C#6-c#7 知识点使用汇总

9.html,css 知识汇总

 

.net架构师的技能:

1..net跨平台技术:
1.1 asp.net core 源码解读:IOC 容器,kestrel监听管道,http管道中间件,鉴权授权(jwt,identityServer4),router&endport,mvc,filter,action,result,view,设计模式
1.2 前后的分离:vue,core webapi,o/rm,8打扩展,

        Filter:(middleware,router,filter[middleFilter,AuthorFilter,resourceFilter,exceptionFilter,actionFilter,resultFilter],

       ioc,日志组件log4,view引擎,缓存
1.3 abp.vnext:架构分析,内置组件,微服务实践(consul,ocelot,docker,k8s,elk分布式日志)

2. 微服务技术:
1. 微服务用到的组件:nginx,consul,ocelt,skywalking全链路追踪,分布式日志(excetpionless,elk),分布式配置中心(apollo),jenkins(CI/CD,搭建,git+kenkins+harbor),docker,kubernetes,grpx

3.分布式计技术:
1. nosql:redis,mongodb,rabbitmq,elasticsearch,nfs,ELK,分布式锁,分布式事务CAP

4.数据库性能调优:
1.压测工具:jmeter,banchark,
2.clr,多线程(await/async),数据结构(线性表,链表,hash,集合,二叉树,图),排序算法(冒泡排序,插入排序),查找算法(线性查找,二分查找)

arrary,list,set,zset,dictionary

public static SecurityInfo GetSecurityInfoEx(string security)
{
if (SecurityInfos == null)
{
return null;
}

if (_dicSecurityInfo == null)
{
_dicSecurityInfo = SecurityInfos.ToLookup(k => k.Security, v => v).ToDictionary(k => k.Key, v => v.FirstOrDefault());
}

if (security.EndsWith(".SH"))
{
security = security.Replace(".SH", ".SSE");
}
if (security.EndsWith(".SZ"))
{
security = security.Replace(".SZ", ".SZSE");
}

if (_dicSecurityInfo.ContainsKey(security))
{
return _dicSecurityInfo[security];
}

return null;
}

 

5.定时作业:hangfire,querz

 

6.架构师涵养:
1.会系统架构(高性能,高可用,高扩展,高伸缩,高安全)
2.DDD(将复杂的系统通过领域边界,分为不同的子领域,便于理解分析页面,通过单一职责原则同一元素之干一件事(分类,方法),实现高质量代码--高内聚底耦合),

工具应用,微服务拆分实际,
3. 项目架构(需求分析-客户用户开发业务分析,架构设计(流程梳理,逻辑梳理,数据视图,物理视图),框架搭建(技术选型,项目分层,框架整合)
4.devops:配置管理持续集成,自动化测试,构建部署,敏捷项目3355,

  • DevOps,持续集成,持续交付,就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠,提高开发和运维的效率。
  • 瀑布模型:设计--开发--测试--发布
  • 敏捷模型:设计--【开发-测试】-【开发-测试】-【开发-测试】--发布
  • Devops: 设计--【开发-测试-发布】-【开发-测试-发布】-【开发-测试-发布】
  • 蓝绿发布--灰度发布---20% 发布--做到无感发布,有问题及时返回

-------------------------------
高级编程技术:
1..net5
1.c#5-9最新语法
2.泛型generic,反射reflection,特性attribute,委托delegate-event,lambda-linq,
3.多线程thread,await/async,

 1.Thread是C#对线程操作封装好的工具类。
 2.线程池(ThreadPool),创建了多个线程对象,需要用的时候直接从线程池中取,避免了对象的创建和销毁等代价(享元设计模式)。节约资源 提升性能,控制线程数量,防止滥用。+
 3.Task是基于任务的异步编程模型。使用的还是线程池里面的线程。
 4.async/await是C#保留关键字,需要结合Task使用,async/await是语法糖,本质上其实是ContinueWith()。
使用await Task可以充分的利用有限的CPU资源。在进行IO操作的时候应该尽量使用await Task。
async用于标识异步方法,方法内部有两种情况:
   4.1、没有await:调用方将等待异步方法执行完毕才能接着往下执行;
   4.2、包含await:调用方执行异步方法,遇到await后,调用方可以立马往下执行,不需要等待异步方法执行完毕;

5. 表达式目录树expression,io/Serialize,加解密

  1.  Serialize:
  2. 1、在进程下次启动时读取上次保存的对象的信息
  3.   2、在不同的AppDomain或进程之间传递数据
  4.   3、在分布式应用系统中传递数据
  5. 常见的序列化的方法:
  6.   1、BinaryFormatter
  7.   2、SoapFormatter
  8.   3、XML序列化

 

2.设计技术:
4.pop,oop,aop,ioc,
5.设计原则:迪米特法则,依赖倒置,接口隔离,里氏替换,开闭原则
6.GOF23设计模式:结构型,行为型,创建型(单例模式,三大工厂,原型模式)

设计模式分为三大类:

  创建型模式,关注对象的创建,转移到其他第三方创建,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
  结构型模式,关注类与类间的关系,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
  行为型模式,关注对象与行为的分离,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

  设计模式的六大原则:

原则 解释
单一原则 (SRP) 一个方法,一个类,一个类库,一个项目,只做一件事
开放-封闭原则(OCP) 软件实体(类、模块、函数)可以拓展,但是不可修改
依赖倒转原则(DIP) 
A.高层模块不应该依赖底层,两个都应该依赖抽。B.抽象不应该依赖细节,细节依赖抽象
里氏代换原则(LSP) 子类型必须能够替换掉它们的父类型
迪米特法则(LoD)

如果两个类不必直接通信,那么这两个类不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可通过第三者发起这个调用

最少知道原则:学校只管理班级(不管理学生),班级只管理学生

合成/聚合复用原则(CARP) 尽量使用合成/聚合,尽量不要使用类继承


7.数据库设计:3大范式,PD,

  •  第一范式(确保每列保持原子性):所有字段值都是不可分解的原子值
  • 第二范式(确保表中的每列都和主键相关):一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表
  • 第三范式(确保每列都和主键列直接相关,而不是间接相关)

8.主从复制:发布订阅,读写分离,分库分表,垂直拆分,水平拆分
9.MVC5:IOC-DI,4大filter,路由,日志log4,mvc5源码解读
3.框架技术:
10.O/RM:dapper,sqlsugar,ef(映射,linq,延时加载,上下文声明周期,事务,数据访问层,读写分离支持)
11.分布式服务:core webapi(swagger,路由,权限认证,扩展ioc,filter,grpc(prote buffer,双向流,多路复用,http2
12.webservice(iis+xml+http),wcf(tcp/ip+json),webapi(http+json),grpc(http2+proto bufer)
13.IOC:IOC/DI,手写ioc,内置ioc,autofac,
14.hangfire,quart-z
15.微服务技术:nginx,consul,ocelot,jwt,docker,k8s
16.全文检索:elsearch
4.高并发:
17.集群负载均衡:nginx
18.redis:
19.mongodb


20.rabbitmq: 消息生产者确认,消息消费者确认,消息持久化

1.直接交换器,工作方式类似于单播,Exchange会将消息发送完全匹配ROUTING_KEY的Queue,写日志,需要分支处理就可用用这个交换机

2.fanout类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中。发布、订阅,广播,一对多
一个fanout1路由绑定多个queue1 bind to fanout1,queue2 bind to fanout1

Topic路由:
Exchange绑定队列需要制定Key; Key 可以有自己的规则;Key可以有占位符;*或者# ,*匹配一个单词、#匹配多个单词,在Direct基础上加上模糊匹配;
usa.news usa.# usa.*

Header Exchange
headers类型的Exchange不依赖于routing key与binding key的匹配规则来路由消息,而是根据发送的消息内容中的headers属性进行匹配。 在绑定Queue与Exchange时指定一组键值对以及x-match参数,x-match参数是字符串类型,可以设置为any或者all。如果设置为any,意思就是只要匹配到了headers表中的任何一对键值即可,all则代表需要全部匹配。
不需要依赖Key
更多的时候,像这种Key Value 的键值,可能会存储在数据库中,那么我们就可以定义一个动态规则来拼装这个Key value ,从而达到消息灵活转发到不同的队列中去。。。
Class-Student China-Wuhan 存储在数据库中


5.直播技术:
21:流服务云平台:流媒体采集:本地,视频流,直播,点播

 22.k8s: 自动化容器关联工具,关联容器,有ui和命令行工具;master(分配工作)--node(承接工作任务)--pod(启动,停止,关闭)

           容器实例太多:扩容,缩容--自动化;失效转移--宿主机挂了,自动迁移;滚动发布;监控;

           k8s作用:1.自动调用:可以将容器部署到集群的任意一个节点;

                             2.自动扩容:

                              3.滚动发布:

                               4.自动修复:

           1.nodes:worker1

            2.Pods: 里面是容器,容器里是发布的服务

            3.replica sets:副本集:

            4.jobs:

 

              MASTER:APIServer,controller,schedule

 

 23.ELK:

           ElasticSearch:他是一种分布式日志系统:logstash,kibana elasticsearch

         

           E:ElashticSearch:它是一个数据库,nosql的一种,实现高亮分词;

           L:logstash:它是一个收集工具,收集各种各样的数据;

           K:kibana:它是一个界面化的管理工具,自带好多功能,如查询,筛选,索引的周期管理;

           60%做日志系统,40%做订单管理

  

             redis:内存数据库,8种数据结构;

             mongodb:redis额mysql之间的一种数据库,有些存在内存,有些存在硬盘;10亿数据;json存储

              es:可以存储各种数据,包含json,20亿数据==500G

             elasticsearch:   index--type--document--field,支持http请求,restfull风格

             database--table--row--column

            www.elastic.co         

 24.JWT:

1. 登录写入凭证
2. 鉴权就是找出用户
3. 授权就是判断权限
4. 退出就是清理凭证
https://jwt.io/

 

25.webService,WCF,Webapi,CoreWebapi,Proto Buffer的区别:

  1. PB 是一种语言无关的高性能序列化框架,基于 HTTP/2 + PB, 保障了 RPC 调用
  2. 的高性能。
  3. 一个高性能,开源的,跨语言的RPC框架
  4. 基于 Http/2 传输协议(支持流)
  5. Protocol buffers高效序列化(JSON / XML)
  6. Http/2

1 HTTP Header的压缩,采用的是HPack算法

2 HTTP/2的Server Push,非常重要的一个特性

3 请求的pipeline

4 修复在HTTP 1.x的队头阻塞问题

5 在单个TCP连接里多工复用请求

多方式对比

1. WebService:最早-门槛最低,soap+xml累赘,只Http,依赖IIS

2. .NetRemoting:RPC--.NET RPC(限制多)---性能高

3. WCF—集大成者,各种服务各种协议—XML 重---.NET5移除WCF(未来可能又有了)

4. WebApi&Core WebAp

5. gRPC 高效基于http2(header压缩)+PBuffer

Http/2:高性能—专属序列化格式---多路复用双向流---

gRPC对js不是很友好,性能也不总是比webapi好

(gRPC数据量越大,相对性能越好)

内部交互,用gRPC

外部数据,用core webapi

 

------------------IOC-DI----------
DIP:依赖倒置原则:高层依赖抽象,不应依赖具体细节,封装转移,好处是:
面向对象:1,一个方法满足多资类型,支持下层扩展
只有抽象,没有细节,好扩展

IOC控制反转:把上端对下端的依赖,转移到第三方容器(工厂+配置文件+反射)
DI依赖注入:在构造对象时,将对下端依赖的对象自动初始化并注入(构造函数注入,属性注入,方法注入

IOC控制反转是目标效果
DI依赖注入是手段;

如何使用Unity
nuget:unity
容器三部曲:添加容器并实例化容器,注册类型,获取实例

 

项目技术,高级知识,架构知识,不用业务的项目采取不同的架构
开发管控:CI/CD,DevOps,k8s+larb
.netframework,.netcoer,移动开发

desktop,web,mobile,game,iot,ai

 

00.快速走完这段路:
初级--中级--高级工程师(35岁):
==》
架构师(整体思维,宏观把控),
CTO
产品经理
技术总监
项目经理
培训:
架构师(整体思维,宏观把控,项目架构负责人,高级开发),设计好,技术好,口才沟通好;35岁后,让年龄成为你的优势,而不是成为你的劣势!

 

 ----------------------------------------------------3.管理职责--------------------------------------------------

1.知识很重要,她虽然不能直接给你财富,但是可以给你很多机会,活到老学到老

2.作为负责人,你需要dui项目的整体规划,你需要有技术人员的视野,有产品经理的思维,要能够和用户打好交道,想用户所想,做用户所需.

3.创业这件事情对我来说就像和一群志同道合的人去征服一座野山,可能过程需要披荆斩棘,可能结果不一定能登顶,但是这个事情的不确定性和它能带来成就感都非常令人着迷

 

------------------------------------------------------第3方框架-----------------------------------------------------------

https://dotnetchina.gitee.io/furion/  一个特别好用的.netcore框架

*** 👉 xiaonuo:https://gitee.com/xiaonuobase/snowy 业务架构 架构原理图 数据架构 应用架构 技术架构 部署架构 效果图
DEMO:https://vue.xiaonuo.vip/mgr_user https://vue.xiaonuo.vip
- 👉 Vben-Admin:https://vvbin.cn/doc-next/
DEMO :https://vvbin.cn/next/#/login

*** admin.net: https://gitee.com/zuohuaijun/Admin.NET
demo:http://www.dilon.vip:8866/file
https://gitee.com/zhengguojing/admin-net-sqlsugar

👉 Furion: https://dotnetchina.gitee.io/furion
👉 Admin.NET: https://gitee.com/zuohuaijun/Admin.NET
👉 xiaonuo:https://gitee.com/xiaonuobase/snowy
👉 k-form-design:https://gitee.com/kcz66/k-form-design
👉 MiniExcel:https://gitee.com/dotnetchina/MiniExcel
👉 SqlSugar:https://gitee.com/dotnetchina/SqlSugar
- 👉 IdGenerator:https://github.com/yitter/idgenerator
- 👉 ua-parser:https://github.com/ua-parser/uap-csharp/
- 👉 Zack.EFCore.Batch:https://github.com/yangzhongke/Zack.EFCore.Batch
- 👉 OnceMi.AspNetCore.OSS:https://github.com/oncemi/OnceMi.AspNetCore.OSS
http://ruoyi.vip/

 

ui,设计:ado.XD,蓝狐,windows环境下运行

posted @ 2021-06-09 21:30  大树2  阅读(2)  评论(0编辑  收藏  举报