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)