【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

回头草也挺好:试试.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:494120
用户头像

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

关注

评论

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

makefile:带你了解一种常用于GNU gcc编译的工具语言

华为云开发者联盟

编译器 LiteOS makefile 语言 GNU

一文搞懂步进电机特性、原理及驱动器设计

不脱发的程序猿

硬件产品 28天写作 3月日更 步进电机 驱动电机

mysql 四种隔离级别

Sakura

28天写作 3月日更

使用 Flink 前需要知道的 10 个『陷阱』

Apache Flink

flink

JVM笔记 -- JVM经历了什么?

秦怀杂货店

Java JVM

助我拿到37KOffer,这份阿里巴巴890页Redis笔记可谓功不可没

Java架构追梦

Java redis 阿里巴巴 架构 面试

阿里P8亲自教你!2021Android大厂面试知识分享,实战篇

欢喜学安卓

android 程序员 面试 移动开发

Weblogic11g安装部署-winserver篇

xiezhr

中间件 Windows Server 3月日更 weblogic

江苏交通控股打造IT架构云转型下的智慧交通

酷克数据HashData

有道 Kubernetes 容器API监控系统设计和实践

有道技术团队

Kubernetes 容器 分布式

对象存储与HashData多云战略

酷克数据HashData

什么是VXLAN?为什么需要VXLAN?

华为云开发者联盟

网络 虚拟化 VLAN VXLAN 报文

百度×TCL丨鸿鹄语音芯片首次在家电行业量产!

百度大脑

百度 语音识别 百度大脑 智能家居 百度智能云

HashData与HDFS的高效数据交换

酷克数据HashData

火爆!GitHub 标星 144k 的前后端学习路线

沉默王二

学习 后端

Python 中级知识之装饰器,滚雪球学 Python

梦想橡皮擦

28天写作 3月日更

有源晶振和无源晶振的区别

不脱发的程序猿

28天写作 电路设计 3月日更 晶振 元器件

1500道算法面试题:Github上标星86.7K!直接火遍全网

比伯

Java 编程 程序员 架构 面试

阿里P8手把手教你!万字Android技术类校招面试题汇总,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

Midway Serverless 发布 2.0,一体化让前端研发再次提效

Serverless Devs

Serverless 云原生 大前端

《她说》——我们自出版的第一本书

张凯峰

Superset 兼容ADB(AnalyticDB-MySQL)

data_y

Python MySQL Apache Superset

全国大学生智能汽车竞赛-百度线下赛题发布!封狼居胥,等你来战!

百度大脑

人工智能 百度 比赛 飞桨 AI Studio

中国石油数字化转型提速 HashData助力梦想云建设

酷克数据HashData

【LeetCode】 基本计算器 II Java题解

Albert

算法 LeetCode 28天写作 3月日更

百度文心多项任务分数刷新GLUE榜单,NLP界的“MVP”再次夺冠

百度大脑

自然语言处理 百度 文心 ERNIE

我用一个小小的开放设计题,干掉了40%的面试候选人

架构精进之路

Web 安全 软件设计 3月日更

马特量化交易机器人系统开发网格策略

薇電13242772558

PostgreSQL高校数据库课程改革系列活动

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

首款微控制器级树莓派 Pico,超廉价只需4美元

不脱发的程序猿

树莓派 28天写作 3月日更 树莓派 Pico 微处理器

带你全面认识CMMI V2.0(一)

渠成CMMI

项目管理 CMMI

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