【问题标题】:how should construct application architecture?应该如何构建应用架构?
【发布时间】:2017-11-19 16:30:53
【问题描述】:

我正在参与新项目,我想问一下项目的大图。我正计划为我们的网站服务构建新的用户界面。目前,我们已经完成了使用 Hibernate 实现所有必要的 Rest API。

我们使用的技术是 Angular 的前端。我已经使用 Angular2 构建了小型应用程序,该应用程序被实现为在 Tomcat 服务器上提供服务。我开发的方式是开发人员通常采用的非常常见的方式。所有组件都是用 typescript 编写的,它们接收请求、调用 RestAPI、从 Rest API 检索 JSON 对象、操作 JSON 并使用模板显示结果数据。这些 typescript 文件使用 webpack 转译成 javascript,然后这些 javascript 文件部署到 tomcat 中。

但是经过研究,现在我知道nodejs被广泛使用而不是tomcat,在性能方面,nodejs比使用tomcat时要好得多。因此,我正在寻找一些很好的示例来适应我们的项目架构,其后端是使用基于 Hibernate 的 RestAPI 构建的。但是,它还不容易被发现。我想从 nodejs 调用 RestAPI 的方式,我不太确定,我试图找到一些好的做法,但我找不到很好的,非常好的例子。有很多关于 MEAN 堆栈的资源,但不适用于我的情况。

您能否就我想要实现的目标提供一些建议?最佳实践、开源,并以某种方式详细解释我必须构建的架构?

【问题讨论】:

  • 节点应用程序是 REST API、角度应用程序的静态文件服务器,还是两者兼而有之?如果您已经有 API 并且只想将 Angular 应用程序用于前端,我使用节点应用程序来提供静态文件(html、js、&css),但我已经看到使用 S3 的更具成本效益的方法(或其他存储解决方案)来托管文件。
  • 我明白你说的部分了,现在,angular组件调用RestAPI并接收JSON对象并将它们显示在浏览器上,因此,在nodejs中永远不需要连接到数据库,RestAPIs返回所有必要的JSON 对象到任何前端应用程序。所以......如果这是我的应用程序的工作方式,那么通过将它们放在静态文件所在的位置来提供 javascript 文件(从打字稿转译)是我可以构建的正确方式吗?你有很好的例子吗?

标签: node.js angular hibernate express architecture


【解决方案1】:

这是一个相当广泛的问题,但您所需要的只是您的其余 Web 服务后端应该在 node.js 上而不是在 tomcat 容器中运行。在 node 中,人们主要使用 express(用于 web 应用程序和 api)或 restify(主要用于 web 服务 api)。而且,还有很多其他的。对于 ORM,您需要使用除 Hibernate 之外的其他东西(这实际上是特定于 Java 的)。 node.js 中再次出现了数十个流行的 ORM 框架。但是,如果您谈论 MEAN,MongoDB 是 NoSQL 数据库,而不是关系数据库。否则,在架构方面,你可以在 Java 中做的任何事情(tomcat,hibernate,...),你都可以在 node.js 中做。

【讨论】:

    【解决方案2】:

    对于前端部分 - 请记住,在编译为 JavaScript 之后,您只需要从服务器提供这些静态文件即可。 一个虚拟目录就可以了。

    【讨论】:

    • 啊,我明白了一点,你有没有一些好地方,包括你解释的好例子?
    • @AnnaLee 我想这个链接可能会有所帮助:acdhirr.blogspot.co.il/2013/11/… Angular 项目编译后,将 dist 文件夹复制到您的虚拟目录并将配置指向该文件夹。
    • 是的,部署到Tomcat没有问题,这次我希望nodejs成为应用程序的容器。这就是我想要的..
    • @AnnaLee 强烈建议大多数 Web 应用程序将前端项目(角度)与后端(node.js)分开。当然,这取决于您的应用程序需求。你打算用 TypeScript 还是纯 JavaScript 编写你的 node.js 应用程序?我会相应地附上一些链接...
    猜你喜欢
    • 2014-10-03
    • 2023-03-07
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    相关资源
    最近更新 更多