首頁>技術>

在 REST API 出現之前,SOAP (Simple Object Access Protocol) 一直都是基於 web 的標準協議,雖然現在 REST 大行其道,但在平時開發中總會遇到對接第三方服務採用的是基於SOAP協議的場景,在這篇文章中,我們將會討論如何在 ASP.Net Core 中對接 WCF。

建立 WCF

WCF 是一個安全可靠的訊息平臺,它提供統一的程式設計模型便於開發基於面向服務的應用程式,你可以使用 WCF 構建基於 SOAP 協議的服務,並使用 xml 作為資料交換格式,或者基於 REST 的 json 資料交換格式。

這一節中首先建立一個 WCF SOAP 服務,在建立專案模板的時候選擇 WCF Service Application 即可,如下圖所示:

值得注意的是,WCF 通常由以下幾個部分組成。

Service 類

Service 契約

Operation 契約

Endpoints 端點

Hosting 環境

當要使用 WCF,需要在類和方法上分別加上:ServiceContractOperationContract,下面的程式碼展示了一個契約類僅包含一個契約方法的程式碼定義。

    [ServiceContract]    public interface IAuthorService    {        [OperationContract]        List<string> GetAuthorNames();    }

接下來定義一個 AuthorService 服務類實現一下 IAuthorService 介面,下面的程式碼展示了 AuthorService 類的具體定義。

    public class AuthorService : IAuthorService    {        public List<string> GetAuthorNames()        {            List<string> lstAuthors = new List<string>();            lstAuthors.Add("Joydip Kanjilal");            lstAuthors.Add("Steve Smith");            lstAuthors.Add("Michael Stevens");            return lstAuthors;        }    }

這就是構建 WCF 服務的所有步驟,接下來就可以開啟瀏覽器對服務進行簡單測試了。

在 ASP.Net Core 中使用 SOAP 服務

與傳統的 ASP.NET 不同,ASP.Net Core 中並沒有 Add Service Reference 選項去新增對 WCF 服務地址的引用,新的操作方式需要利用 Microsoft WCF Web Service Reference Provider 來進行服務引用,如下圖所示:

好了,接下來可以在 Controller 中初始化 SOAP Service ,然後再呼叫 Service 端的 GetAuthorNamesAsync() 方法,如下程式碼所示:

        [HttpGet]        public async Task<string[]> Get()        {            ServiceReference1.AuthorServiceClient authorServiceClient = new ServiceReference1.AuthorServiceClient();            var data = await authorServiceClient.GetAuthorNamesAsync();            return data;        }

WCF Connected Service 是 Visual Studio 的一個擴充套件外掛,它允許在 ASP.Net Core 專案中實現對 WCF 服務的引用,當然,除了WCF還可以引用 Azure Storage 服務,關於 Azure Storage 的更多細節,我會在後面的文章中和大家細聊。

13
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 不想搞Java了5年的經驗面試10分鐘Java為什麼這麼難