如何在 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,需要在类和方法上分别加上: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 来进行服务引用,如下图所示:

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

好了,接下来可以在 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 的更多细节,我会在后面的文章中和大家细聊。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是区块链? 区块链的入门教程~

区块链&#xff08;blockchain&#xff09;是眼下的大热门&#xff0c;新闻媒体大量报道&#xff0c;宣称它将创造未来。可是&#xff0c;简单易懂的入门文章却很少。区块链到底是什么&#xff0c;有何特别之处&#xff0c;很少有解释。下面&#xff0c;我就来尝试&#xff0c;…

linux提升权限命令提示符,win10如何直接使用命令提示符提高管理员权限?

原标题&#xff1a;win10如何直接使用命令提示符提高管理员权限?在使用普通的命令提示符时&#xff0c;如果遇到需要管理员权限的操作&#xff0c;往往需要重新打开一个具有管理员权限的命令提示符页面进行操作。而在Linux操作系统中&#xff0c;可以通过输入su来获取系统最高…

require引入js vue_请教 关于使用require 引入vue 和公共js的问题

移动端布局 计算font-size的1、引入公共样式失败。没有去计算2、aa 是vue 引入成功。 但是 我以后一个文件需要一个vue 文件 应该怎么引入好点啊。 怎么分解开进行引入?3、在vue的情况下。 引入Mint UI我理解是在main的文件里面加载vue Mint ui 和一些公共样式。 在页面引入ma…

探索 .NET Core 依赖注入的 IServiceProvider

在上一篇文章中&#xff0c;我们学习了Microsoft.Extensions.DependencyInjection中的IServiceCollection&#xff0c;包括服务注册转换为ServiceDescriptors&#xff0c;然后添加到集合中。探索 .NET Core 依赖注入的 IServiceCollection[1]在本文中&#xff0c;我们会学习 IS…

《WinForm开发系列之控件篇》Item1 BackgroungWorker

cranejuan的专栏 BackgroundWorker实现原理 winfom組件---BackgroundWorker转载于:https://www.cnblogs.com/Sue_/articles/1657254.html

如何快速高效地学习互联网新技术

我们生活在一个振奋人心的时代&#xff0c;区块链、人工智能、大数据&#xff0c;现在各种新技术层出不穷&#xff0c;那么如何快速高效地学习互联网新技术呢&#xff1f;我认为首先思想要主动求变&#xff0c;敢于跳出自己的舒适区&#xff0c;对任何技术都抱有开放的心态。贪…

linux上用的端口转发工具,linux下最简单好用的的端口转发工具

linux下最简单好用的的端口转发工具解压安装tar zxvf rinetd.tar.gzmakemake install编辑配置vi /etc/rinetd.conf0.0.0.0 8080 172.19.94.3 80800.0.0.0 2222 192.168.0.103 33891.2.3.4 80 192.168.0.10 80说明一下(0.0.0.0表示本机绑定所有可用地址)将所有发往本机8080端口的…

.NET Core用数据库做配置中心加载Configuration

本文介绍了一个在.NET中用数据库做配置中心服务器的方式&#xff0c;介绍了读取配置的开源自定义ConfigurationProvider&#xff0c;并且讲解了主要实现原理。1、 为什么用数据库做配置中心在开发youzack.com这个学英语网站的时候&#xff0c;需要保存第三方接口AppKey、JWT等配…

abaqus质量缩放系数取值_ABAQUS/Explicit质量缩放(MASS SCALING)使用心得  [转simwe]...

概要准静态分析或某些动态分析中&#xff0c;少数尺寸较小的单元控制稳态时间增量&#xff0c;为提高计算效率&#xff0c;ABAQUS/Explicit常采用质量缩放的方法。质量缩放可用于&#xff1a;1、缩放整个模型&#xff0c;单个单元或单元组的质量2、多步分析中&#xff0c;缩放每…

linux 修改默认脚本,linux环境初始脚本

#//把下面内容&#xff0c;做成init.sh文件&#xff0c;放到liunx任意目录下&#xff0c;用bash ./init.sh#//执行&#xff0c;或用chmod -R 777 init.sh#//赋权后&#xff0c;再用./init.sh#//执行#!/bin/bash## 初始centOS系统环境# 1. 在线安装一些编译环境# 2. 关闭防火墙#…

