C# .net用法大全
2025-06-24 13:24:37 / c罗世界杯图片从事多年的开发,对于.net可以说有一定的总结,有关于教科书般的文档,献于交流.本文整理了当前企业web开发中的管理系统,商城等系统的常用开发技术栈。
C#常见运算符一元运算符(+、-、!、~、++、--)算术运算符(*、/、%、+ 、 – )移位运算符(<< 、>> )关系和类型测试运算符(==、!=、<、>、<=、>=、is 和 as)逻辑运算符(&、^ 和 | )条件逻辑运算符(&& 和 || )空合并运算符(??)条件运算符(它也称为三元运算符,?: )赋值运算符(=、+=、-=、!=、/=、&=、|=)
C#常见语句块Try(用于捕捉在块的执行期间发生的各种异常)Checked 语句和 Unchecked(用于控制整型算术运算和转换的溢出检查上下文)Lock(获取某个给定对象的互斥锁,执行一个语句,然后释放该锁)Using(获取一个或多个资源,执行一个语句,然后释放该资源)
C#常见类修饰符abstract抽象类sealed密封类static静态类partial分部修饰访问修饰符(public、protected、internal 和 private )
C#常用预处理指令#region:指定一个可展开或折叠的代码块#endregion:它标识着 #region 块的结束#define: 它用于定义一系列成为符号的字符#undef:它用于取消定义符号#if、#else、#elif、#endif:用于创建复合条件指令
委托Delegate、Lambda、Action、Func、Predicate、事件EventArgs
泛型泛型类、泛型方法、泛型约束、泛型接口、逆变与协变
LinqLinq to sql / Linq to DataSet / Linq to Object / Linq to Xml迭代器yield与懒加载Lazy
反射反射拼接SQL语句、反射转换Json/Datatable...、序列化反序列化(ISerializable)、反射动态调用dll、反射动态配置扩展
常用类IO类、Json.NET、Http辅助类(HttpClient、Restsharp、WebClient、WebRequest)、爬虫类、文件压缩类、条形码 、金额、时间、Assembly等类的实现
常用接口掌握IEnumerableIEnumerator实现Foreach.ICollectionIList集合.IComparableIComparer实现比较方法.IDictionary键值对.IDisposable释放非托管资源
数据层原生的ADO.NETConnections. 用于连接和管理针对数据库的事务。Commands. 用于发出针对数据库的SQL指令。DataReaders. 用于从SQL Server数据源读取只进流的数据记录。DataSets. 用于针对结构型数据,XML数据和关系型数据的存储,远程处理和编程。DataAdapters. 用于推送数据到DataSet,并针对数据库协调数据。...ORM框架EFDapper:最常见的轻量级ORM框架(开源)Nhibernate:最常见的重量级ORM框架...
异步和多线程Thread/ThreadPool/Task/Await/Async/Parallel...多线程多线程中的同步、并发、异常等处理...TPL异步异步编程模型(APM)基于事件的异步模式(EAP)...
数据结构算法线性表二叉树栈与队列...
ASP.NET Mvc框架Routing路由Binding模型绑定new ChildActionValueProviderFactory(),new FormValueProviderFactory(),new JsonValueProviderFactory(),new RouteDataValueProviderFactory(),new QueryStringValueProviderFactory(),new HttpFileCollectionValueProviderFactory()...AOP面向切面(常用特性(Attribute)及自定义特性)元数据验证基类System.ComponentModel.DataAnnotations.ValidationAttributeSystem.ComponentModel.DataAnnotations.CompareAttributeSystem.ComponentModel.DataAnnotations.CustomValidationAttributeSystem.ComponentModel.DataAnnotations.DataTypeAttributeSystem.ComponentModel.DataAnnotations.MaxLengthAttributeSystem.ComponentModel.DataAnnotations.MinLengthAttributeSystem.ComponentModel.DataAnnotations.RangeAttributeSystem.ComponentModel.DataAnnotations.RegularExpressionAttributeSystem.ComponentModel.DataAnnotations.RequiredAttributeSystem.ComponentModel.DataAnnotations.StringLengthAttributeSystem.Web.Security.MembershipPasswordAttribute.FilterIAuthenticationFilter(验证过滤器 MVC5)验证是否合理请求,是否合理用户IAuthorizationFilter(授权过滤器)AuthorizeAttributeRequireHttpsAttributeValidateAntiForgeryTokenAttributeChildActionOnlyAttribute...IActionFilter(动作过滤器-前-后)ActionFilterAttribute...IResultFilter(结果过滤器-前-后)ActionFilterAttribute...IExceptionFilter(例外过滤器)HandleErrorAttribute(在FilterConfig就已被注册)...RazorViewEngine视图引擎WebApi
数据库技术数据库服务端、客户端、图形界面管理工具、数据库语言(PL-sql,T-sql,sql)、数据库安全等概念视图、存储过程、游标、中间表、触发器、计划任务等常用技术数据库分库、拆表、分布式、集群、备份、故障调控等方案数据库三大范式与反范式RBAC(Role-Based Access Control,基于角色的访问控制)权限模型数据库机制索引存储引擎事务四大特性(ACID) 原子性 Atomicity 一致性 Consistency 隔离性 Isolation 持续性 Durability并发产生的问题脏读幻读不可重复读...解决方案—隔离级别 读未提交Read uncommitted 读已提交Read committed (mssql、oracle) 可重复读Repeatable read(mysql) 串行化Serializable锁机制 种类 粒度 加锁方式 ...数据库辅助工具:Power Designer、EZDML、ER Studio、Rose、Microsoft Visio...
关系型数据库Oracle 最贵,功能最多,不开源,最安全...Mysql 免费,功能一般,开源,相对不安全...MsSql(SqlServer) 中等贵,支持平台最少,不开源,使用最方便...PostgreSQL 与其他关系型数据库相比,PostgreSQL独特的地方是它支持高度需要的、完整的面向对象以及关系型数据库的功能Sqlite 一个自包含的、基于文件的数据库,可移植性非常好 ...
非关系型数据库(Nosql-Not Only Sql)MongoDb:是一个基于分布式文件存储的数据库Hbase:属于hadoop(分布式系统)生态圈的组件,能存储海量数据Cassandra:优异的列式存储NoSQLRedis:基于内存的数据存储系统,支持多种类型存储,适用于高并发场合Memcache:基于内存的数据存储系统,高性能分布式内存缓存服务,适用于高并发场合...
面向服务架构SOA通过服务整合来解决系统集成的一种思想.WSDL Web Services Description Language是一个用来描述Web服务和说明如何与Web服务通信的XML语言。为用户提供详细的接口说明书UDDI Universal Description,Discovery and Integration统一描述、发现和集成, 提供一种发布和查找服务描述的方法。UDDI 数据实体提供对定义业务和服务信息的支持。SOAP Simple Object AccessProtocol,简单对象访问协议,基于XML 和 HTTP 用于在应用程序之间进行通信的一种通信协议Web Services:基于SOAP协议,数据格式是XMLWcf/Wcf Rest:可以不依赖于IIS,基于SOAP,支持多种通信协议,但配置繁琐测试工具:SoapUI...REST REpresentational State Transfer ,表现层状态转移,是一种架构风格,提供了设计概念原则和约束。RESTful 满足这些原则和条件的就称RESTful架构 Web API:RESTful的实现,一个用于构建HTTP服务的框架 测试工具:Fiddler、Postman、Jmeter...微服务 是SOA的一种实现,更侧重于组件化和服务化JSON-RPC Remote Procedure Call Protocol,远程过程调用协议,高性能二进制协议,比RESTful要高效(类似于Web Services的使用风格)
面向对象OOP三大基本特性 继承,封装,多态 抽象类abstract和接口interface的各种用法及实现 Virtual、abstract、override、New、extern等关键字的含义及用法 设计模式的应用...六大基本原则(高内聚,低耦合) 单一职责原则SRP(Single Responsibility Principle) 开放封闭原则OCP(Open-Close Principle) 里式替换原则LSP(the Liskov Substitution Principle) 依赖倒置原则DIP(the Dependency Inversion Principle) 接口分离原则ISP(the Interface Segregation Principle) 最少知识原则(Least Knowledge Principle)(也称:迪米特原则)
23种设计模式 创建型 结构型 行为型
存储 浏览器自身缓存技术(cache control,与服务器约定,js /css等缓存) Session(SessionId)(会话,为了弥补http协议的无状态特性) Cookie(浏览器存储,为了弥补http协议的无状态特性) Localstorage(Html5新特性 浏览器本地存储,为了弥补Cookie存储不足) Application(服务器全局变量) Static(依赖于IIS,进程回收会丢失) Cache(服务器缓存)
软件架构 MVC ASP.NET MVC MVP 事件模型 ASP.NET Web form System.UI.Page ViewState ... WinformMVVM 在.Net中(主要应用于WPF、Silverlight、WP7) Prism - Brian Lagunas微软产品经理,微软MVP,一个跨平台的桌面和移动MVVM开发框架,开源。 Catel - Catel是一个专注于MVVM(WPF,Silverlight,Windows Phone和WinRT)和MVC(ASP.NET MVC)的应用程序开发平台。 Catel的核心包含一个IoC容器,模型,验证,纪念,消息中介,参数检查等。 ...在前端中 Angular Vue Knockout React ...
平台 MONO .Net Core CoreCLR CoreRT for .NET Core .NET Core Base Class Library ... .Net Framework .NET Framework Base Class Library(BCL基类库) System.Web(ASP.NET的核心) ASP.NET与IIS管道模型: 经典模式IIS5/IIS6: IIS管道模型 ASP.NET管道模型 ...
集成模式IIS7:HttpContext...IIs的常用功能及使用及配置:请求筛选、失败请求跟踪等.Net MVC生命周期Httphandler、HttpModule、Globar的编写及应用......OWIN解耦Open Web Server Interface for .NET,定义了一种中间件在管道中用于处理请求和相关响应的标准方式,是种规范,用于解耦Web 服务器和Web 应用程序。OWIN的实现:Katana(由微软早期开发的开源OWIN组件集合)OWIN Layer(定义的一系列层)Application(应用程序)Middleware(中间件)Nanacy.OwinWebApiSignalrFubuMVCSimple.WebDuoVia.Http...Server(服务)Microsoft.Owin.Host.SystemWebMicrosoft.Owin.Host.HttpListenerHelios(Asp.Net5以后就是Microsoft.AspNet命名空间)...Host(宿主)IISCustom HostOwinHost.exeNode.Js(connect-owin)....NET CLR(Commen Language Runtime)公用语言运行时核心:公共语言基础(Common Language Infrastructure,CLI),提供了定义的规范接口、与工具1.项目源代码被 .Net Framework编译器( csc , C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe )编译成EXE或者是DLL文件。2.被CSC编译后的EXE/DLL文件叫做 IL文件。Intermediate Language (IL)中间语言,在.Net中,称之为 Microsoft IL(MSIL)微软中间语言(右键对项目进行生成的时候实际上就是这一步)3.CLR会将MSIL通过JIT(Just In Time)编译器进行第二次编译,将其编译成本地平台的CPU指令。(如果拥有能在Linux运行的CLR,代码就能跨平台运行).C#源码——(CSC编译器)——MSIL文件(dll/exe)——(CLR中的JIT编译器)——CPU执行Http协议OSI网络通信物理层以二进制数据形式在物理媒体上传输数据数据链路层传输有地址的帧,错误检测功能网络层为数据包选择路由IP,ICMP,RIP...传输层提供端对端的接口TCP、UDP...会话层建立或解除与其它接点的联系表示层数据格式化,代码转换,数据加密应用层HTTP,FTP,SMTP...Http状态码1xx:信息提示,表示请求已被成功接受,继续处理,请求范围100~1012xx:成功,服务器成功响应请求,请求范围200~2063xx:重定向,请求范围300~3054xx:发送一些服务器无法受理的东西5xx:一条有效请求,但服务器挂了常用HTTP消息头(Http Header)Request请求头Authorization:Basic base64646464646464=== (验证)Accept-Encoding:gzip (指定浏览器可以支持的web服务器返回内容压缩编码类型)Cache-Control:max-age=60(指定请求和响应遵循的缓存机制,max-age为 当前60秒内再次访问不会去服务器请求)Cookie:ZJF(该请求域名下的所有cookie值一起发送给web服务器)Content-Type:application/x-www-form-urlencoded(是以什么格式来传输,请求的与实体对应的MIME信息)Accept:text/plain(指定客户端能够接收的内容类型)Range:bytes=0-999(常用作断点续传,设置请求的指定范围,服务器则返回Content-Range: bytes 0-999)Referer: (当前请求来源的网页地址)Origin: (和Referer差不多,只存在于POST请求)Host:: (指定请求的服务器的域名和端口号)User-Agent::Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36(当前客户端的信息)Expect:100-continue(握手失败,请求头域类型不匹配,由此导致的API接口调用失败)Response返回头Connection: keep-alive(连接方式,很重要)Access-Control-Allow-Origin: *(跨域,很重要)Set-Cookie: UserID=admin; Max-Age=3600; Version=1Content-Encoding:gzip实时通信方案.Net Signalr+Ajax轮询CometWebSocket(SuperWebSocket,WebSocket服务器)SSE(Server-sent Events服务器发送事件)...域名解析DNS解析流程常见 域名解析记录A记录:用来指定域名或子域名对应的IP地址记录,保证域名指向对应的主机CNAME记录:别名记录,该记录允许你为自己的主机设置别名MX记录:邮件路由记录,当发送邮件时,Mail 服务器先对域名进行解析,查找mx记录TXT记录:是域名系统(DNS)中由域名托管服务商存储的一种资源记录,其作用是防止垃圾邮件滥用行为AAAA记录:指定网站域名对应的IPv6地址记录NS记录:Name Server,用于指定域名是由那个DNS服务器来进行域名解析...网站优化JavaScript和Css模块化CSS Sprites:将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,将N次请求变成一次请求划分资源域合理运用缓存技术静态文件(图片、css、js、html )缓存: cdn技术、squid缓存服务器、浏览器(客户端)缓存HTML5 application cahce API离线缓存应用层缓存:Cache、Redis缓存数据库、memcache缓存数据库数据库缓存:数据库本身的缓存机制...了解浏览器工作机制:Css放顶部,Js放底部,压缩Html,能配置Expires/Cathe-Control,ETag,使用 gzip 压缩用ISP(互联网服务提供商)提供的文件存储等技术提高DNS域名解析速度掌握SEO确保网站是可以被索引的: robots.txt,Robtots 标签确保网页是可以被索引的:确保爬虫可以看到所有的内容、使用描述性的锚文本的网页擅长标签编写:带有 H1 标签、关键词放 URL 中、加粗文字、Descripiton 标签、图片文件名、ALT 属性带有关键词...删除不必要的HTTP响应头移除X-AspNet-Version HTTP头移除X-AspNetMvc-Version HTTP头移除X-Powered-By HTTP头移除Server HTTP头...用户数据分析PV IP UV访问流量来源浏览器移动设备......默认隐藏段(拒绝客户端访问)App_Browsers:包含浏览器定义(.browser文件),ASP.NET会使用这些文件来识别个别浏览器并判断它们的功能App_Code:包含用于公用程序和商务对象(Business Object) , (例如, .cs ; .vb和.jsl文件)的程序源代码,要将它编译为应用程序的一部分App_Data:包含应用程序数据文件.包括MDF文件,XML文件与其他数据库文件App_GlobalResources:包含资源(.resx和.resources文件),这些资源会编译成具有全局范围的组件App_LocalResources:包含资源(.resx和.resources文件),这些资源会与特定的页面,拥护控件或应用程序的主页面(MasterPage)相关联App_WebReferences:包含参考合约文件(.wsdl文件),结构描述(.xsd文件)和探索文件(.disco和.discomap文件),可定义Web应用以用语应用程序Bin:包含空间,组件或你要在应用程序中应用其他程序代码的已编译组件(.dll文件).在[Bin]文件夹中以程序代码表示的任何类, 都会自动在应用程序中应用到Web.config:用来储存Asp.net Web应用程序的配置信息,通过继承关系,每个Web.config将配置设置应用到它所在的目录及虚拟子目录下...特殊目录Bin:是二进制binary的英文缩写,用来存放编译的结果Debug 调试版本 开发环境 有调试信息Release 发行版本 代码更小,执行更快,编译更严格,更慢 没有调试信息Obj:是object的缩写,用于存放编译过程中生成的中间临时文件,用来加快编译速度DebugRelease需要掌握的前端知识Html5+Css3JQuery插件语法Js实现封装-继承-多态实现一个简单的MVVM框架实现一个简单的js模板引擎Angular路由、模块化、控制器、指令、作用域、模板、链式函数、过滤器、服务、依赖注入...React虚拟DOM,组件化......信息加密技术:单向散列加密(杂凑函数、Hash函数)把任意长的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种函数,用于产生消息摘要,密钥加密MD5,SHA,MAC,CRC...对称加密使用的密钥(yue)只有一个,发收信双方都使用这个密钥对数据进行加密和解密DES,3DES,AES,TDEA,Blowfish,RC5,IDEA...非对称加密(公私钥加密)指加密和解密使用不同密钥的加密算法,分公钥和私钥RSA,Elgamal,背包算法,Rabin,D-H,ECC...SSLSecure Socket Layer,安全套接字层,保护Web通讯,以实现客户端和服务器之间的安全通讯HTTPS:是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版Let's Encrypt,国外一个公共的免费SSLStartSSL,被各大浏览器所支持,但只免费一年...TLSTransport Layer Security,安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性,建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本Web安全渗透注入Sql注入、命令表达式注入、SSRF注入、XSS注入、CSRF注入、XXE注入...渗透注入检测工具DirBuster目录渗透工具,专门用于探测Web服务器的目录和隐藏文件Nmap网络连接端软件,网络连接端扫描软件,用来扫描网上电脑开放的网络连接端Pangolin Sql注入工具AppScan业界领先的web应用安全监测工具(软件界面可以选择中文,不过是收费的)...欺骗ClickJacking(点击劫持)透明iframeHTTP头——X-Frame-Options图片掩盖接口暴力破解DDOS文件安全配置文件、备份文件暴露读取、未授权修改、未授权上传逻辑安全未授权访问、上下流程顺序可乱序、无限递归二进制安全(VS中有性能分析工具)堆栈溢出(很多人都碰过)、缓存区溢出、内存泄漏Web认证第三方认证Oauth2.0SSO单点登录同源策略CAS解决方案IIs/.Net认证BasicDigest AuthenticationWindowsForms解决方案代码管理Git:免费、开源的分布式版本控制系统,用的人最多Svn:集中式的版本控制系统,一个强大的备份服务器TFS:微软源代码管理工具自动化测试UI测试VS自带的UI测试工具...单元测试(Unit Testing)Tdd测试驱动开发(Test-Driven Development)VS自带的单元测试工具,Xunit,Nunit,Moq,Faker.Net性能分析VS自带的性能分析工具,MiniProfiler压力测试概念吞吐率(Throughput)QPS每秒查询率(Query Per Second)TPS每秒事务数(Transaction Per Second),并发用户数...VS自带的压力测试工具,HttpTest4Net,Jmeter...安全检测自动化部署VS的Web Deploy,Jenkins...监控平台自动化故障调控分布式负载均衡什么时候才会负载均衡(什么是负载均衡)负载均衡的几种实现OSI层面,在网络7层协议基础上实现的负载均衡软件层面负载均衡算法权重轮循均衡权重随机均衡响应速度均衡最少连接数均衡处理能力均衡DNS响应均衡集群负载均衡服务器应用服务服务器文件系统服务器数据库服务器缓存服务器...分离模式前后端分离动静分离数据库读写分离服务分离业务分离...故障可弹性服务一致性中心化配置C#脚本引擎CS-Script:可做源码式插件开发,规则引擎,流程引擎......插件开发Mvc Area插件开发OSGi.NET...消息队列消息队列 - Message Queue(MQ),是一种应用程序之间的通信机制,将部分无需立即回调获取结果,并且耗时的操作,使用异步处理的方式提高服务器的吞吐量及性能.如秒杀活动,上传任务,日志记录等.MSMQ微软官方推出的消息队列框架RibbitMq基于 AMQP 系统协议,由 Erlang 语言开发,开源的消息队列,支持AMQP,XMPP, SMTP, STOMP等协议,使用简单ZeroMQ一个轻量级的消息通信组件,侧重于点对点的消息传输上Redis虽是一个Key-Value的NoSQL数据库,但本身也有Queue队列功能...依赖倒置框架基于面向对象6大原则之 - 依赖倒置原则DIP - 工厂模式实现IOC - inversion of control 控制反转,调用者不再创建被调用者的实例,由框架(容器)创建DL - Dependency Lookup 依赖查找,容器提供回调接口和上下文环境给组件DI - Dependency Injection 依赖注入,容器创建好实例后再注入调用者.Autofac最为流行的IOC框架之一,轻量且高性能Unity最为流行的IOC框架之一,微软出品Spring.NET以Java版的Spring框架为基础,提供了多种功能Ninject一个轻量级的注入框架...任务调度Quartz开源的作业调度框架,是Quartz的C#移植版本...日志记录Log4net从java平台下移植过来的非常优秀的日志记录框架Nlog相对于Log4net,配置更为简单Microsoft.Framework.LoggingASP.NET5中的日志框架集...搜索引擎Lucene.net是Lucene的.net移植版本,它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构ElasticSearch是基于Lucene架构面向企业搜索应用的扩展,提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口盘古分词中文分词组件,作者肖波HubbleDotNet开源数据库全文搜索引擎,作者肖波...工作流引擎(Workflow - WF)Business Process Management - BPM 业务流程管理.Windows Workflow Foundation - WWF微软的工作流产品,提供一套工作流引擎和VS解决方案自带的流程设计器NetBPM从JBpm1移植到.NET平台下的开源工作流项目CCFlow国产开源工作流.Net常用工具及插件Colorful-IDE:可以更换VS的壁纸ReAttach:可以快速附加到进程(开源)C# Outline:VS代码块折叠插件Reshaper:即时分析代码质量,消除错误,安全地更改代码库等OzCode:VS调试时候的辅助插件LINQ Pad:用来测试Linq查询的插件Rextester:在线测试C#代码SmartAssembly:.Net加密混淆工具ConfuserEx:.Net加密混淆工具ILSpy:.Net反编译工具Reflector :.Net反编译工具