【春华秋实】.NET Core之只是多看了你一眼

技术学习是一件系统性的事情,如果拒绝学习,那么自己就会落后以至于被替代。.NET也是一样,当开源、跨平台成为主流的时候,如果再故步自封,等待.NET的就是死路一条,幸好.NET Core问世了,社区反响积极而又强烈,.NET Core的生态体系不断得到丰富。作为.NET技术人员,你必须去深入了解.NET Core,作为非.NET技术人员,.NET Core也值得你去关注。

.NET Core作为.NET计划的跨平台开源版本,也是下一代.NET的主力版本,现在的微软越来越开放,作为其平台技术从业者,没有理由不持续跟进。也希望通过大家的努力,打造一个庞大而又健全的.NET生态体系。

补充一下,在2019年6月27日之后,.NET Core补丁更新将不再包含.NET Core 1.0和1.1的更新包或容器映像。我们应该尽快从.NET Core 1.x升级到.NET Core 2.1或2.2及以后的版本。在.NET Core3.0版本中,.NET Core 将支持Winform和WPF。

本系列文章以.NET Core2.2及以后的版本为基础。
 

.NET Core最大和最具竞争力的特点就是跨平台,相较于.NET如果仅绑定于Windows并面向单一用户,那么其将难以在多用户服务器环境中创建高性能的应用,Core使得Microsoft得以将开发基础重置为以服务器为中心的模式。

下图是.NET Core未来的发展方向:

640?wx_fmt=png

通过上图我们可以知道,.NET框架的内容丰富了,包括.NET Framework、.NET Core和XAMARIN微软使用.NET Standard Library来统一整个.NET框架,但是维护起来确是一个非常有成本的事情,所以有时候我会想,未来是不是只会保留.NET Core的内容,而移除.NET Framework。毕竟现在的处理只是过渡期的过渡方式,但是考虑到.NET Framework庞大的用户量,所以微软不敢轻易放弃对.NET Framework的支持。

目前的版本中,.NET Core主要面向Web开发,ASP.NET Core是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。

我们先来看一下,ASP.NET Core的优点:


  • 跨平台。

  • 内置依赖注入。

  • 生成 Web UI 和 Web API 的统一场景。

  • 针对可测试性进行构建。

  • Razor Pages 可以使基于页面的编码方式更简单高效。

  • 能够在 Windows、macOS 和 Linux 上进行开发和运行。

  • 开放源代码和以社区为中心。

  • 集成新式客户端框架和开发工作流。

  • 基于环境的云配置系统。

举一个简单的例子,在传统的MVC下,我们使用如下方式编程:

   1:  @Html.ActionLink(“这是啥参数”, “这又是啥”, “我靠,这边怎么还有一个”, new { @class = "晕了"})

而在.NET Core下,我们可以这样:

   1:  <a asp-controller=”user” asp-action=”createuser” class=”mycss”>CreateUser</a>

是不是.NET Core下的编程更加优雅,更像是直接操作HTML,这种例子还有很多,需要自己多多深入了解。

如果只是跨平台,可能还不足以吸引广大开发者,毕竟一个新的语言或者框架的问世,更需要很强的开发效率和执行效率。

.NET Core拥有轻型的高性能模块化 HTTP 请求管道。能够在 IIS、Nginx、Apache、Docker 上进行托管或在自己的进程中进行自托管。使用.NET Core 时,可以使用并行应用版本控制。目前的ASP.NET Core已经是一个非常成熟的产品,从ASP.NET MVC/Web API转向非常简单。最显著的原因在于.NET Core应用性能的提高和占用空间的减少,这意味着无论是对于云还是私有数据中心,可真正做到在基础架构上的成本节省。

由于.NET Core的模块化设计,使得.NET Core可以更快的进行版本更新,并能够使用Docker和Kubernetes等容器编排工具跨平台开发和部署应用,这是一项真正的优势。同时.NET Core的模块化设计意味着您只包含所需的依赖关系,这就减少了项目的不必要依赖,发布包也变小了。

我们来看下TechEmpower的测试:

这是2018年2月14日关于Plaintext的测试统计,可以看到.NET Core的排名不是很让人满意,排在了17名,而且还有110个报错

640?wx_fmt=png

这是2018年10月30日关于Plaintext的测试统计,可以看到.NET Core进步明显,排在了第7名,没有报错,而且跟前面的测试结果很接近

640?wx_fmt=png

但这并不意味着.NET Core的性能已经很不错了,事实上,.NETCore在性能方面还有很多工作要做。虽然在TechEmpower“纯文本”基准测试中,ASP.NET Core的Web服务器Kestrel表现极佳;但在涉及数据库查询等的高级测试中,Kestrel则表现不佳。在性能方面上,很多从.NET Framework迁移过来的代码还有很大的改进空间,相信微软也会进行深入研究,挖掘这些性能问题,并提供更好的解决方案。

