【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

AnyMP4 iPhone Unlocker mac中文激活版 专业iPhone解锁工具

iMac小白

Topaz Photo AI for Mac(人工智能降噪软件)v2.4.0激活版

影影绰绰一往直前

Middle for Mac(触控板和鼠标增强工具) v1.8.4免激活版

iMac小白

BRC-20铭文发行合约系统开发:深度思考与逻辑性

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

苹果电脑新手教程:如何开启任何来源选项

Rose

mac电脑 苹果电脑 任何来源

万字带你走过数据库的这激荡的三年

不在线第一只蜗牛

数据库 开发 数据集

聊聊 HTTP 性能优化

EquatorCoco

性能优化 网络协议 HTTP

ProPresenter for Mac(现场分屏演示工具) v7.16.1汉化版

iMac小白

System Toolkit for Mac(mac系统维护软件)v6.1.0中文激活版

影影绰绰一往直前

安装mac软件时提示已损坏,无法打开,应该移到废纸篓的解决办法

Rose

苹果电脑有哪些好用的修图软件?

Rose

修图 抠图 Mac软件 照片编辑

PullTube for Mac(在线视频下载器) v1.8.5.27中文激活版

iMac小白

NTFS Disk by Omi NTFS for Mac(NTFS 磁盘管理器) v1.1.4激活版

iMac小白

面试官:说说SSO单点登录的实现原理?

不在线第一只蜗牛

程序员 面试 SSO 单点登录

不会使用ps怎么办?适用于苹果Mac的最佳Photoshop替代品

Rose

Mellel 6 for Mac(文字处理软件) v6.0.3中文激活版

iMac小白

实时数据驱动:API商品数据接口的三重保证,助力您的业务飞跃

Noah

已解决org.springframework.web.bind.MissingRequestHeaderException缺少请求头异常的正确解决方法,亲测有效!!!

小明Java问道之路

什么是 web 应用的 type-ahead search help

秃头小帅oi

AI会夺走程序员的饭碗吗?

算AI

#人工智能

FastScripts for Mac(脚本调用工具) v3.3.1激活版

iMac小白

Photomator for mac(照片编辑器) v3.3.2中文版

iMac小白

Disk Drill for Mac(数据恢复软件)v5.4.1426中文激活版

iMac小白

10个技巧,3分钟教会你高效寻找开源项目

快乐非自愿限量之名

开源 项目开发

Mac延长电池的使用寿命AlDente for Mac电池最大充电限制工具

iMac小白

Serial Box for Mac(软件序列号查询软件)v2024.03激活版

影影绰绰一往直前

adobe 系列应用出现Error无法继续安装,文件已损坏,无法打开解决方法

Rose

TunesKit Screen Recorder for mac(录屏软件)v2.6.0直装版

影影绰绰一往直前

AI实战 | 由浅入深,手把手带你实现Java转型学习助手

EquatorCoco

Java 人工智能 AI AI技术

2024-03-02:用go语言,一个句子是由一些单词与它们之间的单个空格组成, 且句子的开头和结尾没有多余空格, 比方说,“Hello World“ ,“HELLO“ ,“hello world h

福大大架构师每日一题

福大大架构师每日一题

全栈开发(TS,React,Vue, Java, 移动端flutter)接单

hz

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