.NET Core开发日志——WCF Client

WCF作为.NET Framework3.0就被引入的用于构建面向服务的框架在众多项目中发挥着重大作用。时至今日,虽然已有更新的技术可以替代它,但对于那些既存项目或产品,使用新框架重构的代价未必能找到人愿意买单。

而在.NET Core平台环境中,WCF也并没有被完全列入迁移目标。WCF的服务端被搁置一旁,只有客户端已被移植入.NET Core之中。

这意味着,如果有需求在.NET Core中,尤其是非Windows系统环境,调用现有的WCF服务,也并非一件不可能的事情。

以一个实验来证明,先建一个解决方案工程,再加入两个类库项目及一个控制台应用程序。

WcfService.Contract项目,这是WCF服务的接口,即服务契约。

640?wx_fmt=png

以上三个项目皆使用.NET framework 4.5.2作为目标框架。

通过运行WcfService.Host应用程序,可以将WCF服务端启动起来。当然此服务端只能运行在Windows系统环境之上。(为了实验,建议将系统的防火墙暂时关闭,以免无法连通)

再找一个非Windows系统的环境,比如我使用的Mac Air。再创建一个控制台应用程序。

dotnet new console -o WcfClientApp

用Visual Studio Code打开工程,建议安装Nuget Package Manager插件,因为这里需要引入System.ServiceModel.Http类库。

使用快捷键Ctrl(Command)+p,输入>nuget,选中Nuget Package Manager: Add Package,输入System.ServiceModel.Http,再选取最新版本的安装选项,对应的类库便会自动下载下来。

除了这个类库之外,还需要使用之前创建的WcfService.Contract的dll文件。将其复制到某个目录下,并在csproj文件指明其具体位置即可。

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netcoreapp2.1</TargetFramework></PropertyGroup><ItemGroup><PackageReference Include="System.ServiceModel.Http" Version="4.5.3"/></ItemGroup><ItemGroup><Reference Include="WcfService.Contract"><HintPath>bin\Debug\netcoreapp2.1\WcfService.Contract.dll</HintPath></Reference></ItemGroup></Project>

WCF客户端的代码如下:

640?wx_fmt=png

将此客户端运行起来,可以看到这个实验成功了。

640?wx_fmt=png

当然WCF Client在.NET Core上的使用一定是有限制,其仅支持HTTP与TCP两种通信协议,如NamedPipe(命名管道),MSMQ这种Windows平台特有的通信协议,肯定是不被支持的。不过一般最常用的也就是这两种,所以大多数应用场景下也是够用了。

上面提到了WCF服务端不被.NET Core所支持,但如果只是想建一个SOAP的服务,还是有解决方案的。

同样是在macOS系统上,新建一个Web应用程序。

dotnet new web -o SOAPApp

通过Nuget Package Manager安装SoapCore类库,并将WcfService.dll与WcfService.Contract.dll一并引入。

<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>netcoreapp2.1</TargetFramework></PropertyGroup><ItemGroup><Folder Include="wwwroot\"/></ItemGroup><ItemGroup><PackageReference Include="Microsoft.AspNetCore.App"/><PackageReference Include="SoapCore" Version="0.9.8.1"/></ItemGroup><ItemGroup><Reference Include="WcfService"><HintPath>bin\Debug\netcoreapp2.1\WcfService.dll</HintPath></Reference><Reference Include="WcfService.Contract"><HintPath>bin\Debug\netcoreapp2.1\WcfService.Contract.dll</HintPath></Reference></ItemGroup></Project>

然后在Startup文件中注入所需的服务,并增加SOAP服务的端点。

640?wx_fmt=png

运行此Web应用程序,注意将默认的local地址改成实际的Url。

640?wx_fmt=png

再在Windows系统环境下建立一个控制台应用程序作为客户端用于检测。

640?wx_fmt=png

运行结果,同样正常,这次的的尝试完美结尾。

640?wx_fmt=png

相关文章:

  • .Net Core开发日志——Global Tools

  • .Net Core开发日志——Peachpie

  • .NET Core开发日志——Middleware

  • .Net Core Cors中间件解析

  • .NET Core开发日志——Runtime IDentifier

  • .NET Core开发日志——HttpClientFactory

  • .NET Core开发日志——从ASP.NET Core Module到KestrelServer

原文地址:https://www.cnblogs.com/kenwoo/p/9362763.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

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

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

