0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

.NET Core 平台是什么?

GKwL_infoqchina ? 来源:InfoQ ? 2019-12-12 14:05 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我一直回想我的第一篇博文,那是关于多个服务的服务器平台的详细教程,它使用 GitLab CI 在 AWS 上,当时使用单个命令行进行部署, 至今回想,令人感觉很酷。

前几天,我偶然听说一些软件公司的 HR 在招聘原则上拒绝任何希望使用.NET 的候选人,原因如下:.NET 是一个古老的封闭式生态系统,与其他更性感的开发平台截然不同,如 NodeJS 或 RubyRails,这些开发平台更加灵活和开放。.NET 实际上有点像 Java,但是,JAVA 拥有强大的开源生态圈、而且可以跨平台,关键的是 Java 不被邪恶的微软一家垄断。

当时,我正在我的个人 MacBook 上使用 C#和.NET Core 开发 Web 应用程序,我使用 Lambdas 函数,Linux EC2 和 Docker 容器在 AWS 上使用 GitLab 进行部署。我甚至 5 年前曾经在.NET Core 的官方开源 Github 存储库中 Pull 了一些代码和测试,这些存储库仍在其上。

毋庸置疑,我作为一名.NET 开发人员,听到这一点消息,我的内心开始觉得不舒服。

所以在此,我想做几个 demo,来告诉大家可以在 C#和.NET Core 中轻松快速地开发、部署,就像我们在 JavaScript 和 NodeJS 中所做的那样: 跨平台、开源、一个命令行搞定一切。

.NET Core 平台是什么?

当我们谈论.NET Core 平台时,事情很快变得比较复杂,在这里,我只引用官方文档:

.NET Core 运行时:类型系统,程序集加载,垃圾收集器,本机互操作和其他基本服务。

.NET Core 框架库提供原始数据类型,应用程序组合类型和基本实用程序。

ASP.NET 运行时:提供了一个框架,用于构建基于云的互联网应用程序,例如 Web 应用程序,IoT 应用程序和移动后端。.NET Core CLI:提供工具和语言编译器(Roslyn 和 F#)支持.NET Core 开发人员体验。

dotnet 工具:用于启动.NET Core 应用程序和 CLI 工具。它选择并托管运行时,提供程序集加载策略并启动应用程序和工具。

以上内容总结:

运行时,可以通过执行.NET Core 的二进制文件。

ASP.NET Core 是一个框架和一组库,可以用来构建 Web 应用程序和 Web API

.NET Core CLI 与其他平台 CLI 类似,允许创建,构建,发布,设置和支撑项目以及其他操作。

Hello world,动手操作吧:

我的目标是向您展示如何快速轻松地使用.NET Core 来创建应用程序和网站,就像使用 NodeJS 或 RubyRails 一样 - 让我们开始吧:

在 Linux 安装很简单 ; 只需点击此链接并选择您的发布,同时注册 Microsoft 密钥和 feed。

安装必要的软件包需要大约三、四个命令。

在 Linux Ubuntu 上,从终端看起来的样子:

wget -q https://packages.microsoft.com/config/ubuntu/19.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debsudo apt-get install apt-transport-httpssudo apt-get updatesudoapt-getinstalldotnet-sdk-2.2

安装完成后,通过如下命令进行测试是否成功:

dotnet --version>2.2.300

在 MacO 或 Windows 上安装.NET Core 更简单:只需从官方 Microsoft 门户下载安装包,安装程序为您自动完成这些工作,通常只需要几分钟。

Hello World!

在众所周知的程序教程中,首先创建一个控制台应用程序:显示 Hello World!。

通过命令行来创建文件夹,然后通过命令行创建控制台应用程序工程:

mkdir hello-worldcd hello-worlddotnet new console

你将得到如下文件结构:

hello-world├── bin├── obj├── hello-world.csproj├──Program.cs

您可以忽略 bin 和 obj 文件夹,这些文件夹仅用于构建和调试。事实上,我在 VSCode 和 Git 上都忽略了它们。

.csproj 文件包含有关运行时,包,版本和其他项目配置属性的信息。它默认很小。

Exe netcoreapp2.2

最后,我们最重要的文件:Program.cs。

using System; namespace HelloWorld{ class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } }}

在这里,没有什么是棘手的 - 你有你的默认命名空间。通过静态方法 Main()声明主入口点的类。类或命名空间可以更改为您想要的任何内容,也不需要公开,Main 方法也不需要。这里的类是内部的,方法是私有的。

唯一的限制是至少要有这个静态 Main 方法。甚至参数都是可选的,但它们的存在是为了通过命令行执行提供对参数的访问。

