.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开发.因此需要求提前进行一下技术验证,在 ...
随机推荐
- Log4j配置(xml和property两种)
本文章为转载记录,纯粹个人备忘. 一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR 为严重错误 主要是程序的错误WARN 为一 ...
- dede二级导航
{dede:channelartlist} {dede:field name='typeurl'/}'——{dede:field name='typename'/} {dede:channel typ ...
- 【Spring Cloud笔记】Eureka注册中心增加权限认证
在Spring Cloud通过Eureka实现服务注册与发现时,默认提供web管理界面,但是如果在生产环境暴露出来,会存在安全问题.为了解决这个问题,我们可以通过添加权限认证进行控制,具体步骤如下: ...
- sqlserver数据库NULL类型注意事项
1,变量NULL类型赋值需要初始化 2,判断条件
- Windows Server(r12) - 配置 MySQL 远程访问
Windows Server(r12) - 配置 MySQL 远程访问 工作主要为两部分, 一部分是 Windows 防火墙, 一部分是 MySQL 自身 Windows 端口远程访问 其实就是在 W ...
- 自定义react数据验证组件
我们在做前端表单提交时,经常会遇到要对表单中的数据进行校验的问题.如果用户提交的数据不合法,例如格式不正确.非数字类型.超过最大长度.是否必填项.最大值和最小值等等,我们需要在相应的地方给出提示信息. ...
- css display和vertical-align 属性
display 定义和用法 display 属性规定元素应该生成的框的类型. 实例 <html> <head> <style type="text/css&qu ...
- 小功能 HTML标签状态改变
在编写程序得时候根据不同的业务需求会改变相应的标签的状态 今天介绍一下<a>标签状态的改变 当前业务场景为需要A标签的样式 即保留A标签的原有样式 在鼠标悬停得时候鼠标状态呈销售状 都知道 ...
- 原创|1分钟搞定 Nginx 版本的平滑升级与回滚
Nginx无论是对于运维.开发.还是测试来说,都是日常工作需要掌握的一个知识点,之前也写过不少关于Nginx相关的文章: Nginx服务介绍与安装 Nginx服务配置文件介绍 Nginx配置虚拟主机 ...
- 微信h5支付
分为 微信内H5调起支付 和 非微信浏览器H5支付. 1.H5支付(微信内) 参考链接:https://www.jianshu.com/p/6b9acdd10de6 2.JSAPI支付(非微信) 参考 ...