您的位置:首页 > 游戏 > 游戏 > 做网站开发还会有前途吗_益阳网络_营销图片素材_软文宣传推广

做网站开发还会有前途吗_益阳网络_营销图片素材_软文宣传推广

2024/12/23 16:39:52 来源:https://blog.csdn.net/m0_65804432/article/details/144264105  浏览:    关键词:做网站开发还会有前途吗_益阳网络_营销图片素材_软文宣传推广
做网站开发还会有前途吗_益阳网络_营销图片素材_软文宣传推广

1 什么是.NET Core

.NET是开发平台,.NET Framework、.NET Core、Xamaarin/Mono的统称。

.NET Framework是只能在Windows上开发的技术

.NET Core是可以跨平台开发的技术

Xamaarin/Mono是移动端开发的技术

.NET Core:跨平台、免费、开源,可以在云计算上开发的技术

跨平台指的是:程序可以运行在Windows、Linux、Mac操作系统上

什么是云计算?

背景:传统软件开发中服务器部署是:搞个机房,买上100台服务器放里头。但事实上平常需要的服务器只要10台,只是偶尔的高峰期才需要100台,这就造成了浪费。

云计算:就是在网络上联系服务器厂商,来买多少服务器的多长时间的使用权限。就前面一个例子,我只需买10台服务器放机房,等某10天需要用100台服务器时,就远程联系厂家,购买他们90台服务器10天的使用权限,大大的节约了成本。.NET Core就是为云而生的技术

2 .NET Core的重要问题

.NET Framework与.NET Core中大部分类相同,但.NET Core不是.NET Framework的无缝升级,有1%的程序不能在这两个平台上都编译。

mono技术可以使.NET Framework在Linux上运行,但为什么微软还要推出.NET Core,因为:

. NET Framework缺点:
1、系统级别的安装,互相影响
2、无法独立部署
3、ASP. NET 和IIS深度耦合
4、ASP.NET资源消耗大
5、非云原生

.NET Framework历史包袱:
1、带着手铐脚镣长大的ASP. NET MVC
2、ASP. NET底层不支持很好的单元测试

NET Core的优点:
(1)支持独立部署,不互相影响;
(2)彻底模块化;
(3) 没有历史包袱,运行效率高
(4) 不依赖于IIS
(5)跨平台
(6)符合现代开发理念,依赖注入、单元测试等

.NET Core和.NET Framework不同:
(1).NET Core不支持:
ASP. NET WebForms. WCF服务务器端、WF、.NET Remoting、Appdomain
(2).NET core部分只能在Windows运行的,无法跨平台的技术:WinForm、WPF、注册表、Event Log、AD等。但是除了上述第5个跨平台优点不具有外,其他优点都具有。

3 .NET Standard

.NET Framework .NET Core笼统的称为.net,它们和Xamaarin必须遵守 .NET Standard标准,这个标准规定了.NET Framework和 .NET Core要有什么类,类中有什么方法,而.NET Framework和 .NET Core就需要负责怎么实现这些类,以及类中的方法。

虽然.NET Framework .NET Core和Xamaarin会有一些特殊的类,但也须遵守 .NET Standard标准

注意:

①NeT Standad只是规范,一个NET Standard类库可以被支持其版本的.NET Framework、NET Core、Xamarin等引用。

而.NET Core类库、.NET Framework类库则不可以。
如果编写一个公用的类库,尽量选择.NETStandard,并且尽量用低版本。因为它自身版本高的话,不能支持低版本.NET Framework、NET Core。
 

②NET Framework支持到.NET Standard 2.0为止
官方说明
从.NET 5开始,微软开始淡化其他叫法,统一为.NET,后续默认.NET就是指的. NET Core。

实操:

验证.NET Standard只是提供标准,不负责实现:
(1)新建.NET Standard类库项目,确认版本是2.0,建个类,方法中打印typeof (FileStream).     Assembly. Location.