现在,让我们运行应用程序:

dotnet run> Hello World!

要获得可在具有.NET Core 运行时(此处为 2.2 版)的任何环境中部署的应用程序的发行版,只需按如下方式发布应用程序:

dotnetpublish-cRelease-odist

生成的 dist 文件夹应如下所示:

dist├── hello-world.deps.json├── hello-world.dll├── hello-world.pdb├──hello-world.runtimeconfig.json

可以删除 hello-world.pdb,因为它仅用于调试目的,但默认情况下会生成 pdb,即使在发布模式下也是如此。您可以通过将此代码段添加到 hello-world.csproj(在标记下)来禁用此自动生成 pdb。

Nonefalse

hello-world.dll 就是是您编译的代码,使用此运行时命令可执行:

dotnethello-world.dll

dlldeps.json 和 runtimeconfig.json 文件分别用于处理其他包的依赖关系和配置运行时。

最后,您可以使用 dotnet publish 运行时标识符目录轻松地在发布特定平台:

dotnet publish -c Release -r win-x64 -o dist/win-x64dotnet publish -c Release -r osx-x64 -o dist/osx-x64dotnetpublish-cRelease-rlinux-x64-odist/linux-x64Hello Web !

好吧,这很酷,我们很容易在控制台上写了一行,但是有些网络 Web 呢?好吧,这也很容易做到!

首先,让我们添加 ASP.NET Core 的包:

dotnetaddpackageMicrosoft.AspNetCore

引用新包就像为 NodeJS 导入 npm 包一样。

这个包将允许我们配置,构建和运行一个简单的 WebHost 程序。这可以在 Main()方法中的单行代码中完成。

生成的 Program.cs 应如下所示:

using System;using Microsoft.AspNetCore;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.AspNetCore.Http; namespace HelloWorld{ class Program { static void Main() { Console.WriteLine("Hello World!"); WebHost.CreateDefaultBuilder() .Configure(app => app.Run(context => context.Response.WriteAsync("Hello World!"))) .Build() .Run(); } }}

您可以使用与上面相同的命令来运行和构建应用程序:

dotnet run

现在打开你的浏览器,转到 http:// localhost:5000,享受这个简洁的 Hello World, 网页:

本文到此为止,本次实践完全基于 Macbook 电脑,在 Linux 命令行下完成,很酷,不是嘛。

在阅读完之后,我真的希望你对.NET Core 的看法有所改变:微软在多年前对.NetCore 进行开源, .NetCore 不仅仅只支持 Windows、而是可以跨平台和开源,令人兴奋的是是,到 2019 年秋天,.NET Core 3.0 即将问世,作为技术从业人员,这些惊喜的变化你不得不关注。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • net
    net
    +关注

    关注

    0

    文章

    127

    浏览量

    56725
  • 应用程序
    +关注

    关注

    38

    文章

    3339

    浏览量

    59224
  • 生态系统
    +关注

    关注

    0

    文章

    708

    浏览量

    21252

原文标题:.NET Core 很酷,你不得不知!

