ASP.NET Web Api vs Node.js

本文关键字:Node js vs Api NET Web ASP | 更新日期: 2023-09-27 17:50:48

我最近开始将我工作的一个web平台连接到其他主要用c#编写的相当复杂的系统。我的大部分经验是在PHP和JavaScript的web开发我也有一些使用WCF编写web服务的经验。

遗憾的是,在为我的PHP web平台编写WCF服务时,我经历了许多困难,开发缓慢,为了在JSON中做出良好的响应和在RESTful中工作等等,配置非常(非常)复杂。

自然地,我开始寻找其他技术,其中一个特别吸引了我的眼球Node.js,它可能对我来说是完美的,因为我有相当多的JavaScript经验,这样我就不需要我的windows服务器了。我的另一个选择当然是继续用c#编写服务,但改用ASP。NET Web API。从WCF切换到Node.js可能要容易得多。

对这件事有什么想法或建议吗?有没有人有在Node.js中编写web服务的经验,可以指出我在一个好的教程的方向?还是说我错了,我根本不应该在web服务中使用Node.js ?

ASP.NET Web Api vs Node.js

我最近刚开始使用express.js。让我告诉你,胆小的人不适合。"如果你已经熟悉了JS,那就成功了一半"的整个心态真的与事实相距甚远。例如,如果你是一个像我一样的硬核开发人员。

我有一个统一的构建过程,我所有的asp.net应用程序的构建,测试和覆盖报告,部署,配置管理和代码质量分析全部设置和自动化。我只需要5分钟就可以围绕一个新项目建立一个Build流程,并对其进行测试、分析、分级和交付到生产环境中。世界上所有的开发者都应该这么做。但是,嘿,我在骗谁呢?)然后是监控、日志记录、性能分析和概要分析。再次,一切都很好地统一、编排和集中管理。

我不是说node.js/express.js没有这些,但是你必须开发/学习一套全新的服务和平台来运行node.js。

写出一堆代码是一回事。在外国技术上运行生产系统完全是另一回事。

除非你自找麻烦咳咳我的意思是,挑战:D,坚持使用WebAPI。WebDeploy是天赐之物。

顺便说一句。将BasicHttpBinding与WCF端点一起使用,并让PHP从WSDL生成客户端类。是的。肥皂是你的答案,而不是"更容易使用的休息"。比如https://code.google.com/p/php-wsdl-creator/。从WCF端点存档WSDL还允许您跟踪服务签名和格式更改的精确程度。它确保类型安全,并为您处理ser/de。如果我不需要处理它,我就不会太在意消息看起来有多难看。是的,我以前用PHP和python做过。完美工作。

经过10年的。net开发,我想用Nodejs做一个中等规模的应用程序。我只是分享我的经验。

<罢工> Windows足迹

如今,大多数新应用程序都部署在云端。对于Asp.net,我们需要windows,虽然它在Linux上使用mono工作,但我对性能没有足够的信心。仅Windows服务器就需要超过750mb的内存,我希望将我的应用部署在1gb内存的服务器上以降低成本。所以我想要一个小的操作系统。Linux已经证明了这一点。在这种情况下,Linux获胜,因此node js。不过我相信Windows Nano Server可以在不久的将来解决这个问题。>

。网络核心

现在。net core是下一个Node JS。它打开了c#在Linux和Mac上运行的大门。Unity、Xmarin也允许创建移动应用程序和游戏。我们现在可以创建。net标准库,它可以在。net core, framework, xmarin和Unity上工作。

c#开发者的最佳时间。

更快地编码

我可以很好地在c#和js上编码。所以这对我来说不是问题……

代码清晰

这是一个重要的领域。当代码库增长时,JavaScript中的一切都会变得复杂。一个人的javascript可能无法被另一个人读懂。许多。net项目都有很大的代码库,但它很容易阅读和调试。一个普通的熟练团队可以以更好的方式管理c#代码。对于node js,团队必须精通js。一般程序员可能无法正确阅读JavaScript。

简单

nodeJS非常简单,没有dll,没有GAC,没有类。它很小,非常小的代码。但对我来说,"代码清晰度"比我写的代码行数更重要。对我来说,简单意味着易于阅读,而不是更快地编写代码。当代码库增长时,我觉得c#比JS更简单。

这是有争议的。我觉得我可以用这两种技术写出性能良好的应用程序。

开源库

Nodejs在这里胜出。太多的包装,就像你的早餐里有很多种类。我很难选择我想要什么。我花了一周的时间研究NodeJS的ORM库,看了看sequalizer, Sails, Knex,它们都很棒。但有些人完全重新编码他们的应用程序从一个框架到另一个。这清楚地表明,每个框架都遗漏了一些东西。在网络世界里,这种事从来没有发生在我身上。我对Dapper和服务栈ORM很满意。

但是我们在node js中有更多的选择,所以如果我们选择得当,一切都会很好。<罢工>

码头工人

Docker很酷。谁会说"我不想要"?这是我对窗口的主要要求。我听说微软已经在做一些事情了。我们必须等等看……

平台可移植性

Node js几乎可以在任何操作系统上运行,那又怎样?我将使用一种操作系统。AWS提供的linux版本非常少。对我来说,应用需要什么操作系统并不重要,我担心的是成本。在这种情况下,云提供商对Windows和Linux的定价几乎相同。我喜欢linux的唯一原因是它占用空间很小。Windows不是。正如我提到的,Windows Nano将解决这个问题。所以我可以在windows服务器上运行我的应用程序。

现在。net core可以在linux上运行,所以在docker上。

最后我决定使用c#和web api。主要原因是我已有的经验。

不再回头。服务器端将继续使用c#,客户端将使用react JS。

两个平台都有各自的优点;缺点,最终两者都能起到作用。

然而,用过两者之后,对我来说,Node.js在简单性、开发/部署速度和开箱即用的性能方面会轻松获胜——如果它没有开箱即用,很可能有一个适合它的包。

Node已经存在好几年了,然而,它最近才开始变得越来越流行——以至于微软大大改进了vs中的工具支持。

对跨平台可移植性的需求呢?如果需要同时部署在Windows和Linux服务器上的web api/REST服务呢?

WCF -我不认为它可以去Linux(尚)(mongo?? ?)WebAPI -不能去Linux(我认为??)NodeJS -跨平台运行时可用。代码一旦部署到任何地方。xyz -我们还有什么可以提供所有这些?

至少因为这个,我建议NodeJS的op