using System;
using System.IO;namespace TestLib1
{public static class Class1{public void Test() {Console.WriteLine(typeof(FileStream).Assembly.Location);//拿到FileStream的类型 所在的程序集 所在的磁盘空间位置}}
}

(2) 分别建.NET Framework和.NET Core的控制台项目,添加对类库项目引用,并且调用。

类库项目无法直接运行,在解决方案中新建一个.NET Core控制台项目还有一个.NET Framework控制台项目。然后它们都引用刚刚新建的.NET Standard类库项目

细节:.NET Standard有类库但是没有控制台,是因为它只是一个标准,不是实现。所以说类库可以符合一个标准,但是一个控制台无法通过.NET Standard来运行。

.NET Core控制台项目代码以及运行结果:

using System;
using System.IO;namespace ClassLibrary1
{public class Class1{public static void Test(){Console.WriteLine(typeof(FileStream).Assembly.Location);//拿到FileStream的类型 所在的程序集 所在的磁盘空间位置Console.WriteLine(typeof(Class1).Assembly.Location);}}
}

.NET Framework控制台项目代码以及运行结果:

using ClassLibrary1;
using System;namespace FrameworkConsole1
{internal class Program{static void Main(string[] args){Class1.Test();Console.ReadLine();}}
}

在.NET Standard类库项目中,查看FileStream定义,可以看到它所在的位置:

// C:\Users\31513\.nuget\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\netstandard.dll

可以看出,三个项目中对于同一个FileStream的类型 所在的程序集 所在的磁盘空间位置不同,也就是它们在不同项目中属于不同程序集。

(3) 用反编译工具ILSpy(尽管开源)分别反编译VS中FileStream、.NET Framework和.NET       Core运行中的。BeginRead方法实现以及定义有不同。

反编译器ILSpy,能够将程序集转成源码。现在看下同一个FileStream的类型 所在的程序集的源码有什么不一样。

ILSpy下载地址:GitCode - 全球开发者的开源社区,开源代码托管平台

①通过反编译.NET Standard中的程序集得到的源码看到:

有很多的方法和类,但是没有方法体,都是空的,并且上方有提示:只含源数据,不包含可执行代码。

结论:只有定义,没有实现

②通过反编译.NET Core中的程序集得到的源码看到:

③通过反编译.NET Framework中的程序集得到的源码看到: 

 结论:后两个对方法都有实现,部分同一个方法实现会有点不同。

4 .NET开发环境安装配置

.NET 开发工具:
(1). NET CLI: 命令行
(2) Visual Studio: Windows-Only(推荐)
(3)Visual Studio for Mac
(4)Jetbrains Rider: 收费
(5) VS Code(Visual Studio Code) :跨平台

微软文档地址:下载 .NET(Linux、macOS 和 Windows)

(建议多看文档,提高自学能力)

安装了.net,就自带1). NET CLI,可以用cmd命令行来敲代码装佬,

dotnet --version 查看版本
dotnet new console//在当前文件夹建立一个控制台项目
dotnet run 构建并运行
详细可见官方文档“.NET CLI”部分

 以下是实操截图:

 查文档,看所需命令

 

5 .NET项目结构及程序发布

csproj项目文件

这是.NET Core的csproj文件,csproj文件是项目文件,主要描述一些项目的信息,描述是什么类型的项目、用的net版本号……

(可以在vs双击进行修改)

 这是.NET Framework的csproj文件,复杂了很多。项目引用了哪些程序集、有哪些源代码文件、描述是什么类型的项目、用的net版本号……

(不可以在vs双击进行修改,只能在文件夹中修改,容易出错,不建议改)

 包含这个项目所有的文件

注意点:

在.NET Framework中,移除某个文件后,该文件就不会出现在csproj项目文件中。

在.NET Core中,移除某个文件后,该文件才会出现在csproj项目文件中。因为它默认包含所有已有的文件,但移除某个文件后,会在csproj项目文件显式表现出

例:在.NET Core中,移除Class.cs文件,可以在csproj项目文件看到:

程序的发布

程序发布后,可以把那个包在别的电脑上运行

部署模式中,

选依赖框架,则要在目标计算机上安装.net运行环境。

选独立,则不用在目标计算机上安装.net运行环境,它生成的包里就含有.net运行环境。

一般都选独立,可以达到多个项目互不干扰。

目标运行时:

选可移植,则可兼容各个操作系统。也可选具体操作系统。

还有这文件发布选项,

生成单个文件:避免出现一大堆文件,会以几个个文件夹形式呈现

启用Ready ToRun编译:会提高启动速度,降低编译速度。

裁剪未使用的代码: 将用不到的程序集不打包

启用Ready ToRun编译、裁剪未使用的代码都有缺点,用到时可查看官方文档了解。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com