.Net Core在Centos7上初体验
本文主要内容是简单介绍如何在centos7上开发.Net Core项目,在此之前我们首先了解下.Net Core的基本特性。
1 .Net Core和.Net FrameWork的异同
1.1 .Net Core优势
.Net Core发布两年了,这两年.Net Core的发展十分迅速,到目前已经推出来了.Net Core3.0预览版,支持通过.Net Core来开发桌面应用程序(WPF,WinForm),现在.Net平台的开发者应该不会对“.Net Core就是.Net的未来”这一说法再有质疑。我所在的公司自去年开始从.Net Framework向.Net Core迁移,现在技术已基本成型。个人觉得从.Net Framework到.Net Core平台的转换路线对我们开发人员来说十分平缓,在开发业务代码时和使用.Net Framework几乎没有什么区别。
.Net Core的特点:
跨平台: 可以在 Windows、macOS 和 Linux 上运行;
跨体系结构: 在多个体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码;
部署灵活:十分适合搭配 Docker 容器来轻松部署项目在不同的平台上;
兼容性:.NET Core 通过 .NET Standard与 .NET Framework、Xamarin 和 Mono 兼容;
开放源代码:.NET Core 平台是开放源代码,使用 MIT 和 Apache 许可证。
ASP.Net Core的优势:
轻型高性能的模块化HTTP请求管道;
内置依赖注入,(可以使用第三方替换);
能够在IIS,nginx,Apache,docker上进行托管或在自己的进程中进行托管;
云就绪配置系统;
生成mvc和webapi的统一场景,控制器不在分为Controller和ApiController,只有一个统一的Controller(请求处理管道统一)。
1.2 .Net Core和.Net Framewoke的编译过程对比

在传统.Net Framework中,我们的代码会调用FCL中的基础类库,代码通过编译器编译成IL(中间语言),中间语言在CLR中通过JIT(just in time,即时编译器)编译成本机代码(就是CPU可处理的二进制指令),最后本机代码运行在Windows平台上。这里FCL是随着.Net Framework的版本更新而更新的,即如果我们要使用新的FCL就必须更新.Net Framework;.Net Framework的FCL中包含了所有基础类库(很多基础类库我们的项目并没有使用到)这也造成了代码冗余。

在.Net Core中CoreFX就是基础类库(相当于.Net Framework中的FCL),Linux/Windows/Macos都有自己的CoreFX,每个版本的CoreFX都实现.Net Standard中定义的标准接口。我们的代码通过Nuget按需获取CoreFX中的类库(模块化,减少引入不需要的类库),然后通过跨平台的Roslyn编译器编译成IL,IL在CoreCLR中通过RyuJIT(Ryu即时编译器)编译成操作系统对应的本机代码,然后在对应的操作系统上运行。
我们可以看出.Net Core通过Nuget按需获取基本类库,使得项目更利于模块化管理,更轻巧。
2 Centos7开发.Net Core项目
2.1 开发前提
1.软件安装
.安装VMWare虚拟机管理软件 .安装Centos7虚拟机 .安装PuTTy或者XShell远程操作工具
PuTTy/XShell工具一直next安装即可,操作和我们使用Linux命令行一样,主要用于远程登录和操作Linux系统。
VMWare和Centos7虚拟机安装可以看看这一篇 :VMWare安装和配置
2.Net Core安装
.Net Core的安装包有两种:runtime和SDK
.net core SDK
包含runtime、Roslyn、CoreFX、netCore CLI等,想当于javaz中的jdk,开发时使用 .net core Runtime
主要包含CoreCLR,用于运行.Net Core项目,相当于java中的jre,部署时使用
为了在Linux上进行开发,我们选择安装SDK,下载地址:https://dotnet.microsoft.com/download,我们也可以在线安装两行代码就可以搞定
//1.安装.NET sdk前,首先注册,并安装一些必要的依赖项。一台设备只需要执行一次
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
//2.安装SDK
sudo yum install dotnet-sdk-2.2
//3.验证是否成功,用于查看版本号
dotnet --version
2.2 Centos上开发Console应用程序
我们使用CLI工具在centos上开发Console应用程序,开发过程如下图,几行简单的代码就可以完成一个Console项目的开发,并在Centos上运行成功。

2.3 Centos上开发MVC应用程序
开发mvc项目和控制台项目的过程基本一致,按下图中的命令即可新建一个mvc项目并运行成功。

我们看到运行成功后只能在本机上访问,那么如果我们想让我们的电脑访问虚拟机上的mvc网站怎么办呢?很简单,修改下mvc项目的配置即可