文章出处:【微信号:infoqchina,微信公众号:InfoQ】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2.0.0版本的ST Edge AI Core在linux平台上可以把量化后的onnx模型转换为.nb,但是运行报错,缺少文件,为什么?

    2.0.0版本的ST Edge AI Core工具在linux平台上应该是可以把量化后的onnx模型转换为.nb,但是运行报错,缺少文件。
    发表于 06-17 06:29

    HZ-CORE-RK3576-技术规格书

    电子发烧友网站提供《HZ-CORE-RK3576-技术规格书.pdf》资料免费下载
    发表于 04-17 16:44 ?0次下载

    DLPC7540evm中dlpc core power页中有一个DMD_OK信号,用不到可以直接去掉吗?

    在DLPC7540evm中dlpc core power 页中有一个DMD_OK 信号,这个信号经查在DLP471EVM的DMD接口中有用到,但是dlp650te应该是用不到的,是否直接去掉即可,另外 原理图中存在好多类似没有网络的net 是否可以认为可以去掉,谢谢。
    发表于 02-21 17:22

    Spire.PDFViewer for ASP.NET强大的PDF查看组件

    Spire.PDFViewer for ASP.NET 是一款强大的 PDF 查看组件,它允许开发人员从文件中加载各种 PDF 文档并且可以在网页上浏览 PDF 文档。该组件还支持浏览 PDF
    的头像 发表于 02-13 09:17 ?467次阅读
    Spire.PDFViewer for ASP.<b class='flag-5'>NET</b>强大的PDF查看组件

    适用于MySQL和MariaDB的.NET连接器

    的功能。例如 SSL 和 SSH 连接、嵌入式服务器、压缩协议、HTTP 隧道等。 与各种 MySQL 和 MariaDB 版本以及NET平台的广泛兼容 ORM 支持:EF Core、Dapper、NHibernate、Lin
    的头像 发表于 01-16 14:17 ?563次阅读
    适用于MySQL和MariaDB的.<b class='flag-5'>NET</b>连接器

    PET_RK3588_CORE核心板

    一、PET_RK3588_CORE 核心板图片 二、PET_RK3588_CORE 核心板详细参数 注意:RK3588 引脚大部分是功能复用的,以上列表内的资源存在不能同时使用的情况,引脚功能复用情况 可以查询下表或查看我司核心板精简版原理图。 三、PET_RK3588_
    的头像 发表于 01-15 14:12 ?922次阅读
    PET_RK3588_<b class='flag-5'>CORE</b>核心板

    PET_RK3562_CORE核心板

    一、PET_RK3562_CORE 核心板图片 二、PET_RK3562_CORE 核心板详细参数 注意:RK3562 引脚大部分是功能复用的,以上列表内的资源存在不能同时使用的情况,引脚功能复用
    的头像 发表于 01-15 10:58 ?742次阅读
    PET_RK3562_<b class='flag-5'>CORE</b>核心板

    dotConnect:基于ADO.NET架构的增强型数据连接解决方案

    各种版本和.NET平台 - 支持 ORM:EF Core、Dapper、NHibernate、LinqConnect 等。 - 完全
    的头像 发表于 01-07 11:07 ?492次阅读
    dotConnect:基于ADO.<b class='flag-5'>NET</b>架构的增强型数据连接解决方案

    版本控制系统Helix Core 2024.2增强功能:与OpenTelemetry协议集成、Delta同步和传输等

    【Helix Core 2024.2新增功能】Helix Core 2024.2版本拥有众多旨在提高团队效率、优化工作流程的增强功能: 通过新的OpenTelemetry协议(OTLP)集成,团队
    的头像 发表于 01-03 16:03 ?530次阅读
    版本控制系统Helix <b class='flag-5'>Core</b> 2024.2增强功能:与OpenTelemetry协议集成、Delta同步和传输等

    T-Core一体成型贴片电感

    T-Core一体成型贴片电感 时源芯微 专注于EMC电磁兼容解决方案 随着电子技术的不断发展,T-core电感也在不断演进。未来,T-core电感可能会朝着更高频率、更小尺寸、更低损耗和更高
    的头像 发表于 12-26 10:40 ?1579次阅读
    T-<b class='flag-5'>Core</b>一体成型贴片电感

    Net5.5G智能IP网络峰会成功举办,全球Net5.5G加速商用部署

    土耳其伊斯坦布尔2024年11月4日?/美通社/ -- 今日,全球超宽带高峰论坛(UBBF 2024)期间,在以"Net5.5G加速部署,迈向智能化时代"为主题的Net5.5G智能IP网络峰会
    的头像 发表于 11-05 09:55 ?631次阅读
    <b class='flag-5'>Net</b>5.5G智能IP网络峰会成功举办,全球<b class='flag-5'>Net</b>5.5G加速商用部署

    华为亮相Net5.5G智能IP网络峰会

    由联合国宽带委员会、全球云网宽带产业协会(WBBA)和华为共同举办的第十届全球超宽带高峰论坛(UBBF 2024)期间,在以“Net5.5G加速部署,迈向智能化时代”为主题的Net5.5G智能IP
    的头像 发表于 11-04 15:39 ?776次阅读

    linux安装.net core3.1步骤

    linux安装.net core3.1步骤 各项用到的命令
    发表于 09-03 11:41 ?0次下载

    HZ-CORE-RK3576开发板

    HZ-CORE-RK3576开发板
    的头像 发表于 08-29 13:58 ?706次阅读
    HZ-<b class='flag-5'>CORE</b>-RK3576开发板

    .NET与钡铼ARMxy嵌入式边缘计算网关用于数字化转型

    随着全球制造业的快速发展,数字化转型已成为企业提升竞争力的关键途径。在这个过程中,.net平台与钡铼ARMxy系列BL410嵌入式边缘计算网关的结合,为企业数字化转型带来了全新的解决方案。 一
    的头像 发表于 08-28 15:05 ?575次阅读
    .<b class='flag-5'>NET</b>与钡铼ARMxy嵌入式边缘计算网关用于数字化转型