35

回头草也挺好:试试.NET Core和C#-InfoQ

 4 years ago
source link: https://www.infoq.cn/article/RpUvK6q83cI6IP0Xw3EW
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

回头草也挺好:试试.NET Core 和 C#

发布于:2019 年 9 月 24 日 09:49

回头草也挺好:试试.NET Core和C#

我的编程之路是从《青少年 Visual Basic 游戏编程》这本书开始的,那时我还年轻。从那以后,我的整个职业生涯几乎都在使用 .NET,有 99% 的时间使用的是 C#,而不是 Visual Basic。我一直在想,C# 的好日子什么时候会到来。有那么一段时间,它看起来离我们越来越近了。在这篇文章中,我想聊聊 .NET,以及为什么我认为它可能会回归。不过,这仍然有一些障碍需要克服,而最大的障碍就是它与 Windows 的紧密联系。

回头草也挺好:试试.NET Core和C#

.NET Core 要解决的问题

直到 2017 年,.NET 开发都还只能在 Windows 上进行,并且只能部署到 Windows 环境中。这是 .NET 最大的缺陷。这个问题至今仍然困扰着 .NET,原因如下:

Windows 许可

开发 .NET 代码不需要什么特别的东西,但如果要将它部署到生产环境,就需要 Windows 服务器。开发人员还需要为操作系统和相关授权支付费用。我在 2015 年购买了 Windows Server 2012,一个许可就花了 660 美元。如果你是一家公司,不会只购买一个许可这么简单。虽说这样的成本可能还算不上很高,但要知道,Ubuntu 服务器的成本为零,而且更轻量,速度更快。

Docker 和 Kubernetes 兼容性问题

2013 年 12 月, Docker 发布了。不到两年,也就是 2015 年 7 月,谷歌发布了基于 Docker 的 Kubernetes。我不想再详细介绍 Docker 或 Kubernetes 了,需要知道的是,Docker 为代码提供了一个特定的容器。它是一个构建在 Linux 内核之上的轻量级虚拟环境,只运行用户提供的代码。Docker 的美妙之处在于,同样的代码在所有机器上具有相同的行为,解决了“在我的机器上没问题,到了生产环境就有问题”这一由来已久的问题。唯一的缺点是,如果有大量的容器,管理和扩展就变得很困难。

Kubernetes 为容器编制问题提供了解决方案。有了这项技术,启动和管理容器就变得很容易。但因为 Docker 只使用轻量级 Linux 内核,所以兼容性只是针对 Linux 而言的,.NET 开发人员无法使用这项令人难以置信的技术。

AWS 在 2006 年发布了第一个公有云,从基本的产品开始:Elastic Compute Cloud(EC2)和 Simple Storage Service(S3)。自那时起,亚马逊、微软、谷歌、IBM 以及其他一些公司都在争先恐后地推出自己的云服务。Docker、Kubernetes 和 Linux 为大量的云产品提供了支撑,这也导致 .NET 开发人员无法使用这些(但并非所有)云产品,也有很多云供应商提供了便利的 Windows 服务器虚拟机,但仍然需要支付许可费用,而且不能使用 Docker 或 Kubernetes。

Visual Studio 需要事先声明的是,以下是我基于个人在 Windows 上使用 Visual Studio 的经验而得出的观点。可以说,它是最强大的 IDE 之一,但它也有一些严重的缺点。首先,它占用的空间太大。Visual Studio 会占用 2 到 5GB 的磁盘空间,这对于一款 IDE 来说有点过分了。它还会占用很大的资源,如果只是为了写点代码而打开它,会觉得很费劲。记得之前有个项目,我甚至都可以在 Visual Studio 打开之前去吃顿午饭回来(顺便说一下,我的机器是新的,有 32GB 内存)。

走出 Windows 的藩篱

之前提到过,.NET Core 2.0 在 2017 年 8 月发布了,引入了对 .NET 的跨平台支持。现在你可以把 .NET 开发带到 Linux 和 Mac 上了。微软甚至还发布了 Mac 版的 Visual Studio。实际上,相比 Windows 版本,我更喜欢使用 Mac 版的 Visual Studio!微软还发布了一个非常好的 CLI,可以在任何平台上创建和管理 .NET 项目。

我不得不为微软迈出的跨平台这一步点个赞。现在,你可以自由使用之前无法使用的东西,很多开发团队正在享受这份福祉。如果你像我一样由于之前提到的那些问题而离开了 .NET,我强烈建议你再回头尝试一下 .NET Core 2.0。

微软没有对 C# 进行过多修改

微软做了一件了不起的工作,他们没有改变 C# 语言的任何东西,所以不需要再去学习什么特别的东西,只需要安装 dotnet CLI 和运行时就可以。安装起来很快,然后就可以用同样的方式编写熟悉的 C# 代码了。不过,如果有一个标准版的项目,就需要做一些转换,但转换起来也很容易。

如果你刚开始学习编程语言,C# 可能是适合的。即使你最开始接触的是 .NET Core,要转到 .NET Standard 也很容易。

Visual Studio 并不是必需的

虽然我很喜欢 Mac 版的 Visual Studio,但它并不是必需的。你也可以使用其他常用的 IDE(比如 Visual Studio Code 或 Atom)。它们有很多语言插件,可以享受很多很酷的功能,比如代码自动完成和智能感知。但这些 IDE 都不能真正取代 Visual Studio,正如我之前说过的,它太强大了。不过,好在我们没有完全被绑定到 Visual Studio,这点很好。

.NET 遗留代码

.NET Core 2.0 虽然很好,但它毕竟也才两岁。我曾经在很多公司工作过,他们基于 .NET Standard 构建了大量的应用程序,但直到现在都没有时间和预算将它们迁移过来。一般来说,大多数开发 .NET 应用程序的公司都被微软的订阅服务绑得死死的,他们现在才开始着手处理遗留代码。

我觉得 .NET 的过去带有某种程度的耻辱,很多公司因为这个问题而没有采用这项技术。我是众多离开 .NET 转向 Go 语言、 Python 和 NodeJS/TypeScript 的人当中的一个,我之前真的不认为自己会再回过头来,但事实是,现在我回来了。

不管是开发新手,还是经验丰富的开发人员,如果想要学习一门新语言,我认为可以考虑一下 .NET 和 C#。如果想要构建一个大型复杂的 Web 应用程序,.NET MVC 会让一切都变得非常容易。新的 CLI 工具使用起来非常简单——整合代码,创建样板代码,确保所有东西都能够正确地连接在一起。它还能够非常好地与你正在使用的前端框架集成。如果想要构建一个跨平台的原生桌面或移动应用程序,.NET 再好不过了。如果只想构建一个 API 或微服务,这也很容易。 Visual Studio 甚至还提供了一些工具,可以用来自动将应用程序部署到云端。

原文链接:

Give .NET Core and C# a Try

3710a7e3117c09108ca2946f92a43d5f.jpg

阅读数:3502 发布于:2019 年 9 月 24 日 09:49

文章版权归极客邦科技 InfoQ 所有,未经许可不得转载。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK