在 .net 开发 10 年后,我想将 Nodejs 用于中型应用程序。我只是分享我的经验。
Windows 足迹
如今,大多数新应用都部署在云中。对于 Asp.net,我们需要 windows,虽然它可以在使用 mono 的 Linux 上运行,但我对性能没有足够的信心。仅 Windows 服务器就需要超过 750mb 的内存,我想将我的应用程序部署在 1 GB 内存服务器上以降低成本。所以我想要微型操作系统。 Linux 已经证明了这一点。在这种情况下,Linux 获胜,因此节点 js。
不过我相信 Windows Nano Server 可以在不久的将来解决这个问题。
现在 .Net(核心)在 linux 上运行
.Net 核心
现在 .net 核心是下一个 Node JS。它为 C# 在 Linux 和 Mac 上运行打开了大门。 Unity,Xmarin 也允许创建移动应用程序和游戏。我们现在可以创建可以在 .net core、framework、xmarin 和 Unity 上运行的 .net 标准库。
C# 开发人员的最佳时机。
更快的编码
我可以很好地使用 C# 和 js 编写代码。所以这对我来说不是问题......
代码清晰
这是一个重要的领域。当代码库增长时,JavaScript 中的一切都会变得复杂。一个人的 javascript 可能无法被另一个人阅读。许多 .net 项目具有庞大的代码库,但它易于阅读和调试。一个普通的熟练团队可以更好地管理 C# 代码。对于node js,团队必须精通JS。普通程序员可能无法正确阅读 JavaScript。
简单
nodeJS 非常简单,没有 dll,没有 GAC,没有类。这是很小的,非常小的代码。但是“代码清晰”对我来说比我写的行数更重要。对我来说,简单意味着易于阅读,而不是更快地编写代码。随着代码库的增长,我觉得 C# 比 JS 更简单。
性能
这是有争议的。我觉得我可以使用这两种技术编写性能良好的应用程序。
开源库
Nodejs 在这里获胜。太多的包裹,就像你早餐的种类很多。我很难选择我想要的。我花了一周时间研究 NodeJS 的 ORM 库,环顾 Sequlizer、Sails、Knex,它们都很棒。但是有些人将他们的应用程序从一个框架完全重新编码到另一个框架。这清楚地表明每个框架都缺少一些东西。这在.net 世界中从未发生在我身上。我对 Dapper 和 Service stack ORM lite 感到满意。
但是我们在 node js 中有更多的选择,所以如果我们选择得当,一切都会好起来的。
罢工>
码头工人
Docker 很酷。谁会说“我不要”?这是我想要的窗户的主要内容。我听说微软已经在做一些事情了。我们必须拭目以待……
平台可移植性
Node js 几乎可以在任何操作系统上运行,那又如何呢?我将使用一种操作系统。 AWS 提供了很少的 linux 变体。对我来说,我的应用程序需要什么操作系统并不重要,我担心的是它的成本是多少。在这种情况下,云提供商对 Windows 和 Linux 的定价几乎相同。我喜欢 linux 的唯一原因是它占用的空间非常小。窗户不是。正如我提到的,Windows Nano 将解决这个问题。所以我可以在 Windows 服务器上运行我的应用程序。
现在 .Net 核心在 linux 上运行,所以在 docker 上运行。
最后我决定使用 C# 和 web api。主要原因是我现有的经验。 不过,我会在下一个应用程序中使用 node js。
不再回头。将继续在服务器端使用 C#,并在客户端使用 React JS。