如果想要了解更详细的的信息,可以打开TechEmpower网站查看。

当然了,.NET Core也有很多不足的地方,比如AppDomain这块的设计,之前AppDomain基于Windows,是对当前.NET应用进程的逻辑分区,并对同一进程中的各AppDomain实现了隔离,由于其特殊性,.NET Core尚未提供AppDomain功能,希望以后会出现基于AppDomain模型的解决方案。另外,.NET Core、.NET Standard和.NET Framework,还是比较让人感到乱的。

.NET Core目前依然在快速发展中,很多API不断得到丰富,同时ASP.NET Core团队,每周都会举行一次社区直播会议,直播地址http://live.asp.net

最后奉上两张图用以展示.NET Core架构及其扩展组成。

640?wx_fmt=png

下图是其扩展组成

640?wx_fmt=png

原文地址:https://www.cnblogs.com/edison0621/p/10616738.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[SDOI2010]粟粟的书架

[SDOI2010]粟粟的书架 题意&#xff1a; 一个R * C的矩阵&#xff0c;每个位置都有个数page[ij]&#xff0c;现在选定一个小矩阵范围(给左上角坐标&#xff0c;和右下角坐标)&#xff0c;问这个范围内的数总和是否大于h&#xff0c;如果大于h的话最少选几个数aij 对于50%的数…

基于Asp.Net Core的简单社区项目源代码开源

2019年3月27号 更新版本 本项目基于 ASP.NET CORE 3.0EF CORE 3.0开发使用vs2019 sqlserver 2017(数据库脚本最低支持sql server 2012/)使用步骤:1.下载相关开发工具2.运行数据库脚本目录下的相关脚本3.默认前端账号密码: 18812345678 1234564.默认后台账号密码: admin 123456开…

[学习笔记] 如果你愿意学那么你是可以看的懂的 —— 群论与 burnside 引理和 polya 定理

群与子群 <G,op><G,op><G,op> 是一个群需要满足以下条件&#xff1a; opopop 是一个满足结合律的二元运算&#xff0c;如 *&#xff0c;。GGG 是一个集合&#xff0c;存在单位元 eee。GGG 中所有元素都有逆元。即 GGG 对 opopop 运算封闭&#xff0c;封闭简单…

为什么从前那些.NET开发者都不写单元测试呢?

楔子四年前我虽然也写了很多年代码&#xff0c;由于公司虽然规模不小&#xff0c;却并非一家规范化的软件公司&#xff0c;因此在项目中严格意义上来说并没有架构设计、也不写单元测试&#xff0c;后来有幸加入了一家公司&#xff0c;这家公司虽然也是一家小公司&#xff0c;但…

使用 xUnit 编写 ASP.NET Core 单元测试

还记得 .NET Framework 的 ASP.NET WebForm 吗&#xff1f;那个年代如果要在 Web 层做单元测试简直就是灾难啊。.NET Core 吸取教训&#xff0c;在设计上考虑到了可测试性&#xff0c;就连 ASP.NET Core 这种 Web 或 API 应用要做单元测试也是很方便的。其中面向接口和依赖注入…

记录使用 Cake 进行构建并制作 nuget 包

前段时间折腾了一下&#xff0c;总算是把我自己的图片缓存控件&#xff08;https://github.com/h82258652/HN.Controls.ImageEx&#xff09;发布到了 nuget 上&#xff0c;目前已经进入一个比较稳定的版本了&#xff0c;基本没有很严重的 bug 了。其实核心代码早就写完了&#…

DDD领域驱动设计理论篇 - 学习笔记

一、Why DDD?在加入X公司后&#xff0c;开始了ASP.NET CoreDockerLinux的技术实践&#xff0c;也开始了微服务架构的实践。在微服务的学习中&#xff0c;有一本微软官方出品的《.NET微服务&#xff1a;容器化.NET应用架构指南》是我们学习的葵花宝典&#xff0c;纵观微软官方放…

.NetCore使用skywalking实现实时性能监控

一、简介很久之前写了一篇 《.Net Core 2.0 InfluxDBGrafanaApp Metrics 实现跨平台的实时性能监控》关于NetCore性能监控的文章&#xff0c;使用InfluxdbAppMetrics进行项目性能监控&#xff0c;由于技术有限&#xff0c;在正式环境使用一段时间后&#xff0c;莫名的AppMetric…

netcore开发windows普通服务(非Web)并一键发布到服务器

