zoukankan      html  css  js  c++  java
  • Centos7上开发.Net Core项目

    本文主要内容是简单介绍如何在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 2 许可证。 
    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.软件安装

    1.安装VMWare虚拟机管理软件
    
    2.安装Centos7虚拟机
    
    3.安装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系统上。

  • 相关阅读:
    Apache Hadoop 3.0.0 Release Notes
    控制你的数据,你才能得到有效且高效的数据结果
    读写分离与主从同步数据一致性
    代理ip proxy
    maximize_window fullscreen_window minimize_window
    HTTP 代理原理及实现
    browser user agent
    res_d_l =[{'contents':d.contents,'href':d.attrs['href']} for d in rd] 泛型
    tmp
    Connection reset by peer
  • 原文地址:https://www.cnblogs.com/wyy1234/p/10430411.html
Copyright © 2011-2022 走看看