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