2022年4月28日,我们达到了一个重要的里程碑,并发布了CoreWCF的1.0.0版本。对Matt Connew (微软WCF团队成员)来说,这是5年前即 2017年1月开始的漫长旅程的结束。Matt Connew 用3 周的时间来构建一个基于 .NET Core 的 WCF 服务实现的POC 基本原型。在3周结束时,Matt Connew 有了一个可以工作的玩具,可以使用BasicHttpBinding托管服务。然后,Matt Connew 的原型作为概念证明坐在那里收集灰尘,同时决定如何处理它。.NET团队在2019年的Build 大会上 已经决定了不在继续在.NET Core中支持WCF,这也是微软官宣的事情,我想大家都记忆尤新,没有资源将这个玩具开发为具有与 WCF 功能奇偶校验的完整产品,但是有许多客户 无法在不对其WCF服务进行完全重写的情况下迁移到 .NET Core。 Matt Connew最终决定 将花一些时间打磨一下的原型实现,包括添加NetTcp支持,并将代码捐赠给开源社区,托管到.NET基金会,看看这是否社区将围绕它构建的东西,以便在Microsoft之外生存下去。

Matt Connew 个人对 WCF 充满热情,因为它以有趣且通常很复杂的方式解决了许多难题,并且Matt Connew 喜欢解决有趣而复杂的问题。有人问Matt Connew 是否想亲自拥有这个项目。起初Matt Connew 很犹豫,因为Matt Connew 担心将会是自己亲自承诺移植大部分代码库。2019年6月7日 Matt Connew将Core WCF的初始代码提交到了Github https://github.com/corewcf/corewcf, 在项目开始公开开发后不久,来自 Amazon AWS 的 Biroj Nayak 联系了Matt Connew,询问他们如何帮助为 Core WCF 做出贡献。AWS 有自己的客户询问可以做些什么来将其 WCF 服务移植到云中。这开始了微软与亚马逊的多年合作,AWS将一些非常大且重要的功能从WCF移植到Core WCF。在 ASP.NET Core之上重建通道层需要对大部分代码库进行重大重构,并且某些功能涉及大量需要提交在一个大块代码中。Biroj 承担了长达数月的任务,将一些较大的缺失功能移植到 CoreWCF。

随后,我们开始从社区获得一些较小的贡献。添加对未包含的狭窄方案的支持,或修复新代码无法处理的边缘情况。随着时间的流逝,社区贡献的规模和数量逐渐不断增加。我们已经看到越来越多的公司贡献了开发人员资源来移植重要功能。Matt Connew对成为唯一一个致力于将WCF移植到.NET Core的人的担忧已经完全消除。我们最近达到了一个里程碑,即Matt Connew 向核心 WCF 存储库贡献的提交不到一半,有一个Core WCF社区来推动WCF的演进。Matt Connew现在将大部分时间用于 Core WCF,用于审查其他人的代码,并承担更多的架构师角色,以使其他人能够做出贡献。我们要向所有为这个项目做出贡献的人表示衷心的感谢,以使其取得成功。

1.0 版本 标签代表什么意义?

除了命名变量之外,软件开发中最棘手的问题之一是它何时准备好发布?如果我们等待与 WCF 的功能奇偶校验,我们可能永远不会使用 v1,因为某些功能缺少依赖项。我们决定,当核心 WCF 对大量 WCF 客户在生产中使用“有用”时,我们愿意应用 v1 标签。有用是一个非常模糊和模糊的栅栏,所以我们必须决定这意味着什么。我们想出来的是能够将 SOAP 与 HTTP 传输一起使用,具有会话传输,并能够为服务生成 WSDL。我们已经在 ASP.NET Core的连接处理程序功能之上实现了NetTcp,因此涵盖了支持会话传输的内容。剩下的主要事情是 WSDL 支持。在此过程中,社区决定为TransportWithMessageCredentials,WS-Federation,Configuration,ReSTful服务的WebHttpBinding以及许多其他较小的功能提供支持,包括一些甚至在WCF上不存在的功能。随着最近 WSDL 生成的完成,我们现在处于一个阶段,我们认为核心 WCF 应该对许多使用 WCF 的开发人员有用。

仍然缺少一些值得注意的功能。例如,我们尚不支持跟踪,您需要在 ASP.NET 核心中配置 HTTP 身份验证,而不是通过绑定。如果这是你第一次考虑使用 CoreWCF,我建议你阅读前面的博客文章,因为它们包含许多有关如何将服务移植到 Core WCF 的答案。

缺少我需要的功能,我该怎么办?

缺少的功能分为两类。

  • 实现已存在,但不是公开的
  • 完全没有实现

当实现在那里但不是公开的,那是因为我们还没有测试它。在没有测试端口中所做的任何更改都没有问题的情况下公开API将导致大量噪音和不良体验。如果您发现需要一个内部扩展点,则获得支持的最快方法是提交一个 PR,使其公开,并进行一些测试,以验证可扩展性点是否按预期工作。

如果完全没有所需的功能,您有两种选择:

  • 第一个选项是检查它是否在功能路线图问题上,如果不是,请添加它。然后按照问题顶部的说明对该功能投赞成票。在决定下一步要处理哪个功能时,我们会强烈权衡需求。
  • 第二个选项是提供开发人员资源来移植功能。WebHttp 功能就是这种情况的一个例子。对于一个需要它的客户来说,移植WebHttpBinding在优先级列表中太低了,因此在一些指导下,他们移植了该功能。

另一种方法可能是修改服务以使用提供相同功能的其他功能。例如,如果您当前使用的是 NetNameedPipeBinding,则切换到 NetTcpBinding。

自 0.4.0 以来的新增功能

