如何部署二进制dotnet(.NET)?

.NET

1 基础知识

1.1 .NET的基础概念

1.1.1 .NET的概念

– .NET是一个通用的开发平台
– .NET支持多种编程语言
– .NET支持异步和并发编程模型
– .NET支持本机或操作性
– .NET支持跨多个平台

1.1.2 .NET运行时

– .NET运行时即是托管程序的运行环境
– .NET的运行环境即是操作系统
– .NET运行时有,
— .NET Framework公共语言运行时(CLR)
— .NET Core核心公共语言运行时(CoreCLR)
— .NET Native(适用于通用Windows平台)
— Mono运行时(用于Xamarin.iOS、Xamarin.Android、Xamarin.Mac和Mono桌面框架)

1.1.3 .NET SDK

– .NET Core SDK是一组库和工具,用于创建.NET Core应用程序和库
– .NET Core Core SDK包含.NET Core CLI工具、.NET Core库、.NET Core运行时和dotnet驱动程序

1.1.4 .NET Standard

– .NET Standard是一套正式的.NET API规范
– .NET Standard使用.NET基类库实现跨.NET生态系统的统一API
– .NET Standard是构成统一协定集合的特定API组(统一协定集是编写代码的依据)
– .NET Standard的统一协定集合在每个.NET中都有实现(目的是增强不同.NET间的可移植性)
– .NET Standard使得代码可运行于任何.NET环境

1.2 .NET支持的语言

1.2.1 .NET积极开发和支持的语言

– C#
– F#
– Visual Basic(VB)

1.2.2 C#

– C#是一种简单、强大、类型安全和面向对象的语言
– C#保留C语言的表达力度和简洁的特点

1.2.3 F#

– F#是一种跨平台、功能优先的编程语言
– F#支持传统面向对象编程和命令式编程

1.2.4 Visual Basic

– VB一种简单易学的语言
– VB用于生成.NET上运行的各种应用
– VB语法最接近人类的普通用语(容易上手)

1.3 .NET的实现方案

1.3.1 实现方案的分类

– .NET Framework
– .NET Core
– Mono
– UWP
注:
– 以上4个实现方式都是Microsoft积极开发和维护的实现
– 所有实现都通过.NET Standard的通用API规范

1.3.3 .NET Core方案

– NET Core用于实现.NET跨平台
– NET Core专门用于处理大规划的服务器和云工作负荷
– NET Core可运行于Windows、macOS和Linux环境
– NET Core符合.NET Standard(即面向.NET Standard的代码都能运行于NET Core)
– NET Core是ASP.NET Core的运行基础

1.3.4 .NET Framework方案

– .NET Framework即最原始的.NET实现
– .NET Framework是当前开发人员最常使用的实现
– .NET Framework含4.5内的更高版本实现.NET Standard
– .NET Framework含4.5内的更高版本可运行面向.NET Standard的代码
– .NET Framework包含特定于Windows的API(如通过Windows视窗和WPF进行Windows桌面开发的API)
– .NET Framework非常适合用于生成Windows桌面应用程序

1.3.5 Mono方案

– Mono是微运行环境的.NET实现
– Mono适合于小内存的环境
– Mono可运行于Android、Mac、iOS、tvOS和watchOS(基于Xamarin应用程序运行时)
– Mono支持使用Unity引擎生成游戏
– Mono支持所有当前已发布的.NET Standard版本
– Mono可实现更大的.NET Framework API和模拟一些Unix常用功能(适合于依赖Unix环境的程序)
– Mono通常与实时编译器一起使用(亦提供iOS之类平台使用的完整静态编译器,即预编译)

1.3.6 通用Windows平台(UWP)方案

– UWP用于物联网(IoT)生成新式触控Windows应用程序和软件的.NET实现
– UWP目标是统一基于UWP实现的不同类型设备(如电脑、平板电脑、平板手机、电话和Xbox)
– UWP提供许多服务,如集中式应用商店、执行环境(AppContainer)和一组Windows API(用于代替Win32,即WinRT)
– UWP的应用可使用C++、C#、VB.NET和JavaScript编写
– UWP使用C#和VB.NET时,.NET API由.NET Core提供

1.4 .NET的实现方案的选择

1.4.1 需要选择的原因

– .NET Framework和.NET Core两者共享许多相同的组件
– .NET Framework和.NET Core两者存在根本的差异

1.4.2 适合选择.NET Core的场景

– 项目有跨平台的需求
– 项目定位为微服务
– 项目需要使用Docker容器
– 项目需要高性能和可扩展的系统
– 项目需要应用程序提供并行的.NET版本

1.4.3 适合选择.NET Framework的场景

– 项目当前基于.NET Framework开发且只有扩展需求
– 项目使用不能用于.NET Core的第三方.NET库或NuGet包
– 项目使用不能用于.NET Core的.NET技术
– 项目使用不支持.NET Core的平台

1.5 .NET的实现方案所需的组件

– 可包含一个或多个运行时(运行时包括用于.NET Framework的CLR和用于.NET Core的CoreCLR和CoreRT )
– 可包含实现.NET Standard和其他API的类库(例如.NET Framework和.NET Core的基类库)
– 可包含一个或多个应用程序框架(例如ASP.NET、Windows视窗和Windows Presentation Foundation,即WPF)
– 可包含开发工具(某些开发工具可在多个实现之间共享)

2 最佳实践

2.1 系统环境

2.1.1 系统环境信息

OS = CentOS 7.6 x86_64
IP Addresses = 10.168.0.71
hostname = dotnet.cmdschool.org

2.1.2 安装常用工具

yum install -y vim wget

2.2 下载软件包

2.2.1 下载dotnet-runtime

cd ~
wget https://download.visualstudio.microsoft.com/download/pr/28271651-a8f6-41d6-9144-2d53f6c4aac4/bb29124818f370cd08c5c8cc8f8816bf/dotnet-runtime-2.2.3-linux-x64.tar.gz

本章选择v2.2.3作为配置范例,其他版本请从以下链接下载,
https://dotnet.microsoft.com/download/dotnet-core/2.2

2.2.2 下载dotnet-sdk(按需求)

cd ~
wget https://download.visualstudio.microsoft.com/download/pr/2cecc1f4-5c77-4a9f-a2fa-8bfcee4d4bf0/4e68e8e0e0aac72711eb34c3a9988e45/dotnet-sdk-2.2.202-linux-x64.tar.gz

本章选择v2.2.3作为配置范例,其他版本请从以下链接下载,
https://dotnet.microsoft.com/download/dotnet-core/2.2

2.3 配置.NET运行时

2.3.1 创建安装目录

mkdir -p /usr/dotnet/dotnet-runtime/

2.3.2 解压软件包

tar -C /usr/dotnet/dotnet-runtime/ -xf dotnet-runtime-2.2.3-linux-x64.tar.gz

2.3.3 配置环境变量

vim /etc/profile.d/dotnet-runtime.sh

加入如下内容,

export DOTNET_HOME=/usr/dotnet
export DOTNET_ROOT=$DOTNET_HOME/dotnet-runtime
export PATH=$PATH:$DOTNET_ROOT

2.3.4 导入环境变量

source /etc/profile.d/dotnet-runtime.sh

2.3.5 重启清空运行时环境变量配置

reboot

2.3.6 测试配置

dotnet --info

信息显示如下,

Host (useful for support):
  Version: 2.2.3
  Commit:  6b8ad509b6

.NET Core SDKs installed:
  No SDKs were found.

.NET Core runtimes installed:
  Microsoft.NETCore.App 2.2.3 [/usr/dotnet/dotnet-runtime/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

2.4 配置.NET SDK(按需求)

2.4.1 创建安装目录

mkdir -p /usr/dotnet/dotnet-sdk/

2.4.2 解压软件包

tar -C /usr/dotnet/dotnet-sdk/ -xf dotnet-sdk-2.2.202-linux-x64.tar.gz

2.4.3 配置环境变量

rm -f /etc/profile.d/dotnet-runtime.sh
vim /etc/profile.d/dotnet-sdk.sh

加入如下内容,

export DOTNET_HOME=/usr/dotnet
export DOTNET_ROOT=$DOTNET_HOME/dotnet-sdk
export PATH=$PATH:$DOTNET_ROOT

2.4.4 导入环境变量

source /etc/profile.d/dotnet-sdk.sh

2.4.5 确认SDK安装

dotnet --info

信息显示如下,

.NET Core SDK (reflecting any global.json):
 Version:   2.2.202
 Commit:    8a7ff6789d

Runtime Environment:
 OS Name:     centos
 OS Version:  7
 OS Platform: Linux
 RID:         centos.7-x64
 Base Path:   /usr/dotnet/dotnet-sdk/sdk/2.2.202/

Host (useful for support):
  Version: 2.2.3
  Commit:  6b8ad509b6

.NET Core SDKs installed:
  2.2.202 [/usr/dotnet/dotnet-sdk/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.2.3 [/usr/dotnet/dotnet-sdk/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.2.3 [/usr/dotnet/dotnet-sdk/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.2.3 [/usr/dotnet/dotnet-sdk/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

注:以上SDK版本为“2.2.202”

2.5 使用.NET SDK(按需求)

2.5.1 使用SDK创建应用

cd ~
dotnet new console -o myApp

创建完成后,可使用如下命令测试程序的运行,

cd ~/myApp
dotnet run

可见如下显示,

Hello World!

2.5.2 修改应用程序

cd ~/myApp
vim Program.cs

修改代码如下,

using System;

namespace myApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Console.WriteLine("The current time is " + DateTime.Now);
        }
    }
}

测试修改的代码,

cd ~/myApp
dotnet run

可见如下显示,

Hello World!
The current time is 9/12/19 9:42:37 PM

===============

部署教程
———-
https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.2.202-linux-x64-binaries

软件下载
———
https://dotnet.microsoft.com/download/dotnet-core/2.2
https://dotnet.microsoft.com/download/dotnet-core

没有评论

发表评论

.NET
如何部署Docker .NET Core?

1 基础知识 1.1 基于Docker的.NET简介 – .NET Core可运行于Do …

.NET
如何yum部署dotnet(.NET)?

1 基础知识 1.1 .NET的基础概念 1.1.1 .NET的概念 – .NET是一个 …

.NET
如何部署基于Centos 6.x的ASP.NET环境

1 前言 应技术主管要求,为公司实现ASP.NET框架跨平台运行于Linux服务器上。笔者读书时候也 …