netcore下开发windows服务如果是web项目的话&#xff0c;由于aspnetcore本身是支持的&#xff0c;把默认的host.Run改为host.RunAsService就可以了。但是普通的netcore的控制台项目我终于找到了如下方式来实现&#xff1a;Microsoft.Extensions.HostingSystem.ServiceProcess.S…

Hopping Rabbit

Hopping Rabbit 题意&#xff1a; 给你n个矩阵&#xff0c;每个矩阵(给出左上标和右下标)&#xff0c;现在让你给出一个点的位置&#xff0c;这个点每次只能上下左右四个方向移动&#xff0c;且移动距离为d&#xff0c;是否存在一个这样的点&#xff0c;其所有落点都不在矩阵…

直播预告 - 微软MVP为你揭秘Visual Studio 2019新特性

作为"宇宙第一IDE“的Visual Studio集成开发环境&#xff0c;已经经历了超过十几年的迭代成为一款功能丰富且高效的开发工具&#xff0c;微软自己给Visual Studio 的定位是 “更快、更可靠&#xff0c;对个人和团队更具生产力&#xff0c;更易于使用&#xff0c;并且更容易…

.NET 机器学习生态调查

机器学习是一种允许计算机使用现有数据预测未来行为、结果和趋势的数据科学方法。 使用机器学习&#xff0c;计算机可以在未显式编程的情况下进行学习。机器学习的预测可以使得应用和设备更智能。 在线购物时&#xff0c;机器学习基于历史购买推荐你可能喜欢的其他产品。 刷信用…

图中异色点对最短距离(最小生成树+线段树)

problem 给定一个 nnn 个点&#xff0c;mmm 条边的无向连通图&#xff0c;图有边权&#xff0c;每个点有一个颜色。 有 qqq 次操作&#xff0c;每次操作可更改某一个点颜色。 求每次操作后图中不同颜色点之间的最短距离。 若图中点颜色全相同&#xff0c;输出 000。 一行给…

Defend Your Country

Defend Your Country 题意&#xff1a; n个点&#xff0c;m条边的简单无向连通图&#xff0c;每个点一个权值ai,一个连通块的贡献&#xff1a;(−1)块内点数∗∑ai[点i在该连通块内](-1)^{块内点数}*\sum a_{i}[点i在该连通块内](−1)块内点数∗∑ai​[点i在该连通块内] 可以…

SkyWalking Liunx 环境搭建NetCore接入

背景前两天看见有小哥介绍windows下安装skywalking的介绍地址。正好最近也在搭建linux环境的SkyWalking&#xff0c;顺便把linux环境搭建的经验分享下&#xff0c;帮助下使用linux部署DotNetCore项目的同学。介绍SkyWalking是开源的apm工具&#xff0c;服务器端使用java编写&am…

.NET 基金会完成第一次全面改选

.NET基金会是一个独立的组织&#xff0c;支持.NET社区和开源&#xff0c;旨在拓宽和加强.NET生态系统和社区。这可以通过多种方式完成&#xff0c;包括项目指导&#xff0c;指导&#xff0c;法律和营销帮助&#xff0c;技术和财务支持设置等&#xff0c;2014年微软组织成立.NET…

xay loves trees

xay loves trees 题意&#xff1a; 有两棵树&#xff0c;现在让你找到一个最大的点集合S&#xff0c;要求S中的点在第一棵树中任意两点存在祖先儿子关系且所有点是连接的&#xff0c;在第二棵树中任意两点都不存在祖先儿子关系&#xff0c;问S集合的最大是多少&#xff1f; …

特来电混沌工程实践

一、导语随着大型分布式系统架构的演进和广泛应用&#xff0c;软件工程的最佳实践也随之改变。我们通过分布式、服务化、DevOps、敏捷开发&#xff0c;快速响应业务的需求变化&#xff0c;支持大规模分布式应用。但这些做法带来效益的同时&#xff0c;也带来了另一个紧迫问题&a…

[ZJOI2007] 棋盘制作(单调栈 / DP悬线法)

problem 洛谷链接 solution1-单调栈 很容易想到&#xff0c;预处理出每个点向上最大能延伸的长度&#xff0c;然后对每个点求一个矩阵面积。 然后思考优化&#xff0c;不难想到每次对一行进行求解。 每一行的所有列一起构成了一个直方图。 直方图直接经典笛卡尔树。笛卡尔…

构建现代Web应用时究竟是选择传统web应用还是SPA

在大前端盛行的今天&#xff0c;似乎前后端分离的开发模式才是大势所趋&#xff0c;而SPA的概念更是应运而生。现在随便构建一个web应用程序如果你不是使用SPA的话&#xff0c;就会感觉有点low&#xff0c;但是真的是这样吗&#xff1f;今天这篇文章我们就来一起探讨下&#xf…