AngularJS+;NodeJS+;web api应用程序体系结构

AngularJS+;NodeJS+;web api应用程序体系结构,angularjs,node.js,Angularjs,Node.js,我们正在将我们的一些web应用程序从asp.net MVC+jquery和angular(在某些地方)重新编写为asp.net web api(目前是asp.net 4.6,但未来的计划是在这里使用asp.net核心)+angular js。重写的主要原因是我们不希望在服务器端呈现html 现在,有些人希望在web api和angular js之间有一个NodeJS,有些人看不出有任何理由(包括我),可能是因为对NodeJS缺乏了解,所以看不到任何理由,但我的想法是: 如果我们有angular

我们正在将我们的一些web应用程序从asp.net MVC+jquery和angular(在某些地方)重新编写为asp.net web api(目前是asp.net 4.6,但未来的计划是在这里使用asp.net核心)+angular js。重写的主要原因是我们不希望在服务器端呈现html

现在,有些人希望在web api和angular js之间有一个NodeJS,有些人看不出有任何理由(包括我),可能是因为对NodeJS缺乏了解,所以看不到任何理由,但我的想法是:

  • 如果我们有angular js+WebAPI,为什么我们希望中间有代理(在本例中是NodeJS),并通过该代理而不是直接访问WebAPI?是否有任何场景在没有节点js的情况下无法完成,而节点js只能通过web api完成?我们的应用程序很简单:从api获取一些数据并在ui中显示。还涉及一些身份验证

  • 有了后端技术,一个就足够了,同时有两个(web api和节点)只会增加应用程序的复杂性,更难维护

  • 在这种情况下,我们是否应该使用node?请记住,在团队中,我们对NodeJS没有太多的经验,但我听说node很容易学习,所以这不是什么大问题

    这与其说是一个答案,不如说是一个延伸的评论,因为这里没有一个明确的问题

    最终,这取决于想要使用NodeJS的原因是什么。要解决您的想法:

    你为什么要代理
    • 使用代理有几个原因,例如安全性和可伸缩性
    • 例如,假设您希望将后端实现为一系列微服务。在没有代理的情况下,客户端必须了解所有这些服务的端点,以便能够与它们通信。这将使他们暴露在外部世界,从安全角度来看,这可能是不可取的
    • 它还使客户端变得更加复杂,因为它现在必须协调对不同服务的呼叫,并且您必须处理后端的事务;让客户端调用一个代理,该代理也充当协调器,因此它可以“扇出”对后端服务的各种调用,这往往更简单
    • 它允许您独立地扩展它们;一些服务可能需要比其他服务扩展得更多,这取决于它们的使用量。但是客户端仍然使用单个端点,因此管理起来要容易得多
    为什么多种后端技术不一定是坏事
    • 拥有两种或两种以上的后端技术是一种权衡;是的,它会增加系统的复杂性,并且可能更难维护,但它也可以使实现某些功能变得更容易,其中一种技术比另一种技术更擅长于执行X
    • 例如,有许多NodeJS模块执行X、Y或Z操作,与用C#编写的相应功能相比,您可能更容易访问这些模块(我特意不在这里列出任何示例,以避免混淆)
    • 如果您有Javascript开发人员希望参与后端开发,他们可能会觉得使用NodeJ比使用C#/ASP.NET更舒服,从而使他们(最初无论如何)更高效
    • 我发现NodeJS对于快速构建原型服务非常有用,这样您就可以测试它们是如何使用的,等等。使用类似的东西,您可以在几分钟内用记事本启动并运行一个简单的HTTP API。这在您匆忙时非常有用:)
    • 如果您采用代理/微服务方法,您就可以不再过分担心使用什么技术来实现每个服务,只要它支持系统内的公共通信协议(HTTP、消息队列等)
    最终,您需要与您的团队就此进行对话。
    • 您没有提到这是否是您的同事正在推动的事情,或者这是否是由技术领导推动的决策;我认为,作为在任者,任何新技术都需要证明采用它有一个很好的理由,但这可能是一个你无法掌控的决定

    • 在这种情况下,我个人的建议是,不要使用NodeJS作为代理;请改用ASP.NET WebAPI,但请仔细查看您的系统,并尝试找到将其拆分为微型服务的方法。这可以让您在生态系统方面保持简单,但也为您在应用程序的某些部分引入NodeJS扫清了道路,在这些部分中,已经证明NodeJS是比.Net更好的工具。这样每个人都很高兴:)

    • 有一个非常好的细分比较,可以作为讨论的一部分,其中包含的基准有点旧,但它表明在性能方面没有太大的差异

    这与其说是一个答案,不如说是一个延伸的评论,因为这里没有一个明确的问题

    最终,这取决于想要使用NodeJS的原因是什么。要解决您的想法:

    你为什么要代理
    • 使用代理有几个原因,例如安全性和可伸缩性
    • 例如,假设您希望将后端实现为一系列微服务。在没有代理的情况下,客户端必须了解所有这些服务的端点,以便能够与它们通信。这将使他们暴露在外部世界,从安全角度来看,这可能是不可取的
    • 它还使客户端变得更加复杂,因为它现在必须协调对不同服务的呼叫,并且您必须处理后端的事务;让客户端调用单个代理