ASP.NET Web Api与Node.js

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

令人遗憾的是,在为我的PHP Web平台编写WCF服务时遇到了很多困难,开发缓慢,configuration非常(非常)复杂,为了在JSON中做好响应并使用RESTful和更多。

当然,我开始环顾其他技术,特别是引起了我的注意,Node.js对我来说可能是完美的,因为我在JavaScript中有很多的经验,这样我就不再需要我的Windows服务器了。 我的另一个select当然是继续用C#编写服务,而是改用ASP.NET Web API。 交换机可能比从WCF到Node.js要容易得多。

有关于此事的任何想法或build议? 有没有人在Node.js中编写Web服务的经验,可以指向一个很好的教程方向? 还是我的方式,我不应该使用Node.js的Web服务呢?

我刚刚开始在express.js上工作。 让我告诉你,这不是为了心灰意懒。 “如果你已经熟悉JS,那么这就是战斗的一半”。 真的不能离真相越来越远。 IE浏览器,如果你是一个像我这样的硬派爱好者。

我有一个统一的构build过程为所有我的asp.net应用程序的构build,testing和覆盖面报告,部署,configurationpipe理和代码质量分析所有设置和自动化。 我花了5分钟的时间来围绕一个新项目build立一个构build过程,并对它进行testing,分析,分阶段和运送到一个生产环境。 (世界上所有的开发者都应该这样做,但是,嘿,我在开玩笑)。然后是监视,logging,性能分析和分析。 再次,所有的统一,协调和集中pipe理。

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

捣毁一堆代码是一回事。 在外国技术上运行生产系统是完全不同的。

除非你在寻找麻烦,我的意思是,挑战:D,坚持WebAPI。 WebDeploy是一个神派。

BTW。 使用BasicHttpBinding和您的WCF端点,并让PHP从WSDL生成客户端类。 是。 肥皂是你的答案,而不是“更容易使用的rest”。 像https://code.google.com/p/php-wsdl-creator/ 。 从WCF端点归档WSDL还可以跟踪服务签名和格式更改的针点准确性。 它确保types安全,并为您处理ser / de。 如果我不必处理这个消息,我不太在意这个消息有多难看。 是的,我以前用PHP和python做过。 作品完美无瑕。

这两个平台都有其优点和缺点,最终都将完成这项工作。

但是,对于我来说,Node.js会为了简单性,开发/部署速度和性能而胜出,而且如果开箱即用,很可能会有一个包它 。

Node现在已经有好几年了,不过最近才开始变得越来越stream行了,以至于微软大大改进了VS中的工具支持 。

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

Windows足迹

大多数新的应用程序现在都部署在云中。 对于一个Asp.net我们需要Windows,尽pipe它在Linux上使用mono,但我对性能还不够信心。 仅Windows服务器需要超过750MB的RAM,我想要在1 GB的内存服务器上部署我的应用程序,以降低成本。 所以我想要小操作系统。 Linux已经被certificate了。 在这种情况下,Linux获胜,因此节点js。 不过我相信Windows Nano Server可以在不久的将来解决这个问题。

.Net核心

现在.net核心是下一个节点JS。 它已经打开了C#在Linux和Mac上运行的大门。 Unity也允许创build移动应用程序。 我们现在可以创build.net标准库,可以在.net核心,框架和Unity上运行。

C#开发人员的最佳时间。

更快的代码

我可以用C#和js编写好代码。 所以这对我来说不是问题

代码清晰

这是一个重要的领域。 当代码库增长的时候,一切都变得复杂了。 一个人的javascript可能不会被另一个人读取。 许多.net项目有很大的代码库,但它易于阅读和可debugging。 一个正常的熟练团队可以更好地pipe理C#代码。 对于j节点,团队必须在JS方面有很高的技巧。 一般的程序员可能无法正确读取JavaScript。

简单

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

性能

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

开源库

Nodejs在这里获胜。 太多的包裹,就像早餐中的几吨品种。 我很难select我想要的东西。 我花了一周的时间在NodeJS的ORM库上,环顾Sequlizer,Sails,Knex,他们都很棒。 但是有些人完全将他们的应用程序从一个框架重新编码到另一个框架。 这清楚地表明,每个框架都缺less一些东西。 这在我的.net世界中从来没有发生过。 我对Dapper和Service stack ORM lite很满意。

但是我们在js节点上有更多的select,所以如果我们select得当,一切都会好起来的。

docker

Docker是很酷的一个。 谁会说“我不要它”? 这是我想要的Windows主要的东西。 我听说微软已经做了一些事情。 我们必须等着瞧…

平台可移植性

节点js几乎可以在任何操作系统上运行,所以呢? 我打算使用一种types的操作系统。 AWS提供了很less的变种。 对我来说,无论我的应用需要什么操作系统,我的担心是多less成本。 在这种情况下,Windows和Linux几乎与云供应商相同。 我喜欢linux的唯一原因是它占用的空间非常小。 Windows不是。 正如我提到的Windows Nano将解决这个问题。 所以我很好在Windows服务器上运行我的应用程序。

现在.net核心运行在Linux上,所以在docker。

最后我决定使用C#和web api。 主要原因是我现有的经验。 不过,我会回头看看我的下一个应用程序节点js。

不要再回头了 将继续与C#的服务器端,并作出反应JS客户端。

那么跨平台可移植性的需求呢? 如果需要在Windows和Linux服务器上部署Web api / REST服务,该怎么办?

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

至less因为这个,我会build议NodeJS的操作