ASP.NET Web Api与Node.js

Ita*_*iss 38 javascript c# wcf web-services node.js

我最近开始将我工作的网络平台连接到其他非常复杂的系统,这些系统大多用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服务的经验,并且可以指向一个好的教程的方向?或者我离开了,我不应该将Node.js用于网络服务?

Sle*_*ith 47

我刚刚开始研究express.js.让我告诉你,这不适合胆小的人.整个心态"如果你已经熟悉JS,那那就是成功的一半." 真的离真相太远了.IE,如果你是像我这样的铁杆精灵.

我有一个统一的构建过程,用于我所有的asp.net应用程序构建,测试和覆盖报告,部署,配置管理和代码质量分析,所有设置和自动化.我花了5分钟来围绕一个新项目设置构建过程,并对其进行测试,分析,分阶段并运送到生产环境.(世界上所有的开发者都应该这样.但是,嘿,我在开玩笑.)然后是监控,记录,性能分析和分析.所有这些都很好地统一,协调和集中管理.

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

敲定一堆代码是一回事.在外国技术上运行生产系统完全是另一回事.

除非你寻找的麻烦啊哈我的意思是,挑战:d,坚持的WebAPI.WebDeploy是神派.

BTW.将BasicHttpBinding与WCF端点一起使用,并使PHP从WSDL生成客户端类.是.肥皂是你的答案,而不是"更容易使用休息".像https://code.google.com/p/php-wsdl-creator/这样的东西.从WCF端点归档WSDL还允许您跟踪服务签名和格式更改的引脚点准确性.它确保了类型安全,并为您处理ser/de.如果我不必处理它,我不太关心消息看起来多么丑陋.是的,我之前用PHP和python做过.工作完美无瑕.

  • 我同意这里所说的大部分内容,除了你说SOAP是答案的位置.更好的是在.NET Web API中编写适当的REST API,忘记SOAP,除非您特别需要它来支持已经设计用于谈论SOAP的旧应用程序 (2认同)
  • @Marty你显然不使用WSDL /代码生成/类型安全.私有SOA环境中的"REST API"没有任何正确之处.您可以随心所欲地争论"人类可读性".当我有数百个服务端点时,我想要的是对wsdl的校验和,以系统地查明更改. (2认同)
  • 我认为问题是大多数人认为JS是一种相对简单的语言,因为在大多数情况下,它们的使用程度正在使他们的网页跳舞(通常是jQuery的帮助).切换到Node需要的不仅仅是,你需要在它最纯粹的时候拥抱JS(例如单线程,回调,范围等)并严格要求你的开发 - 它与思维模式的改变一样多,因为它是一种技术. (2认同)
  • 如果您来自非ASP.NET背景(OP看起来像是这样),那么你必须学习新服务和工具的观点是一样的,但是,一旦你像骑自行车一样设置它. (2认同)

Cre*_*nix 24

经过10年的.net开发,我想将Nodejs用于中型应用程序.我只是分享我的经验.

Windows足迹

大多数新应用程序今天都部署在云端.对于Asp.net,我们需要Windows,虽然它可以在Linux上使用单声道,但我对性能不够自信.单独的Windows服务器需要超过750mb的内存,我想在1 GB内存服务器上部署我的应用程序以降低成本.所以我想要小OS.Linux已经证明了它.在这种情况下,Linux获胜,因此节点js.但是我相信Windows Nano Server可以在不久的将来解决这个问题. 现在.Net(核心)在linux上运行

.Net核心

现在.net核心是下一个Node JS.它为C#在Linux和Mac上运行打开了大门.Unity,Xmarin也允许创建移动应用和游戏.我们现在可以创建.net标准库,可以在.net核心,框架,xmarin和Unity上工作.

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

更快速的代码

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

代码清晰度

这是一个重要的领域.当代码库增长时,JavaScript中的一切都变得复杂.一个人的javascript可能对另一个人不可读.许多.net项目都有很大的代码库,但它易于阅读和调试.普通技术团队可以更好地管理C#代码.对于节点js,团队必须具备JS的高技能.普通程序员可能无法正确阅读JavaScript.

简单

nodeJS非常简单,没有dll,没有GAC,没有类.它是一个很小的,非常小的代码.但是"Code Clarity"对我来说比我写的行数重要.对我来说,简单意味着易于阅读,而不是更快速的代码.当代码库增长时,我觉得C#比JS更简单.

性能

这是值得商榷的.我觉得我可以使用这两种技术编写性能良好的应用程序.

开源库

Nodejs在这里获胜.太多的包裹,就像早餐中的吨品种一样.我很难选择自己想要的东西.我在NodeJS的ORM库上花了一个星期,环顾Sequlizer,Sails,Knex,所有这些都很棒.但是有些人完全将他们的应用程序从一个框架重新编码到另一个框架.这清楚地表明每个框架都缺少某些东西.这在.net世界中从未发生过.我很满意Dapper和服务堆栈ORM lite.

但是我们在节点js中有更多的选择,所以如果我们选择得当,一切都会好起来的.

搬运工人

Docker很酷.谁会说"我不想要它"?这是我想要的窗户的主要内容.我听说微软已经做了些什么.我们要等等......

平台可移植性

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

现在.Net核心在linux上运行,所以在docker中运行.

最后我决定使用C#和web api.主要原因是我现有的经验. 但是我将回顾节点js以获取我的下一个应用程序.

不再回头看了.将继续使用C#作为服务器端,并为客户端做出反应.


Jam*_*mes 19

两个平台都有其优点和缺点,最终,两者都可以完成这项工作.

然而,使用这两个,对我来说Node.js会因为简单,开发/部署速度和性能而赢得开箱即用 - 如果它没有开箱即用,很可能有一个包它.

Node已经存在了几年,然而,它最近才开始变得更受欢迎 - 以至于微软大大改进了VS中工具支持.