写点什么

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

  • 2019-09-24
  • 本文字数:2337 字

    阅读完需:约 8 分钟

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

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


.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


2019-09-24 09:494637
用户头像

发布了 731 篇内容, 共 483.9 次阅读, 收获喜欢 2008 次。

关注

评论

发布
暂无评论
发现更多内容

中国AI:在"相牛班"的春天里

白洞计划

激活数字经济澎湃动能

CECBC

所有资产都在涨,只有比特币在挨打

CECBC

linux删除目录下文件的几种方法

入门小站

如何在 JavaScript 中让代码更加精简

devpoint

ES6 6月月更

竟然能在App里拉起一个小程序?

Geek_99967b

小程序

模块3-外包学生管理系统架构文档

Fan

「架构实战营」

IOC思想开窍之路

留乘船

Java spring ioc

中小互联网公司研发效能团队规模、职能划分和优劣势分析

laofo

DevOps cicd 研发效能 持续交付 互联网公司

leetcode 4. Median of Two Sorted Arrays 寻找两个正序数组的中位数(困难)

okokabcd

LeetCode 查找

有IDE工具能让小程序快速运行在自有App上?

Speedoooo

ide 开发者工具 开发工具 小程序ide

王者荣耀商城异地多活架构设计

小虾米

架构师实战营

富滇银行完成数字化升级|OceanBase数据库助力布局分布式架构中台

OceanBase 数据库

oceanbase 富滇银行

小程序如何与智能电视相结合?

Geek_99967b

小程序

近一个月B站封禁直播间1874个:直播行业仍然是违规重灾区

石头IT视角

智能手表的机遇与挑战

Geek_99967b

物联网

3000帧动画图解MySQL为什么需要binlog、redo log和undo log

CoderW

后端 面试题 Binlog Redo Log MySQL 数据库

内存性能测试工具

穿过生命散发芬芳

5月月更 内存性能测试

模块七

ASCE

给微信小程序配一个App如何?

FinClip

finclip 小程序转app

小程序转App仅需7步

Speedoooo

ide APP开发 小程序转app 前端IDE

flutter系列之:flutter架构什么的,看完这篇文章就全懂了

程序那些事

flutter 架构 程序那些事 5月月更

小程序经济,已经开始制约中小企业的服务及合作

Geek_99967b

小程序

如何获得一场黑客马拉松的胜利?听听AWS特约评委怎么说

FinClip

小程序 黑客马拉松 finclip

在线HTML转ASP工具

入门小站

工具

融云斩获2022年中国信创产业拳头奖“最佳通信与视频会议品牌”大奖

融云 RongCloud

Web 编程入门:什么是Web API?

宇宙之一粟

Web API 5月月更

在线文本左边批量添加字符串工具

入门小站

工具

Flutter 基于 WebSocket 实现即时通讯

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

在FinClip Hackathon中夺冠是一种什么样的体验?

FinClip

小程序 黑客马拉松 finclip

小程序生态构建能力,离不开UI定制自由

Speedoooo

ide 小程序ide

回头草也挺好:试试.NET Core和C#_语言 & 开发_Sam Redmond_InfoQ精选文章