Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使企业WCF应用程序中的通信协议现代化的最简单方法_C#_.net_Wcf_Enterprise - Fatal编程技术网

C# 使企业WCF应用程序中的通信协议现代化的最简单方法

C# 使企业WCF应用程序中的通信协议现代化的最简单方法,c#,.net,wcf,enterprise,C#,.net,Wcf,Enterprise,在我们的企业桌面应用程序中,我们自2010-2011年以来一直在积极使用WCF,我们对此非常满意。 然而我们看到WCF越来越不受欢迎,它在.NET Core中不受支持,它迟早会取代.NET Framework,所以我们开始考虑在我们的应用程序中替代WCF。 我们想替换通信协议,但不想重写所有现有服务。我们有由合作伙伴编写的产品扩展,因此所有合作伙伴都需要重新编写其所有服务,这将花费大量时间。虽然我们不介意重写服务注册、启动、调用等基础设施… 我们使用的WCF的主要功能,以及我们将来肯定想要的功能

在我们的企业桌面应用程序中,我们自2010-2011年以来一直在积极使用WCF,我们对此非常满意。
然而我们看到WCF越来越不受欢迎,它在.NET Core中不受支持,它迟早会取代.NET Framework,所以我们开始考虑在我们的应用程序中替代WCF。
我们想替换通信协议,但不想重写所有现有服务。我们有由合作伙伴编写的产品扩展,因此所有合作伙伴都需要重新编写其所有服务,这将花费大量时间。虽然我们不介意重写服务注册、启动、调用等基础设施…
我们使用的WCF的主要功能,以及我们将来肯定想要的功能:
-在客户端和服务器之间共享合同-我们控制应用程序的客户端和服务器端,它们都是用C#编写的,因此我认为对我们来说,拥有合同是一种优势
-操作调用器:我们使用它们为每个WCF调用添加日志记录、在事务中包装调用、更改线程的区域性等等

有没有一种方法可以围绕现有的服务、数据契约和服务契约编写一种包装器,以便能够像现在一样调用它们,但在幕后使用另一种现代通信协议:gRPC、Web API等?

我研究过类似的“包装器”围绕我现有的WCF服务的想法,这些服务在基本HTTP绑定上运行,就像旧的SOAP web服务一样

如果不对底层代码进行重大重写,似乎无法将协议更改为更现代的协议(例如gRPC或基于JSON的web API)。例如,尽管您可以将WCF绑定切换到WebHttpBinding和操作/数据契约,以使您的服务表现得更像现代的RESTful API,但以任何方式将当前代码移植到ASP.Net MVC可能更有意义


我研究的另一个替代方案是通过实现自定义绑定来扩展WCF,以更改底层协议。但我认为,最终的努力可能会超过重写

一个Restful Api来取代WCF服务怎么样?你错过的每一件事情都可以通过不同的方式实现。单独研究每一项,请参见副本作为起点。Web API是一项新技术,而WCF已经完成(wpf也已经完成,但仍在广泛使用。直到xamarin桌面表单问世)。看看比较表,看看哪一个最适合您的需求:@JanMer我们将继续使用服务方法,就像在WCF中一样。使用RESTAPI重写应用程序将需要几年时间…@CodeCaster我已经在我的问题中添加了一句话,为什么IpcServiceFramework不是一个解决方案。你还认为它是重复的吗?我知道我能以某种方式实现我的要求,但这就是为什么我要求它——得到一些建议。