WCF總結編程
一、WCF(原代號爲Indigo)是一個用於建立和運行分佈式系統的技術集合,使用它能建立安全的、可靠的、跨平臺的的分佈式解決方案。它的面向服務的編程模型,整合了.Net平臺下以往所有的分佈式開發技術,是微軟在SOA領域推出的一款主打產品。跨域
二、WCF是微軟爲SOA(Service-Oriented Architecture)而設計的一套完整的技術框架安全
三、經過WCF技術能夠建立服務服務器
跨進程網絡
跨機器框架
跨網絡分佈式
四、WCF 提供了建立安全的、可靠的、事務服務、多種協議的統一框架網站
五、WCF 整合和擴展了現有分佈式系統的開發技術,如Microsoft .Net Remoting、Web Services、Web Services Enhancements (WSE)等等。編碼
六、優勢:spa
開放性好,跨平臺。
使用80端口穿透防火牆
數據格式簡單
七、缺點:
安全性不高
不能方便的跨域訪問
不支持雙工模式
對於複雜的數據類型沒法進行傳遞,須要使用中
間件技術進行擴展或,自行開發序列號支持
Wcf在該方面作成了很大的改進
八、WCF通訊模型
a) 服務端能夠提供的服務
i. 指定一個規則
ii. Contract
iii. 協定,契約,合同
b) 協定分類
i. Service Contract ----服務契約
1. 定義了服務的類型,用一個接口或類訂閱WCF的Service Contract。
ii. Operation Contract
1. 定義了WCF 服務中提供給外部系統訪問的方法
iii. Data Contract ----數據契約
1. 自定義的複雜數據類型
iv. Message Contract ----消息契約
1. 用於控制SOAP消息的規則
v. Fault Contract -----錯誤契約
1. 用於捕獲服務端錯誤消息
九、宿主(Service Hosting):咱們把承載WCF服務的進程稱爲宿主(Service Hosting)
常見的寄宿方式:
1、使用應用程序(winform 、控制器)開放。
2、使用IIS(Web項目、Web網站、ASP.NET MVC)開發。
3、WCF服務應用程序
十、WCF中的基本概念-ABC
a) A:Address ------地址決定了服務的位置,解決了服務尋址的問題;
i. where -服務在哪裏
b) B:Binding -------綁定實現了通訊的細節,包括網絡傳輸模式、消息編碼,以及其餘爲實現某種功能(好比安全、可靠傳輸、事務等)對消息進行的相應處理
i. how -經過什麼協議取得服務
c) C:Contract -------契約是對服務操做的抽象,也是對消息交換模式以及消息結構的定義
i. what -定義的服務是什麼
十、Binding的做用
a) 指明經過什麼方式(協議)鏈接WCF 服務。
b) 經常使用協議
11、Address地址的做用
A) 經過一個URI Endpoint告訴潛在的WCF service的調用者如何找到這個WCF Service。
B) 表現形式
十二、消息模式
a) 客戶端與服務器之間是進行消息通信的方式
b) 三種主要消息模式
i. 單向 One Way
ii. 請求/答覆Request/Reply
iii. 雙工Duplex
1三、單向模式
a) One Way Call
b) 指的是發送端負責把消息發送給對方而且收到本地發出信息的確認消息以後,就完成交互的方式。
1四、特色
a) 未知:消息是否最終到達服務的終節點
b) 已知:消息發送成功
c) 通常只能爲返回void 的操做指定單向消息交換
d) Operation Contract Attribute的IsOneWay 屬性須要設置爲True,默認爲false.
1五、請求/答覆模式
a) Request/Reply
b) 客戶端發送一個消息而且接收一個返回消息來完成一次交互
1六、特色
a) 請求方(客戶端應用程序)發出請求之後,一直等待對方(WCF方)答覆。
b) 這是默認的模式
[OperationContract]
void Method();
1七、雙工模式
a) duplex
b) 客戶端和服務端均可以任意地向對方發送消息,而對方也能夠以任意的次序來接收消息。
c) 服務端 :
i. 1 須要設計用於回調的服務協定,
ii. 2 將該回調協定的類型分配給ServiceContractAttribute Attribute的CallbackContract property。
d) 客戶端:
i. 1 要對該接口實現
1八、經典錯誤
解決方案:把wcf配置文件中的「<serviceDebug includeExceptionDetailInFaults="false" />」修改爲「<serviceDebug includeExceptionDetailInFaults="true" />」
Wcf步驟
Demo1、在wcf接口中實現對數據的增刪改查
1、引入類庫「DBHeleper」
2、鏈接字符串
3、在接口定義增刪改查四種方法
4、實現接口的鏈接字串
5、實現接口中的增刪改查
6、啓動項目