然后切换到mvc根目录,执行 dotnet run ,运行结果如下:

在我们的笔记本电脑上打开浏览器,输入url(虚拟机Ip:5000),访问结果如下:

2.4 Centos上开发Web API应用程序
.Net Core中Mvc和WebApi采用的是同一的http处理管道,控制器都继承于统一的Controller(没有了ApiController)所以开发WebApi项目和开发mvc项目的过程基本一样,如下:

我们看到运行后的url为http://localhost:5000,webapi应用只能在本机访问,如果要让其他设备可以访问,那么需要修改配置文件,和mvc中修改的方式一样。修改完成后,再次通过 dotnet run 命令启动项目,我们就可以在其他设备上访问centos上部署的WebApi项目了。如下
3.小结
这里简单介绍了.Net Core的一些特性,并在Centos7虚拟机上使用CLI工具开发Console、MVC、WebAPI应用。在Centos等Linux系统上,我们可以使用vim编辑器进行代码编写,但是这种方式很不方便。实际开发中我们会使用VS或者VsCode工具进行开发,然后将发布版本部署在Linux系统上。
.Net Core在Centos7上初体验的更多相关文章
- 在openwrt上初体验PostgreSQL数据库
要求 请确保在你的路由器shell 中有以下这些命令 adduser, deluser, addgroup, delgroup, su . 还需要熟悉su,chown ,opkg,mkdir,服务操作 ...
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...
- Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验
Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...
- Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验
Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...
- Consul在.Net Core中初体验
Consul在.Net Core中初体验 简介 在阅读本文前我想您应该对微服务架构有一个基本的或者模糊的了解 Consul是一个服务管理软件,它其实有很多组件,包括服务发现配置共享键值对存储等 本文主 ...
- .NET Core 初体验
.NET Core 作为微软的开源项目,neter 们对之的期待还是挺大的. 以前也看过,接触过,摸索建了几个示例项目,今天就罗列下自己的初体验. .NET Core 安装.帮助等 安装的话,直接官网 ...
- 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验
在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...
- .net core安装及初体验
.net core安装及初体验 .net core 作为微软的新一代技术,在开发跨平台.微服务等方面有很大的优势,也更贴近现代的编码习惯.在2.0版发布很久以后,近期终于决定进行学习和体验. 安装 作 ...
- CentOS7上部署ASP.Net Core 2.2应用
前言 在CentOS7上部署ASP.Net Core应用是我的技术路线验证的一部分,下一个产品计划采用ASP.Net Boilerplate Framework开发.因此需要求提前进行一下技术验证,在 ...
随机推荐
- 查看CPU使用率
rem 如果wmi服务(服务名为Winmgmt)坏掉了,需要到system32\webm目录下执行如下注释的命令 rem for %i in (*.dll) do RegSvr32 -s %i rem ...
- 【记录】垃圾清理软件 便携版CleanMyPC破解版
摘要 使用CleanMyPC保持您的PC清洁并像新的一样运行.它扫描整个计算机以清理垃圾文件,加速您的PC并提高其性能.CleanMyPC不仅仅是一台PC清洁工 - 它是关注计算机的必备工具.[有能力 ...
- python接口自动化-json数据处理
前言 有些post的请求参数是json格式的,需要导入json模块进行处理,json是一种数据交换格式,独立于编程语言 一般常见的接口返回数据也是json格式的,我们在做判断的时候,往往只需要提取其中 ...
- SQL MIN() 函数
MIN() 函数 MIN 函数返回一列中的最小值.NULL 值不包括在计算中. SQL MIN() 语法 SELECT MIN(column_name) FROM table_name 注释:MIN ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
- MYSQL内置MYSQL数据库中你可以得到的信息
1:help_topic 可以查看函数帮助,例如:SELECT * from help_topic WHERE name='concat' 可以查看concat函数. 2:SLOW_LOG 慢查询日 ...
- js实现搜索记录列表
<div class="sy_div28"> <div class="sy_div23"> <span>搜索历史</s ...
- P3371 【模板】单源最短路径(弱化版)
// luogu-judger-enable-o2 #include<cstdio> #include<iostream> #include<algorithm> ...
- Ubuntu下找不到ttyUSB*问题解决
一.硬件连接 确认Ubuntu对USB转串口设备的支持. 1.# lsmod | grep usbserial如果有usbserial,说明系统支持USB转串口. 如果没有,先安装ch340驱动或者c ...
- keras02 - hello convolution neural network 搭建第一个卷积神经网络
本项目参考: https://www.bilibili.com/video/av31500120?t=4657 训练代码 # coding: utf-8 # Learning from Mofan a ...