QQ群號: 784332913
視頻地址:https://www.bilibili.com/medialist/play/ml740444734
視頻筆記對應(yīng)地址:https://pan.baidu.com/s/1sMG2qA1TUPTjOj247MobFw
SOA面向服務(wù)架構(gòu)
第一階段:面向?qū)ο螅航鉀Q代碼維護性問題【設(shè)計模式】
第二階段:面向組件:解決代碼復(fù)用性問題【html=>一個頁面分成了各個組件(ES6,JSX,SCSS),讓js成了一個面向?qū)ο蟮恼Z言】
第三階段:面向服務(wù):解決不同語言系統(tǒng)之間的不能信息互通的問題。
舉例:java開發(fā)的OA系統(tǒng),asp開發(fā)的商城系統(tǒng),asp.net開發(fā)的訪客系統(tǒng),想要互通信息
WCF在SOA面向服務(wù)架構(gòu)浪潮下的出現(xiàn)

從圖中可以看出:
1、WCF是微軟整合.net下所有分布式技術(shù)的結(jié)果
2、WCF本質(zhì)上是一個Asp.Net Web Service,但是它又兼容了restful模式。
3、WCF出現(xiàn)在ws標(biāo)準(zhǔn)盛行時,后來restful模式盛行,微軟不得已適配了restful模式。
創(chuàng)建第一個WCF程序
創(chuàng)建WCF服務(wù)庫
單純的WCF項目,沒有宿主,
1、新建項目一>模版一>WCF一>WCF服務(wù)庫
2、F5 或者 點擊定居工具欄啟動 調(diào)試功能。

3、WCF測試客戶端簡單測試demo接口:
選中“GetData()”方法,更改value值為5,點擊調(diào)用查看接口返回結(jié)果。

創(chuàng)建宿主程序—控制臺程序
1、選中解決方案一>右鍵一>選中添加一>選中新建項目一>模版一>Visual C#一>控制臺應(yīng)用程序(.Net Framework)。

注意:一線碼農(nóng)WCF系列課程1里面SOA思想下各語言發(fā)展的宿主都是可以的。
2、項目添加引用“System.ServiceModel” 和 宿主項目“WcfServiceLibrary4”


3、在Program.cs引入
using System.ServiceModel;
using WcfServiceLibrary4;
4、啟動ServiceHost
//創(chuàng)建ServiceHost,參數(shù)是它承載的service名字
ServiceHost host = new ServiceHost(typeof(Service1));
host.Open();
5、把WCF服務(wù)庫的App.config拖拽到宿主程序名字上,替換宿主程序App.config。
WCF服務(wù)庫的App.config和宿主程序App.config里面的“add baseAddress = ” 的端口號改的不一樣
6、更改baseAddress地址更像一個接口地址
<system.serviceModel>這個節(jié)點下內(nèi)容都是wcf自動生成的
serviceBehaviors標(biāo)簽里面的httpGetEnabled="True"是指:http能否訪問元數(shù)據(jù)
<service name="WcfServiceLibrary4.Service1">WCF服務(wù)庫的實例名字
<endpoint address="" binding="basicHttpBinding" contract="WcfServiceLibrary4.IService1">contract表示W(wǎng)CF服務(wù)庫的接口名字
7、F5 或者 點擊定居工具欄啟動 調(diào)試功能。

注意:如果是同一個電腦直接瀏覽器訪問baseAddress,如果是不同電腦訪問需要把baseAddress里面的localhost改為開發(fā)電腦的IP。
但是請注意這時候還不是常用的http傳輸json的接口,所以不能用postman測試。
創(chuàng)建WCF客戶端:服務(wù)引用
點擊客戶端項目的引用一>右鍵一>添加服務(wù)引用一>地址(服務(wù)端baseAddress活著訪問成功標(biāo)志圖里svcutil開頭的地址)一>點擊"GO",獲取服務(wù)操作一>輸入新的命名空間NewServiceName一>點擊確定
在Program.cs的main函數(shù)編輯代碼:
NewServiceName.ServiceClient client = new NewServiceName.ServiceClient();
var result = client.GetData(10);
Console.WriteLine(result);
Console.Read();