2016-11-21 35 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