2016-11-21 107 views
1

有一个老的php基地网站提供单一服务,并且工作了很多年。现在我们决定改变网站,使其更加现代和快速,同时为其提供应用程序,我们将为此聘请一些人。由于我自己是一名开发人员(一名C++/go粉丝,主要在机器学习领域),所以我想知道什么时候需要选择什么是最佳选择。我个人认为,整个后端应该作为一个RESTful API工作,然后可能是类似于网络和移动的反应和反应,但我不确定这是否是我们可以做出的最佳决策。为应用程序和网站选择框架

我想知道其他人有相同的要求做了什么?有些人向我们推荐了流星,但它似乎变化非常快,我们确实需要一些稳定而成熟的解决方案,而不需要太多的维护。

期待着听到您的建议

+0

这个问题本身是真正的自以为是,没有办法任何答案将明确*最好的*。 也就是说,对于前端,如果我需要广泛的应用程序支持,我会考虑的* an *选项是使用节点工具为基于Web的界面使用React与material-ui或bootstrap @ 4,然后使用Cordova适用于iOS/Android和电子适用于Windows/Mac/Linux支持。大多数代码库都是广泛的可重用的,并且针对类似本机的普通平台。 – Tracker1

+0

感谢您的评论,是的,这是自以为是的,但这正是我正在寻找的,因为每个人都有一个选项,并让我找到更多关于我不知道的替代方案。说实话,我在这个问题上搜索了一个星期,我得到的信息非常稀少。现在我试图列出所有选项,然后试图找出成本(查找开发人员,服务器...),可维护性,稳定性以及每个选项的更多因素,以决定使用哪一个选项。 – r3zaxd1

回答

1

我的REST API +前端JS框架结构的大风扇。

一种选择是使用Ruby on Rails构建API。 “rails generate new”命令包含一个--api选项,用于生成缺少视图并提供JSON的Rails应用程序。您可以在rails-api gem GitHub页面上了解有关使用Rails构建API的更多信息。 (请记住,rails-api gem已经被滚动到Rails中。)

总的来说,Rails是一种快速获取服务层的方法。这非常简单,对于您的应用来说可能是一个很好的选择,正如您所说,它只提供一项服务。但是,Rails也足够强大,可以支持更多的API。

如果你想要一个非常简单的基于Ruby的服务层,你应该检查出Sinatra。你也可以用Express去完整的Javascript。这与Sinatra一样简单。

如果你有一个使用C++和Go的背景,你可能不希望直接跳入这些网络繁重的技术。考虑为您的服务层使用Java Spring。 (我会链接,但我没有足够的代表哈哈)

就前端而言,你正处在正确的轨道与React和流星。我个人是Angular的粉丝(特别是Angular 2)。这是一个非常流行的JS Web应用程序框架 - 非常适合异步JavaScript和单页面应用程序。当然,Angular有一个陡峭的学习曲线开始,但如果你愿意爬,它就会有好处。

让我知道你是否有任何具体问题!祝你好运。

+0

所以如果我想和Go一起去,那么你对后端有什么建议? – r3zaxd1

+0