python lock_python lock一步步教你理解Python装饰器

请仔细看我们的decorator实例。我们定义了一个接受单个参数some_func的名为outer的函数。在outer内部我们定义了一个名为inner的嵌套函数。inner函数打印一个字符串然后调用some_func&#xff0c;在#1处缓存它的返回值。some_func的值可能在每次outer被调用时不同&#xff0c;但…

Abp Vnext Pro 的 Vue 实现版本

Abp Vnext Pro 的 Vue 实现版本开箱即用的中后台前端/设计解决方案知识点.Net Core5.0Abp Vnext 4.x ,Ant Design, Vue2.xMysql,Redis,Hangfire,ES(日志可选),Nocas(可选,未集成,计划中),RabbitMq(未集成,计划中)微服务架构设计, DDD 实践容器化 CI CD系统功能用户管理角色管理…

2018年,该转行AI工程师吗?

如此火爆的AI&#xff0c;会不会像Android和iOS一样&#xff0c;五年后归于平淡&#xff1f;转型AI真的有必要吗&#xff1f;2017年&#xff0c;AI就像一个点石成金的神器&#xff0c;所有的行业&#xff0c;任何的创业&#xff0c;抑或是职位背景&#xff0c;只要沾着这个词&a…

Exchange 2010 DAG转载

http://bisheng.blog.51cto.com/409831/270739转载于:https://blog.51cto.com/delkar/273586

linux tomcat8 启动慢,Linux系统下Tomcat8启动速度很慢的解决方法

前言最近在工作中遇到一个问题&#xff0c;在Linux下Tomcat 8启动很慢&#xff0c;且日志上无任何错误&#xff0c;在日志中查看到如下信息&#xff1a;Log4j:[2017-08-2715:47:11] INFO ReadProperty:172 - Loading properties file from class path resource [resources/jdbc…

使用 Tye 辅助开发 dotnet 应用程序

newbe.pro 已经给我们写了系列文章介绍Tye 辅助开发k8s 应用&#xff1a;使用 Tye 辅助开发 k8s 应用竟如此简单&#xff08;一&#xff09;使用 Tye 辅助开发 k8s 应用竟如此简单&#xff08;二&#xff09;使用 Tye 辅助开发 k8s 应用竟如此简单&#xff08;三&#xff09;使…

postgresql点云las_PostgreSQL 调研

摘要本文介绍了Postgresql的功能和集群构建方案&#xff0c;及集群读写分离、负载均衡和分库功能的实现方法。1. 简介PostgreSQL是一个功能强大的、可靠性高、能保证数据完整性和一致性对象的开源关系数据库系统。它可以运行在所有主流的操作系统上&#xff0c;包括Linux、UNIX…

如何正确执行碎片整理或在群集共享卷(CSV)上使用CHKDSK命令

在使用CHKDSK和碎片整理操作期间&#xff0c;需要将CSV设置为维护模式&#xff0c;此时只有协调器访问磁盘。微软提供了cmdlet的Repair-ClusterSharedVolume选项&#xff0c;该选项可以自动将某个磁盘设置为维护模式&#xff0c;并执行chkdsk /磁盘整理操作&#xff0c;然后再关…

你感兴趣的大学专业真相 | 16万人参与调查,看完80%都哭了

俗话说&#xff0c;隔行如隔山学科专业也是如此你以为我的专业十分高大上事实却是我也不知道我在学啥下面就由各个专业的同学为你揭秘他们专业的真相~人文社会类法学▼泛泛SaMa&#xff1a;在我们法学界&#xff0c;唯有秃头这件事&#xff0c;不分男女不墮紅塵&#xff1a;第一…

linux多内核调度,linux-kernel – 如何在Linux内核(Samsung Exynos5422)中实现异构多处理(HMP)调度?...

码&#xff1a;检查#ifdef CONFIG_SCHED_HMP下的源代码主要在kernel/sched/core.c之内A(不是那样)简要概述&#xff1a;big.LITTLE cpu可以配置为2种操作模式&#xff1a;> IKS – 内核切换器(也称为cpu迁移)> GTS – 全局任务调度(也称为big.LITTLE MP)GTS是异构的操作形…