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实 ...
随机推荐
- B树、B+树、B*树三者的对比详解
转载至:https://www.2cto.com/database/201805/745822.html 对比 B+树是B树的变体,B*树又是B+树的变体,是一脉相承法治国拉的,不断解决新一阶段的问题 ...
- 【Java面试宝典】什么情况下会发生栈内存溢出?
如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常. 如果虚拟机在动态扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常.
- rabbitmq 中 vhost 的作用是什么?
vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列.绑定.交换器和权限控制: vhost通过在各个实例间提供逻辑上分离,允许你为不同应用程序安全保密地运行数据: vhost是AM ...
- springboot-数据库访问之jpa+mybatis+jdbc的区别
什么是jdbc jdbc(Java DataBase Connectivity)是java连接数据库操作的原生接口. 什么是jpa jpa(Java Persistence API)是java持久化规 ...
- idea-spring-boot打包jar/var
下面的插件配置的里面需要加上具体的main类 <groupId>org.springframework.boot</groupId> <artifactId>spr ...
- 您对 Distributed Transaction 有何了解?
分布式事务是指单个事件导致两个或多个不能以原子方式提交的单独数据源的突 变的任何情况.在微服务的世界中,它变得更加复杂,因为每个服务都是一个工 作单元,并且大多数时候多个服务必须协同工作才能使业务成功 ...
- IE中的编码位置
进入设置 找到Editor 找到File Encodings
- 在 VC 下清空键盘缓冲区的方法
控制台窗口是有输入缓冲区的,当你按键后程序没有来得及处理,系统会将按键缓存,等到程序获取按键的时候,系统会把缓冲区里面之前的按键返回. // 调用控制台 API,清空之前缓冲区内的所有按键. Flus ...
- 1_开环系统和闭环系统_反馈控制_Open/Closed Loop System_Feedback
- GoF设计模式-23大设计模式(表格)-程序员必备+必背
在GoF经典著作<设计模式:可复用面向对象软件的基础>中一共描述了23种设计模式. <Design Patterns:Elements of Reusable Object-Orie ...