请选择 进入手机版 | 继续访问电脑版

如何在 ASP.Net Core 中对接 WCF

在 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,需要在类和方法上分别加上:ServiceContract 和 OperationContract,下面的代码展示了一个契约类仅包含一个契约方法的代码定义。
    [ServiceContract]    public interface IAuthorService    {        [OperationContract]        List GetAuthorNames();    }
接下来定义一个 AuthorService 服务类实现一下 IAuthorService 接口,下面的代码展示了 AuthorService 类的具体定义。
    public class AuthorService : IAuthorService    {        public List GetAuthorNames()        {            List lstAuthors = new List();            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 来进行服务引用,如下图所示:




当点击图中的 Finish 之后,VS会自动帮你完成一系列的初始化,比如从SOAP服务中下载元数据,生成客户端的代理代码,自动生成 Reference.cs 文件,等等。




好了,接下来可以在 Controller 中初始化 SOAP Service ,然后再调用 Service 端的 GetAuthorNamesAsync() 方法,如下代码所示:
        [HttpGet]        public async Task 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 的更多细节,我会在后面的文章中和大家细聊。

译文链接:https://www.infoworld.com/article/3323584/how-to-consume-a-wcf-soap-service-in-aspnet-core.html

回复

使用道具 举报

你可能还喜欢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|美国服务器

GMT+8, 2021-4-18 09:50 , Processed in 1.261625 second(s), 35 queries .

快速回复 返回顶部 返回列表