自 Core WCF 0.4.0 发布以来,添加了以下新功能:

  • WebHttpBinding 支持 OpenApi 功能 - Jonathan Hope, Digimarc (@JonathanHopeDMRC)
  • WS-Federation 支持 - Biroj Nayak, Amazon AWS (@birojnayak)
  • WSDL 支持,包括 ServiceDebugBehavior - Matt Connew, Microsoft (@mconnew)
  • 新增了对将 HttpContext、HttpRequest 和 HttpResponse 对象注入到服务实现方法中的支持。这还包括支持coreWCF InjectedAttribute之外 ASP.NET Core FromServicesAttribute - Guillaume Delahaye(@g7ed6e)
  • 配置的自定义绑定支持 - (@kbrowdev)

有 3 篇新的博客文章讨论了其中一些新功能:
-WebHttpBinding 支持
-WSDL 支持
-WS-Federation 支持

微软官方支持

随着Core WCF的v1.0.0版本,Microsoft正在提供支持。当前支持生命周期可在 http://aka.ms/corewcf/support 中找到。Microsoft 发布了一篇博客文章,解释了 Core WCF 的支持策略。

本文翻译自 https://corewcf.github.io/blog/2022/04/28/corewcf-1_0_0_release ,并对背景做些解读。

CoreWCF 1.0.0 发布,微软正式支持WCF的更多相关文章

  1. [转帖]银河麒麟Kydroid 2.0全新发布:原生支持海量安卓APP

    银河麒麟Kydroid 2.0全新发布:原生支持海量安卓APP https://news.cnblogs.com/n/652299/将手机操作系统 转移到 桌面 跟chromebook 类似的策略吧 ...

  2. .NET 5.0 RC2 发布,正式版即将在 11 月 .NET Conf 大会上发布

    原文:http://dwz.win/ThX 作者:Richard 翻译:精致码农-王亮 说明:本译文舍弃了少许我实在不知道如何翻译但又不是很重要的语句. 今天(10月13日)我们发布了 .NET 5. ...

  3. Redis 3.0正式版发布,正式支持Redis集群

    Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...

  4. 微软今日发布汇总:VS2015, .NET 4.6, C# 6.0, F# 4.0等重量级产品正式上线

    Visual Studio Visual Studio 2015 下载 VS2015新功能列表 ‘ Visual Studio 2013 更新包 5.0 下载 其中包含Visual Studio 20 ...

  5. jQuery 2.0发布,不再支持IE6/7/8

    有时发现jQuery库引用的都对,javascript代码写的也没问题,可是jquery就是出现问题,额--我发现换个jquery库就没问题了,长时间不关注jquery的问题而已: 很多人都没有使用最 ...

  6. Angular4.0.0正式版发布

    来源于angular4.0.0发布时的公告,译者:niithub 原文发布时间:Thursday, March 23, 2017 翻译时间:2017年3月24日 angular4.0.0正式版现在可以 ...

  7. [OSChina]VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持--尝试一下

    VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持 https://www.oschina.net/news/102838/virtualbox-6-0-0-released ...

  8. 支持边云协同终身学习特性,KubeEdge子项目Sedna 0.3.0版本发布!

    摘要:随着边缘设备数量指数级增长以及设备性能的提升,边云协同机器学习应运而生,以期打通机器学习的最后一公里. 本文分享自华为云社区<支持边云协同终身学习特性,KubeEdge子项目Sedna 0 ...

  9. QuantumTunnel:v1.0.0 正式版本发布

    经过一段时间运行,代码已经稳定是时候发布正式版本了! v1.0.0 正式版本发布 对核心能力的简要说明: 支持协议路由和端口路由:QuantumTunnel:端口路由 vs 协议路由 基于Netty实 ...

随机推荐

  1. C++多态例子_虚函数

    #include<iostream> using namespace std; class parent { public: virtual void fun() { cout <& ...

  2. Python - 字符串基础知识

  3. 顺利通过EMC实验(10)

  4. 浅谈JavaScript原型与原型链

    对于很多前端开发者而言,JavaScript的原型实在是很让人头疼,所以我这边就整理了一下自己对应原型的一点理解,分享给大家,供交流使用 原型 说起原型,那就不得不说prototype.__proto ...

  5. H5打造属于自己的视频播放器(JS篇2)

    回顾 算了不回顾了 直接搞起,打开JS1中写的bvd.js 播放视频 播放按钮隐藏 视频开始播放 当点击播放按钮的时候,播放按钮将会隐藏,播放视频,这个不难,在JS1中我们就已经实现.但我们改变一下思 ...

  6. 用jq实现移动端滑动轮播以及定时轮播效果

    Html的代码: <div class="carousel_img"> <div class="car_img" style="ba ...

  7. 后端渲染神器!Dust

    Dust一个适用于浏览器与node的异步模板框架. 先上实例 后端模板: {@inject api="http://api.myserver.com/get_message"} & ...

  8. Service worker (@nuxtjs/workbox) 采坑记

    PWA(Progressive Web App)是前端的大趋势,它能极大的加快前端页面的加载速度,得到近乎原生 app 的展示效果(其实难说).PWA 其实是多种前端技术的组合,其中最重要的一个技术就 ...

  9. 升级DLL plugin 到AutoDllPlugin

    为了使打包构建速度加快使用的DLLPlugin,但是我们还是需要手动把dll文件引入文件, HTMLwebpackplugin 结合autoDLLplugin可以自动引入打包文件, 十份地方便

  10. PyQt5 基本语法(五)

    目录 2. 输入控件(二) 2.2 步长调节 2.2.1 QAbstractSpinBox 2.2.1.1 描述 2.2.1.2 功能作用 2.2.1.2.1 使用 2.2.1.2.2 主要功能 2. ...