TL;DR I有一个现有的WCF服务,托管为Windows,我想对其进行修改,以便现有的.NET Framework4.7应用程序和一个新的.NET Core2.2应用程序都可以调用它。解决这个问题最简单的方法是什么?
完整解释:我有一个现有的Web (称为'A'),运行在.NET Framework4.7上。它还在.NET 4.7上与现有的WCF服务'B‘( Windows )进行对话。他们通过NetTcpBinding进行通信。
我正在.NET核心2.2上构建一个新的Web 'C‘。我需要它与现有的服务B对话。我可以根据需要修改A和B,但时间和金钱是有限的。另外,B使用了一个只运行在.NET框架上的API,因此它可以将而不是转换为在.NET核心上运行,这让我非常沮丧。
B服务很小。它的全部暴露合同是5种方法。安全真的很小。这是一家小公司的内部网应用程序。
什么是最快,最简单的方式来修改现有的WCF服务B(和A,如果需要),以便它可以同时与应用程序A和C?
我猜我应该只在应用程序A和B上使用更改WCF绑定,这样我就可以很容易地在C上使用HttpClient;如果是,那是哪一种绑定,以及如何使用HttpClient与其接口?另外,将WCF绑定从NetTcpBinding更改为其他会咬我的东西有什么隐藏的“陷阱”吗?
发布于 2019-06-06 07:49:40
是的,考虑到Core与WS绑定不兼容,我们可以使用Basichttpbinding和WebHttpBinding发布服务。
使用basichttpbinding创建服务很简单,只需用下面的代码片段替换System.servicemodel部分即可。
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpBinding" scheme="http" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
然后,我们可以通过添加服务引用来调用服务。
或者我们使用Webhttpbinding发布restful样式服务,就像Asp.Net WebAPI一样。
然后,我们可以通过构造带有请求体的HTTP请求GET/POST/PUT/Delete来调用服务。核心和.netframework都支持它,因为Http协议是通用的。
https://stackoverflow.com/questions/56462686
复制相似问题