同事问候!
在撰写本文大约一年之前,我开始觉得自己已经精疲力尽。工作早已变成一种手艺,但已不再给每个程序员带来那种给学生带来开创性的感觉,这种感觉使每个人都感到欣喜。为了这种感觉,为了获得新知识,我每天在监视器上坐了18个小时。它早已不复存在...但是最近我又再次感受到了这种感觉!起初它很安静,由于长时间休息而与众不同,但随着时间的流逝,它突然爆发并起火了!
如果您和我一样,是一个拥有大约12年,大约30岁的经验的程序员,在您自己的摊位堆栈中徘徊(特别是如果它是C#.Net MVC),那么我邀请您参加。对于年轻的人,我认为提前做好准备也很有用。
背景始于我已经在C#.Net堆栈(ASP,MVC,Windows服务)上开发了很长时间了。在我看来,我可以像一个全栈开发人员那样被称为:数据库,后端,前端甚至奥运会编程-我将所有这些都传递给了我自己。我不会说我是一个专业人士,但是当涉及到.Net时,很难为我感到惊讶。不,我没有参加。接下来会议之类的,但我研究了在大学的几个老前辈,我知道有些人就个人而言,我已经在PE推出中等规模的项目的数量已经超过了30。
由于卡塔前面所指出的,在我看来我就筋疲力尽了。当一个新项目提交给我们实施时(不是太大-这很重要!),在第一次会议上我就知道我们将做什么以及如何做-很无聊。
你还不认识自己吗?如果您还年轻,请务必继续阅读,一切都在您前面。如果您比我走得更远,请继续阅读,并在评论中告诉我们您的经历。
因此,我之前有大约半年的无趣工作。但是我们几个月前完成了该项目,学到了很多最酷的东西,在相关领域进行了改进,并且玩得很开心!我不会耽误...新项目是在全新的堆栈上完成的:Node.js + React。
同事预见到了这种情况,应立即保留更改堆栈的决定不是自发的。几个月来,我一直认为.Net MVC并不是小型项目的最佳选择。我一直在寻找替代品,环顾四周。关于Node.js和React的结合,我认为这些工具在服务器端和客户端方面比C#更加完善,但是已经有了最初的体验,超出了我的所有期望。
让我们规定规则
首先,我认为有必要澄清一些细节和条件,以使本文的关键思想-替换.Net MVC堆栈和Node.JS + React-正确。我不倾向于极端地认为在所有情况下此类事件都是有用的,因此,这里是一些初始限制的简短列表:
- 涉及多达3-5个程序员的项目;
- 后端缺乏必要的计算和复杂的逻辑;
- 可用性和/或需要统一后端和前端;
多达3-5个程序员的项目
之所以出现这种限制,是因为假设当一个由5人或5人以上的大型团队参与一个项目时,我们正在谈论的是严重的企业应用程序,如果没有.Net(以及ASP.NET和Core)的优势,它们将很难实现。我们将在下面讨论优点和缺点本身。
后端缺乏必要的计算和复杂的逻辑
使用JavaScript(甚至是TypeScript,不会节省您的精力),一种没有多线程且没有Linq的动态类型化语言来实现计算或多或少的复杂业务逻辑是根本不可能的-该语言并非为此而设计。关于C#不能说同样的话。重要的是要考虑到仪器的细节,以免用显微镜锤打钉子。
可用性和/或需要统一后端和前端
统一将有助于降低准入门槛,预算和截止日期。但是这根棍子总是有两个目的,而“真正的经理人”如果没有真正的需要而轻率地采取措施,可能会导致损失。
考虑到这些限制,我建议您使用以下清单,通过清单可以评估其对项目生态系统的适用性。
检查清单
开发和维护成本
您的预算是否需要较低的人才要求和较低的维护成本?
如果您的公司规模很小或有一个程序员团队,则开发工具的复杂性会占用宝贵的资源。与.Net MVC或Core相比,Node.js + React堆栈具有许多明显的优势:
- 后端和前端的统一-与C#堆栈相比,专家将能够更轻松地在整个堆栈上工作;
- 更少的服务器资源需求-Node.js不如.Net那么繁琐,而是真正的跨平台;
- 开发速度更高-由于缺少键入功能,该产品的第一个版本的发布速度大大提高。
推出MVP(最低可行产品)和PoC(概念验证)
您是发布MVP或PoC的截止日期吗?
就实现MVP或PoC的速度而言,Node.js + React堆栈无疑比.Net堆栈处于更好的位置。考虑到先前有关开发成本和内容的要点,出现了启动MVP的协同作用:快速,廉价,高效。另外,Node.js的稳定性很高,不能令人满意。
开发环境
“轻型” IDE的功能是否足以满足您的需求?
轻量级IDE非常适合与React结合使用Node.js。例如,VS Code在开发过程中不需要太多功能,它是一个免费提供的跨平台编辑器,其功能足以轻松开发后端和前端。
对于C#中的项目,您可以使用Visual Studio社区-也是共享软件IDE,但是它已经需要资源,而且速度和跨平台速度都没有。
语言输入
鉴于缺乏打字,您能为您的项目提供高质量的开发和支持吗?
缺少语言输入是一把双刃剑。一方面,这种方法允许您通过减少代码量来提高开发速度。另一方面,测试量正在成倍增加。此外,某些错误可能仅在操作期间成功通过所有测试的情况下出现。不键入就很难进行大型项目。
性能和可扩展性
您准备好放弃完整的多线程了吗?您的项目是否缺乏复杂的计算或业务逻辑?
如您所知,Node.js实现了一个单线程事件驱动模型。这对于大量查询非常有用,但是完全不适合并行化计算或实现复杂的业务逻辑。因此,在为Node.js的后端选择堆栈时,必须意识到其工作的细微差别。
跨平台
需要开箱即用的跨平台服务吗?
是的,.Net下有.Net Core,它声称是跨平台的。但是它仍然不是.Net MVC。如果您已经为.Net MVC组装了大量现成的组件,那么向.Net Core的过渡将并不容易。使用Node.js,您不必担心,也可以根据客户的需求将开发成果用于任何平台。
结论
Node.js模块的丰富世界将使您能够高效,经济高效地实施几乎所有应用程序任务,从公司系统中的授权以及rest-api到Messenger聊天机器人。
在任何操作系统上部署Node.js应用程序都是一件很愉快的事情,并且需要执行几个命令。与.Net相比,服务器容量的需求可以减少一个数量级,您可以在我们专用的服务器配置器中安全地选择“为资源付费” 。
您是否尝试过更改堆栈?