相关文章

jzoj4279-[NOIP2015模拟10.29B组]树上路径【树形dp】

正题 题目链接:https://gmoj.net/senior/#main/show/4279 题目大意 nnn个点的一棵树求经过每个点的最长路径。 解题思路 设fif_{i}fi​表示iii子树内的最长路径。 我们第二次转移一个位置时我们枚举除了这个子树之外的其他子树&#xff0c;找到之外最大的fif_ifi​转移下去即…

纪中培训总结(2019年9月4~13日)

Day0&#xff08;4号&#xff09; 今天来到纪中&#xff0c;收拾了一下行李&#xff0c;然后来到机房&#xff0c;老师讲了一下规则&#xff0c;然后刷题去了 Day1&#xff08;5号&#xff09; 早上起来去吃了个早餐&#xff0c;喝了瓶奶&#xff0c;然后来到机房&#xff0…

jzoj4282-[NOIP2015模拟10.29B组]平方数游戏【构造】

正题 题目大意 构造一个ai{1,−1}a_i\{1,-1\}ai​{1,−1}使得最小化∣∑i1naii2∣|\sum_{i1}^na_ii^2|∣i1∑n​ai​i2∣ 解题思路 我们发现有对于一段连续的x2−(x1)2−(x2)2(x3)24x^2-(x1)^2-(x2)^2(x3)^24x2−(x1)2−(x2)2(x3)24&#xff0c;那么就有x2−(x1)2−(x2)2(x3)…

POJ3335(半平面交)

POJ3335 半平面交裸题 //poj3335 #include <cstdio> #include <cmath> #include <algorithm> #define rep(i,a,b) for(int ia;i<b;i) const double eps 1e-8; const double inf 1e20; const double pi acos(-1.0); const int maxp 50110;using namesp…

通过 Docker Compose 组合 ASP NET Core 和 SQL Server

本文模拟一个比较完整的项目&#xff0c;包括前端(MVC), 后端(WebApi)和数据库(mssql-server-linux)。通过Docker Compose 定义&#xff0c;组合并执行它们。涉及到 Docker Compose 安装&#xff0c;命令&#xff0c;docker-compose.yml文件编写&#xff0c;WebApi 和 MVC 项目…

【模拟】交换(jzoj 1518)

交换 jzoj 1518 题目大意&#xff1a; 有两个字符串&#xff08;只包含‘R’‘G’‘B’三个字符&#xff0c;且相邻的字符互不相同&#xff09;&#xff0c;现在要交换两个字符串中的一个数&#xff0c;使两个字符串内都各有3个连续且相同的字符&#xff0c;问有多少种换法 …

组合博弈学习笔记

组合博弈学习笔记 说在前边 下面的博弈题目基本就是sg函数&#xff0c;搜必败必胜态&#xff0c;找规律&#xff0c;推策略。。。没有对理论进行深入了解。HDU1527 搜索时发现&#xff0c;必败态的数对貌似有规律&#xff0c;首先他们的大小两个数的差值是逐个增加的。然后&…

winserver的consul部署实践与.net core客户端使用(附demo源码)

前言随着微服务兴起&#xff0c;服务的管理显得极其重要。都知道微服务就是”拆“&#xff0c;把臃肿的单块应用&#xff0c;拆分成多个轻量级的服务&#xff0c;每个服务可以在短周期内重构、迭代、交付。随着微服务的数量增多&#xff0c;因量变引起了质量&#xff0c;带来新…

P5075-[JSOI2012]分零食【dp,生成函数,FFT】

正题 题目链接:https://www.luogu.com.cn/problem/P5075 题目大意 mmm个糖分给AAA个小朋友&#xff0c;得到xxx个糖的小朋友可以贡献F(x)Ox2SxUF(x)Ox^2SxUF(x)Ox2SxU的贡献值。要求没有得到糖的小朋友一定是后面一段连续的序列&#xff0c;求所有方案的贡献值乘积之和。 解题…

【模拟】【递归】解压字符串(jzoj 1519)

解压字符串 jzoj 1519 题目大意&#xff1a; 有一串压缩过的字符串&#xff0c;将有重复的压缩成了s(~~)的形式&#xff08;s是一位数&#xff0c;例子&#xff1a;123123123压缩成‘3&#xff08;123&#xff09;’&#xff09;&#xff0c;现在要你解压出来&#xff0c;然…

