除了多平台支持,. net Core的主要目的是提高性能,并启用“本地编译”/自包含部署(因此你不需要在目标机器上安装. net框架/VM)。
一方面,这意味着docker。另一方面,自包含部署在“云计算”中很有用,因为这样你就可以使用你喜欢的任何版本的dotnet-CORE框架,而不必担心系统管理员实际安装了哪个版本的。net框架
虽然. net Core运行时支持多个操作系统和处理器,但SDK是另一回事。虽然SDK支持多种操作系统,但ARM对SDK的支持仍在进行中。net Core由微软支持。Dotnet-Core并没有附带WinForms或WPF之类的东西。
只要代码不依赖于WinAPI-calls、windows -dll-pinvoke、COM-Components、不区分大小写的文件系统、默认的系统编码(codepage),并且没有目录分隔符问题,那就是正确的。然而,. net Core代码运行在。net Core上,而不是在Mono上。因此,将两者混合起来是很困难的。由于Mono相当不稳定且速度缓慢(对于web应用程序),我无论如何都不推荐它。尝试一下。net核心上的图像处理,例如WebP或移动GIF或多页tiff或在图像上写入文本,你会非常惊讶。
我也质疑它的表现。
在(初步)技术功率基准(第13轮)中,aspnetcore-linux相对于最佳性能排名为25%,而类似的框架如Go (golang)的峰值性能排名为96.9%(这是在只返回纯文本而不访问文件系统的情况下). net Core在json序列化方面表现稍好,但看起来也不太令人信服(Go达到峰值98.5%,. net Core达到65%)。也就是说,它不可能比“单核细胞增多症”更糟糕。< / p >
此外,由于它还相对较新,并不是所有的主要库都被移植了(目前),我怀疑其中一些库是否会被移植。
成像支持充其量也值得怀疑。
对于任何加密,使用BouncyCastle代替。< / p >
你能帮我理解所有这些术语吗?如果我的期望
是现实的> < /强大?< / p >
我希望我能帮助你更好地理解这些术语。
就你的期望而言:
首先,在不了解Linux的情况下开发Linux应用程序是一个非常愚蠢的想法,而且它也一定会以某种可怕的方式失败。也就是说,因为Linux不需要授权成本,所以原则上这是一个好主意,但前提是你知道自己在做什么。
为一个无法调试应用程序的平台开发应用程序是另一个非常糟糕的想法。
在不知道会有什么后果的情况下开发fastcgi是另一个非常糟糕的想法。< / p >
如果你的项目不只是一个个人主页,那么在一个“实验性”平台上做所有这些事情,而不了解该平台的细节,也没有调试支持,这无异于自杀。另一方面,我想出于学习的目的在您的个人主页上使用它可能是一种非常好的体验——这样您就可以了解框架和非框架问题是什么。 例如,您可以(以编程方式)为应用程序循环挂载一个不区分大小写的fat32、hfs或JFS,以解决大小写敏感问题(不建议在生产环境中使用循环挂载)。 < / p >
< p > 总结
目前(2016-09-28),我将远离。net Core(用于生产使用)。也许一两年后,你可以再看一看,但之前可能不会。
如果你有一个新的网络项目要开发,用。net Core启动,不要用mono。
如果你想要一个在Linux (x86/AMD64/ARMhf)、Windows和Mac上工作的框架,它没有依赖性,即只有静态链接,不依赖于。net、Java或Windows,请使用Golang。它更加成熟,性能得到了验证(百度在100万并发用户的情况下使用它),而且golang的内存占用明显更低。同样,golang在存储库中,.deb安装没有问题,源代码编译-不需要更改-并且golang(同时)在Linux(以及Windows和Mac)上有delve和JetBrains Gogland调试支持。Golang的构建过程(和运行时)也不依赖于NodeJS,这是另一个优点。< / p >
就单核细胞增多症而言,离它远点。
mono已经取得了惊人的进步,但不幸的是,这并不能替代生产应用程序的性能/可伸缩性和稳定性问题。
此外,单一开发已经消亡,他们基本上只开发与Android和iOS相关的部分,因为这是Xamarin赚钱的地方。
不要期望Web-Development成为一流的Xamarin/mono公民。
如果你开始一个新项目,. net Core可能是值得的,但对于现有的大型web表单项目,移植基本上是不可能的,所需的更改是巨大的。如果你有一个mvc项目,如果你最初的应用程序设计是合理的,那么更改的数量可能是可控的,而对于大多数现有的所谓“历史增长”的应用程序来说,这是不可能的
< p > 2016年12月更新:
原生编译已经从。net核心预览中移除,因为它还没有准备好…
同样,Linux IDE方面的问题似乎也有所缓解。
JetBrains发布了c# /的早期预览版“Project Rider”。NET Core IDE,适用于Linux(以及Mac和Windows),可以处理Visual Studio项目文件。
最后一个c# IDE是可用的&这还不算慢。< / p >
结论:进入2017年,. net Core仍然是预发布的高质量软件。移植您的库,但在框架质量稳定之前,不要用于生产使用。
< p > 2017年更新
现在已经把我(兄弟)的主页迁移到。net Core。
到目前为止,Linux上的运行时似乎足够稳定(至少对于小型项目来说)——它轻松地通过了负载测试——mono从来没有做到过。
此外,我似乎混淆了. net - core -native和. net - core -self-contained-deployment。自包含部署是可行的,但是它的文档有些不足,尽管它非常简单(构建/发布工具有点不稳定,但是-如果您遇到“需要正数。”-构建失败。"-再次运行相同的命令,它工作)。 < / p >
你会得到一个独立的。exe文件(在发布目录下),你可以把它移动到没有安装。net框架的Windows 8.1机器上,让它运行。很好。正是在这里,dotnet核心才开始变得有趣起来。(注意差距,SkiaSharp 不能在Windows 8.1 / Windows Server 2012 R2上工作,[还]-生态系统必须先赶上-但有趣的是,Skia-dll-load-fail不会使整个服务器/应用程序崩溃-所以其他一切都可以工作)