自2010-2011年以来,我们在企业桌面应用程序中一直在积极使用WCF,对此我们感到非常满意。
但是,我们看到WCF变得越来越不受欢迎,.NET Core不支持WCF,迟早将替换.NET Framework,因此我们开始考虑在应用程序中替换WCF。
我们想替换通信协议,但是我们不想重写所有现有服务。我们有合作伙伴编写的产品扩展,因此所有这些扩展都需要重新编写其所有服务,这将花费大量时间。虽然我们不介意重写服务注册,启动,调用等基础结构,但...
我们使用的WCF的主要功能以及将来肯定要拥有的功能:
-客户端和服务器之间的合同共享-我们同时控制应用程序的客户端和服务器端,并且两者均使用C#编写,因此我认为对于我们而言,签订合同是一个优势
-操作调用程序:我们使用它们为每个WCF调用添加日志记录,将调用包装在事务中,更改线程的区域性等
有没有一种方法可以围绕现有服务,数据合同和服务合同编写包装,从而能够像现在一样调用它们,但是可以在后台使用另一种现代通信协议:gRPC, Web API等?
答案 0 :(得分:0)
我已经对现有的WCF服务的构想进行了类似的“包装”,这些构想已经作为基本的SOAP Web服务运行在基本的HTTP绑定上。
在没有大量重写底层代码的情况下,似乎无法将协议更改为更现代的协议(例如,基于gRPC或JSON的Web API)。例如,尽管您可以将WCF绑定切换为WebHttpBinding,并且可以将操作/数据契约切换为使服务的行为像更现代的RESTful API一样,但是以任何方式将当前代码移植到ASP.Net MVC可能更有意义。
我研究的另一种选择是通过实现自定义绑定来更改基础协议来扩展WCF。 WCF custom bindings,但我认为最终的努力可能大于重写。