WCF服务web
引用命名空间 system.servcemodelredis
后缀SVC数据库
终结点endpoint编程
A address WCF服务地址windows
B binding 绑定 实如今Client和Service通讯的全部底层细节,好比用什么通信协议,传递什么数据格式设计模式
C Contract 合同 Contract的主要的做用是暴露某个WCF Service所提供的全部有效的方法。Contract其实是把每一个方法的转化成为相对应的消息。api
Service配置节[必须有]:配置服务、接口和终结点。每一个Service都会有如下两个属性。name:名称空间.类名[服务的具体实现类]。behaviorConfiguration:一个在behaviors节点中找到的名称。数组
Binding配置节[无关紧要]:配置绑定,如http,tcp等。缓存
Behavior配置节[无关紧要]:配置行为,如认证等。安全
WCF在通讯过程当中有三种模式:请求与答复(默认)、单向、双工通讯。
2.客户端向服务端发送求,可是无论服务端是否执行完成就接着执行下面的程序
WEBAPI(restful)
webapi和mvc 的区别
Web API更倾向于基于HTTP协议的服务,直接返回用户的数据请求。MVC是建站的一种框架,倾向于返回用户的页面请求。WebApi更加轻量级。
寄宿方式不一样:mvc只能寄宿在IIS上,而webapi能够寄宿在IIS、windows服务
SOA 面向服务的架构
SOAP webservce 通信协议
Http请求方式使用特性
特性路由(2.0) Attribute Route [Route(“api/controller/action”)]
可使用[FromUri]属性,使Web API来从查询字符串中获取复杂类型的值,
使用[FromBody]属性可使Web API从请求主体获取原始类型的值
接口安全知识
Accesstoken:客户端使用给定的帐号密码请求服务,服务端对帐号密码按必定加密规则进行加密,而后缓存到服务端并设置过时时间,最后返回给客户端,客户端可将accesstoken进行缓存,须要是没必要没都要去从新请求。
时间戳:每一次请求带上请求的时间戳,和服务端时间进行比较,超过必定时间可视为请求超时。
签名:客户端按照必定的加密规则将accesstoken、请求的参数进行加密生成签名,在服务端可验证签证是否正确来保证请求的参数没有被篡改。
网站安全知识
XSS(跨站点脚本攻击)
攻击方式:写入脚本到数据库
解决方法:对请求的参数作过滤
CSRF 跨站点请求伪造
攻击方式:用户登陆网址A之后,而后在未登出的状况下打开网站B,网站B经过带有网站A的登陆的登陆信息伪造请求网站A
解决方法
使用POST请求,每一次请求都要一个TOKEN参数,TOKEN是一个随机加密的参数.
每次刷新页面TOKEN也会刷新
C#基础知识 (封装、继承、多态)
值类型:直接在栈中开辟空间存放数据
整数:小数,bool,char,stuct
引用类型 在堆中开辟空间存放数据,在栈中存放指向堆中数据的地址
字符串,类,数组
GC回收机制:当内存堆中数据没有被栈中任何地址引用,则堆中数据就会被回收掉
String/StringBuilder的区别
const 常量/Readonly 只读
区别const声明一个变量时必须初始化,而readonly声明一个变量能够在构造方法里面初始化
const只能在初期就使用常量初始化好。对于每一次编译后的结果,const的值是固定的,而readonly的值是能够在运行的时候才肯定值的
抽象方法(abstract)/虚方法(virtual)
抽象方法必须在派生类中重写,虚方法在派生类中重写也可不进行重写(override)
接口(interface)/抽象类(abstract class)
相同点
区别
委托(delegate)、事件(event)
Action:无返回值的委托
Void NoParaMethod(string para){}
Action<string> a=new Action<string>(NoParaMethod);
Func:有返回值的委托
Bool HaveParaMethod(string para){return false;}
Func<string,bool> a=new Func<string,bool>(HaveParaMethod);
多播委托:同时指向几个方法的委托
Void MethodA(string para){}
Void MethodB(string para){}
Action<string> a=new Action<string>(MethodA);
a+=MethodB;
泛型约束(where T:Class)
T:结构
类型参数必须是值类型。能够指定除 Nullable 之外的任何值类型。有关更多信息,请参见使用能够为 null 的类型(C# 编程指南)。
T:类
类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。
T:new()
类型参数必须具备无参数的公共构造函数。当与其余约束一块儿使用时,new() 约束必须最后指定。
T:<基类名>
类型参数必须是指定的基类或派生自指定的基类。
T:<接口名称>
类型参数必须是指定的接口或实现指定的接口。能够指定多个接口约束。约束接口也能够是泛型的。
T:U
为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。这称为裸类型约束
Linq、Lambda 表达式
特性 Attribute Sealed Class MyAttribute:Attribute
多线程、Lock
四种建立多线程的方式
设计模式(单例模式,工厂模式,观察者模式)
SQL相关
优化
减小没必要要的查询字段
关联查询和排序尽可能使用主键,由于主键通常是索引
查询条件尽可能使用到索引,避免使用模糊查询
复杂的业务和查询尽可能使用视图和存储过程
使用存储过程的好处
维护方便(不用修改程序)、执行快(预编译)
数据库读写分离(高并发)
主(负责写、一台、负责同步数据到从数据库)从(负责读、可多台)数据库
对于读操做为主的应用,使用读写分离是最好的场景,由于能够确保写的服务器压力更小,而读又能够接受点时间上的延迟(同步有延时)。
ADO.NET五大对象
Connection 链接对象
Command 命令对象,指示要执行的命令和存储过程
DataReader 是一个向前的只读的数据流
DataAdapter 是功能强大的适配合器,支持增删改查的功能
DataSet 是一个数据级对象,至关于内存中的一张表或多张表
索引
汇集索引(惟一索引)
非汇集索引
存储过程
Create proc_page(@pagesize int,@pageindex)
As
Select num.* from (select row_number() over(order by id desc) num,* from tablename) info
Where between @pagesize*(@pageinde-1)+1 and @pagesize*@pageindex
事务
Begin transaction
Commit transaction
Rollback transaction
视图
Create View View_name
As
Select * from A
A表数据插到B表
B表存在 insert into B select * from A
B表不存在 select * into B from A
关键字
Convert(char(10),getdate())
Select @@Identity
Decalre @page int
Select distinct name from A
If exsits()
Row_number() over(order by id desc)
Case when 条件 then A else B end
Select a from A group by a having max(a)>0
Average 平均值
ASP.NET MVC 路由机制(Route)和过滤器(Filter)
Http请求
HttpMoudle
HttpHander
Httpapplication
Httpcontext
Resqust
Response
四种过滤器
IAuthorizationI进入contrller和action以前
IActionFilter
IExceptionFilterI
ResultFilter
缓存相关(redis)