我对Go没有任何经验,但是我发现了一些用这种语言构建REST JSON API的很好的资源[本文描述了(https://golang.org/doc/articles/wiki/#tmp_3)和 – Gundam194

+0

对不起,我还没完!无论如何,我对Go没有任何经验,但是我发现了一些用这种语言构建REST JSON API的好资源。 [这篇博文](http://thenewstack.io/make-a-restful-json-api-go/)是一个很好的介绍。 – Gundam194

0

流星有点沉重,如果你想要的只是一个网站。这取决于你需要多少交互性 - 如果它更多的是一个应用程序,那么这是值得的,如果你想做ios和android应用程序,那么Meteor的启动和运行速度相当快。

我会建议选择一种技术,或者你热衷于学习,或者你已经有一些技能。学习曲线代表更长的项目。

+0

流星有两个问题。首先看起来他们正在非常快速地改变事情,比如放火烧身,转而做出反应,然后现在他们放弃了Apollo的DDP,而第二个是开发人员的数量,因为正如我所说的,我们需要聘请开发人员和许多js开发人员假装知道流星对js本身并不是很熟悉! – r3zaxd1

+0

我不认为“放弃DDP”完全是一个有效的陈述。 Javascript世界正在快速发展,不仅仅是MDG这样做,Angular只是去了V2,React还没有达到1.0。阿波罗给你更多的选择。我承认Meteor开发人员的数量仍然很小,但流星仍然在Github的明星名单上。 – Mikkel

+0

来自MDG的DeBergalis在Meteor 1.4及以后的会谈中提到:“我们致力于一个可以使用的路径这些不同的部分组合在一起,因为我们找出了将阿波罗转换为新的默认数据层的正确时间。“所以大多数人认为,未来的DDP将会像社区一样被送到社区寻求支持。 – r3zaxd1

0

如果您需要原生移动应用程序和交互式站点,而不是reactreact-native与纯API服务器是一个非常好的解决方案。我开发了几种类似的服务,对这种组合非常满意。

首先,您可以在两个客户端之间共享API访问层和部分业务逻辑。
其次,您在移动设备和网络上使用相同的技术。但是,由于React Native不使用浏览器,因此移动应用程序具有真实的本机UI。
第三,服务器变得更简单,可维护和可扩展。

我个人更喜欢WebSockets作为网络协议(看看令人惊叹的Go大猩猩websocket实现)。但是,如果您需要支持旧浏览器或更喜欢更经典的REST API,那么也可以。

+0

谢谢,并为后端你有什么建议? Go,JS,Python,...我看过Go大猩猩,但是因为我是Go开发人员(不是Go Web开发人员),我知道在编写Go后端时存在一些问题,例如,当您想要通过代理发送GET请求,Go默认使用环境代理,很难找到任何实现简单代理管理的替代包。我更喜欢自己使用Go,但我不确定其他替代品可能会大大降低成本,同时提供良好的稳定性。 – r3zaxd1

+0

所有这些选项都可以。 Go在后端地面上运行良好。这是这种语言开发的目的之一。非常快速和简单的部署(你知道一个二进制文件)。杜松子酒或大猩猩将是REST API的良好选择。 Python有很多有用的库。尝试烧瓶,如果你会选择这种语言。看看Sails,如果你会决定去充分的JavaScript。 Express或Koa,如果你需要更多的低级别控制。当然,如果你需要更多的互动级别,你将需要另一个库和框架。对于节点,它可以是深水,阿波罗,羽毛,酷鱼或其他取决于您的需求。 – farwayer

0

根据我上面的评论做出的回答,这是所有人都认为的,但是我发现Node/JavaScript往往是最好的回报,如果你所要做的只是通过概念证明阶段,并且可能从那里缩放。根据您的后端需求,您可能需要将部分或全部迁移到Go或Python。

在前端,使用网络工具(大多以node和npm为中心),我将使用React和material-ui组件构建主UI ...针对Web /浏览器界面......然后,您可以扩展它,以支持更多类似本机的功能。您可以使用适用于Android和iOS的Cordova构建“原生”版本。您可以使用电子作为桌面版本的基础。对于后端,节点是一个很好的开始,我觉得RethinkDB是一个很好的数据库,用于许多用例(尽管现在发生了从商业到开放平台的变化)。 Mongo是另一种选择,通过少数供应商提供托管/托管选项。另外,我可能会通过Amazon倾向于PostgreSQL。

API服务器,我肯定会先用Node进行第一次传递,然后根据需要重写整个或部分使用Go或Python ... Go将具有更好的性能和扩展性,而不会影响某些简单的发展方面。 Python具有非常丰富的工具,如果您需要比某些区域的性能更高的灵活性。还有其他的选择,C#正在成为一个非常好的跨平台选项,我碰巧非常欣赏它作为一种语言。这里的表现非常好,尽管你可能会发现一些约束比JS或Python更有吸引力。

YMMV与任何这些选择。

+0

你会选择什么框架来制作一个带节点的API? (节点的选项比其他节目多很多) – r3zaxd1

+0

React的推荐Cordova很奇怪。 React Native将会有更好的选择。它速度更快,并具有真正的本地用户界面我谨慎避免使用RethinkDB。 RethinkDB公司在10月份关闭,这个项目的未来还不确定。 – farwayer

+0

这个建议是因为你可以通过Cordova获得更多的代码重用(视图),而不是使用ReactNative ......如果你使用Redux这样的控制流程,你应该能够重新使用状态管理和接口,但UI和许多集成点将与ReactNative和Desktop不同,除非您使用MacNative和Reactnative来处理UWP(窗口),这仍然会有很大的差异。 – Tracker1