CoreWCF 1.0.0 发布,微软正式支持WCF
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的更多相关文章
- [转帖]银河麒麟Kydroid 2.0全新发布:原生支持海量安卓APP
银河麒麟Kydroid 2.0全新发布:原生支持海量安卓APP https://news.cnblogs.com/n/652299/将手机操作系统 转移到 桌面 跟chromebook 类似的策略吧 ...
- .NET 5.0 RC2 发布,正式版即将在 11 月 .NET Conf 大会上发布
原文:http://dwz.win/ThX 作者:Richard 翻译:精致码农-王亮 说明:本译文舍弃了少许我实在不知道如何翻译但又不是很重要的语句. 今天(10月13日)我们发布了 .NET 5. ...
- Redis 3.0正式版发布,正式支持Redis集群
Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...
- 微软今日发布汇总:VS2015, .NET 4.6, C# 6.0, F# 4.0等重量级产品正式上线
Visual Studio Visual Studio 2015 下载 VS2015新功能列表 ‘ Visual Studio 2013 更新包 5.0 下载 其中包含Visual Studio 20 ...
- jQuery 2.0发布,不再支持IE6/7/8
有时发现jQuery库引用的都对,javascript代码写的也没问题,可是jquery就是出现问题,额--我发现换个jquery库就没问题了,长时间不关注jquery的问题而已: 很多人都没有使用最 ...
- Angular4.0.0正式版发布
来源于angular4.0.0发布时的公告,译者:niithub 原文发布时间:Thursday, March 23, 2017 翻译时间:2017年3月24日 angular4.0.0正式版现在可以 ...
- [OSChina]VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持--尝试一下
VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持 https://www.oschina.net/news/102838/virtualbox-6-0-0-released ...
- 支持边云协同终身学习特性,KubeEdge子项目Sedna 0.3.0版本发布!
摘要:随着边缘设备数量指数级增长以及设备性能的提升,边云协同机器学习应运而生,以期打通机器学习的最后一公里. 本文分享自华为云社区<支持边云协同终身学习特性,KubeEdge子项目Sedna 0 ...
- QuantumTunnel:v1.0.0 正式版本发布
经过一段时间运行,代码已经稳定是时候发布正式版本了! v1.0.0 正式版本发布 对核心能力的简要说明: 支持协议路由和端口路由:QuantumTunnel:端口路由 vs 协议路由 基于Netty实 ...
随机推荐
- Java程序要操作数据库,一定要使用JDBC技术吗?
<!-- MySQL驱动,连接数据库用,由数据库厂商提供 --> <dependency> <groupId>mysql</groupId> <a ...
- mybatis基础(全)
参考链接:Mybatis学习系列(一)入门简介 Mybatis学习系列(二)Mapper映射文件 Mybatis学习系列(三)动态SQL Mybatis学习系列(四)Mapper接口动态代理 Myba ...
- Spring通知有哪些类型?
(1)前置通知(Before advice):在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常). (2)返回后通知(After returnin ...
- memcached 的内存分配器是如何工作的?为什么不适用 malloc/free!?为何要使用 slabs?
实际上,这是一个编译时选项.默认会使用内部的 slab 分配器.您确实确实应该 使用内建的 slab 分配器.最早的时候,memcached 只使用 malloc/free 来管理 内存.然而,这种方 ...
- PRODUCER配置加载
1.入口 Kafka通过new一个KafkaProducer将配置项进行加载.将用户定义的properties作为参数,构造成一个ProducerConfig对象. public KafkaProdu ...
- java接口返回为空时候如何处理
java前后端分离以后,后端常常返回给前端以下的内容: 如果遇到某个字段的内容为空的时候会出现这样的情况: 图中红色箭头的情况是一个数组集合,但是该集合为空,所以就返回null,但是我们如果想对于这样 ...
- 通读Python官方文档之wsgiref(未完成)
wsgirf-WSGI功能及参考实现 源码:Lib/wsgiref Web服务器网关接口(Web Server Gateway Interface, WSGI),是用Python写的一个服务器软件和w ...
- leetcode-剑指 Offer II 012. 左右两边子数组的和相等
题目描述: 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和. 如果中心下标位于数组最左端,那么左侧数之和视为 ...
- 【每日日报】第三十二天---DataOutputStream写文件
1 今天继续看书 DataOutputStream写文件 1 package File; 2 import java.io.IOException; 3 import java.io.FileOutp ...
- ccf201912-1 报数 C++代码实现
代码实现: #include<iostream> using namespace std; /*题目限制为三位数*/ /*思路: 1.用一个长度为4的数组(初值为0)保存每个人分别跳过了几 ...