Educational Codeforces Round 48

Educational Codeforces Round 48 C.Vasya And The Mushrooms 思路很简单&#xff0c;走法有一个统一形式就是先上下走&#xff0c;然后到某个位置左右一个来回。然后就推一下&#xff0c;后边那段的递推式子&#xff0c;枚举改变走法的位置即可。看出做法之后发现要推个式子&a…

微软发布Azure Service Fabric Mesh公开预览版

Service Fabric现在在云端有了一个新亲戚——Azure Service Fabric Mesh&#xff0c;Azure的一个完全托管服务&#xff0c;开发人员现在可以基于此服务部署和运行容器化应用程序。在去年五月的Build 2018大会期间首次亮相后&#xff0c;现在开始进行公开预览。在Build 2018大会…

【DP】楼梯(jzoj 1520)

楼梯 jzoj 1520 题目大意&#xff1a; 有n个楼梯&#xff0c;跳跃高度初始值是1&#xff0c;当往后一层时&#xff0c;跳跃高度就2&#xff0c;当跳跃只能跳跃到当前能跳到楼梯&#xff0c;且跳跃之后&#xff0c;跳跃高度变回1&#xff0c;问跳到第n层最少花几步 样例输入…

P5502-[JSOI2015]最大公约数【分治】

正题 题目链接:https://www.luogu.com.cn/problem/P5502 题目大意 nnn个数&#xff0c;求一个L,RL,RL,R使得最大化(R−L1)∗gcd(aL,aL1,aL1...aR−1,aR)(R-L1)*gcd(a_L,a_{L1},a_{L1}...a_{R-1},a_R)(R−L1)∗gcd(aL​,aL1​,aL1​...aR−1​,aR​) 解题思路 考虑分治&#x…

牛客网暑期ACM多校训练营(第五场)

牛客网暑期ACM多校训练营&#xff08;第五场&#xff09; A. gpa 二分答案&#xff0c;然后就转化为是否满足\(\frac {\sum s[i]c[i]}{\sum s[i]} ≥ D\), \(\sum s[i]c[i] ≥ \sum s[i]D\), \(\sum s[i](c[i]-D) ≥ 0\) 显然科目越少gpa越高&#xff0c;于是去掉最小的k个判断…

.NET Core TDD前传: 编写易于测试的代码 -- 缝

有时候不是我们不想做单元测试, 而是这代码写的实在是没法测试....举个例子, 如果一辆汽车在产出后没完成测试, 那么没人敢去驾驶它. 代码也是一样的, 如果项目未能进行该做的测试, 那么客户就不敢去使用它, 即使使用了也会遇到“车祸”. 为什么要测试/测试的好处它可以尽早发现…

【数位DP】好数(jzoj 1521)

好数 jzoj 1521 题目大意&#xff1a; 定义好数为转换为二进制后&#xff0c;有至少三个连续的位相同的数&#xff0c;现在要求一个范围内的好数个数 样例输入 0 16样例输出 5数据范围限制 0 < Low < UP < 2147483647 提示 提示&#xff1a; 对于50%测试&…

P4294-[WC2008]游览计划【斯坦纳树】

正题 题目链接:https://www.luogu.com.cn/problem/P4294 题目大意 n∗mn*mn∗m的网格&#xff0c;每个格子的修建费用不同&#xff0c;要求修建费用最小连接所有关键点。 解题思路 设fs,i,jf_{s,i,j}fs,i,j​表示目前连接关键点状态为sss&#xff0c;在(i,j)(i,j)(i,j)这个位…

「LibreOJ NOIP Round #1」旅游路线

「LibreOJ NOIP Round #1」旅游路线 题目链接 做法&#xff1a; 首先肯定要预处理些东西&#xff0c;来使单词询问达到\(o(logn)\)或者\(o(1)\)的复杂度&#xff0c;又因为距离这个东西的范围太大&#xff0c;我们考虑预处理一些费用相关的东西。考虑\(dp[s][j]\)表示从s出发花…

【招聘(北京)】东方国信 工业互联网

从工业领域的业务出发&#xff0c;结合现有的物联网、大数据、云计算等技术进行体系化建设。自主研发的智能检测传感器、自主开发的部署在生产单位的专家系统、自主设计通讯交互协议、自主开发的工业物联网通讯框架、自主开发的分布式存储中间件、自主研发的机理模型&#xff0…