WCF现实世界的应用,不仅是Hello World —— 在.NET Core领域重新审视
背景
WCF适用于真实世界,而不仅仅是Hello World是一篇2012年发表的文章。根据该文章的下载来源,这个GitHub仓库是针对.NET Framework 4.8的,还提供了一些.NET Core的示例。
引言
根据”Client Support for Calling WCF/CoreWCF with System.ServiceModel 6.0 Is Here!”的说法,微软没有完全支持WCF的承诺,但是:
.NET Core WCF客户端示例
请关注以下csproj项目:
- RealWorldServiceCoreClientApi.csproj
- TestRealWorldCoreIntegration.csproj
然而,不同于.NET Framework的对应部分,app.config不再被使用,这个配置文件会导致xUnit VS运行器失败。所以我已经在System.ServiceModel.ClientBase
中硬编码了绑定和地址。然而,在实际的应用程序中,你应该很容易创建一个基于appSettings.json的应用级json配置,并使用应用代码来实例化相应的绑定。
注意事项
ClientBase(string endpointConfigurationName)
由于.NET Core不再使用app.config,这个构造函数只是一个无法在你的.NET Core客户端应用程序中真正使用的僵尸函数原型。显然,根据问题#5358,微软已经开始终止这个僵尸。
WCF的美好时光
我怀念那些和WCF一起度过的美好日子。在过去的15年里,微服务一直很炙手可热。然而,理论上来说,当我开发WCF服务时,我其实已经在隐式地构建微服务:
- 作为开发人员,我构建WCF服务库。
- 发布后,IT人员会通过调整配置文件app.config来决定如何部署这些服务库:
- 不同主机上的不同服务库组合
- 不同的绑定
- 不同的安全性
- 版本控制
- …
通过”.NET Framework Runtime”和”WCF Services / XXX Activation”来处理剩下的工作。而.NET Runtime可以生成仅向前的非缓存XML解析器/编写器来处理SOAP流。
并且在一个复杂的企业环境中,你可能有Biztalk,其中WCF组件是一等公民。
然而,不管是好还是坏,事情总是不断发展的。创建新的WCF服务的工作肯定已经在下降,尽管像PPSR和eRx这样的现有WCF服务多年来仍然得到良好维护,而且与这些SOAP服务交互的新业务客户端应用程序仍在不断涌现。
WCF客户端中的缺陷仍然存在
请查看:
根据问题#4912,这个缺陷还没有修复,所以你可能仍然需要我在2011年提出的解决方法。
历史
- 2023年11月21日:初始版本
Leave a Reply