Django ElasticSearch Ionic 打造 GIS 移動應用 —— 架構設計
搜尋引擎是個好東西,GIS也是個好東西。當前還有Django和Ionic。最後效果圖
構架設計
對我們的需求進行簡要的思考後,設計出了下面的一些簡單的架構。
GIS架構說明 —— 服務端
簡單說明:
- 使用者在前臺或者後臺建立資料。
- 在model儲存資料的時候,會呼叫Google的API解析GPS
- 在haystack的配置中設定實時更新,當資料建立的時候自動更新索引
- 資料被ElasticSearch索引
下面是框架的一些簡單的介紹
Django
Django 是一個開放原始碼的Web應用框架,由Python寫成。採用了MVC的軟體設計模式,即模型M,檢視V和控制器C。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的。並於2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。
Django 的主要目標是使得開發複雜的、資料庫驅動的網站變得簡單。Django注重元件的重用性和“可插拔性”,敏捷開發和DRY法則(Don't Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置檔案和資料模型。
首先考慮Django,而不是其他Node或者Ruby框架的原因是:
- 內建認證系統
- 內建CSRF
當然這是其他框架也所擁有的,主要特性還有:
- 一個表單序列化及驗證系統,用於HTML表單和適於資料庫儲存的資料之間的轉換。
- 一套協助建立地理資訊系統(GIS)的基礎框架
最後一個才是亮點,內建GIS,雖然沒怎麼用到,但是至少在部署上還是比較方便的。
Haystack
Haystack provides modular search for Django. It features a unified, familiar API that allows you to plug in different search backends (such as Solr, Elasticsearch, Whoosh, Xapian, etc.) without having to modify your code.
Haystack是為Django提供一個搜尋模組blabla..,他的主要特性是可以
write your search code once and choose the search engine you want it to run on
也就是說你只需要寫你的程式碼選擇你的搜尋引擎就可以工作了。
ElasticSearch
在上面的Haystack提供了這些一堆的搜尋引擎,當然支援地點搜尋的只有Solr
和ElasticSearch
,他們支援的空間搜尋有:
- within
- dwithin
- distance
- order_by(‘distance’)
- polygon
在文件上沒有寫Solr的polygon搜尋,但是實際上也是支援的(詳細見這篇文章: google map solr polygon 搜尋。
至於為什麼用的是ElasticSearch,是因為之前用Solr做過。。。
GIS架構說明 —— 客戶端
簡單說明 —— GET
- 當我們訪問Map View的時候,會呼叫HTML5獲取使用者的位置
- 根據使用者的位置定位,設定縮放
- 根據使用者的位置發出ElasticSearch請求,返回結果中帶上距離
- 顯示
簡單說明 —— POST
- 使用者填寫資料會發給Django API,並驗證
- 成功時,存入資料庫,更新索引。
Ionic
Ionic提供了一個免費且開源的移動優化HTML,CSS和JS元件庫,來構建高互動性應用。基於Sass構建和AngularJS 優化。
用到的主要是AngularJS,之前用他寫過三個APP。
Django REST Framework
與Django Tastypie相比,DRF的主要優勢在於Web介面的除錯。
其他
因為選的是比較熟悉的技術棧,所以也只花了不到兩天的業餘時間完成的。或許,這也是全棧程式設計師的優勢所在。
相關文章
- SAP打造開放性移動應用開發架構 助力移動開發者創新架構移動開發
- 地圖移動應用實戰 —— Django Haystack ElasticSearch 環境準備地圖DjangoElasticsearch
- 應用架構圖的設計應用架構
- React應用架構設計指南React應用架構
- SaaS架構:應用服務、應用結構設計架構
- 一文搞懂SaaS應用架構:應用服務、應用結構、應用互動設計應用架構
- Unity應用架構設計(6)——設計動態資料集合ObservableListUnity應用架構
- iOS應用架構談:架構設計的方法論iOS應用架構
- 移動端基於動態路由的架構設計路由架構
- iOS應用架構談(一):架構設計的方法論iOS應用架構
- 移動應用中的流設計
- 中國移動應用設計趨勢
- .NET應用架構設計—重新認識分層架構(現代企業級應用分層架構核心設計要素)應用架構
- React Native App應用架構設計React NativeAPP應用架構
- 論軟體架構設計及應用架構
- 如何從 0 到 1 設計、構建移動分析架構架構
- 移動應用的測試策略與測試架構架構
- 百萬年薪架構師之路:談應用系統架構設計架構
- 總結 - 設計模式,企業應用架構模式,架構模式設計模式應用架構
- 如何設計移動應用引導頁
- 移動應用介面設計7宗罪
- HTML5打造原生應用——Ionic框架簡介與Ionic Hello WorldHTML框架
- Angular應用架構設計-2:Data Service模式Angular應用架構模式
- Angular應用架構設計-5:設計原則與總結Angular應用架構
- 移動應用設計:註冊和表單
- 11個最好的移動應用設計教程
- 移動應用設計:應用內搜尋和業務轉化
- FMEA在架構設計中的應用分析架構
- Unity應用架構設計oC工廠理念先行Unity應用架構
- 貨拉拉應用多分組架構設計方案分享架構
- MicrosoftNet企業級應用架構設計(中)ROS應用架構
- 從Elasticsearch來看分散式系統架構設計Elasticsearch分散式架構
- 事件驅動架構設計事件架構
- 基於.NET架構的樹形動態報表設計與應用架構
- Unity應用架構設計(9)——構建統一的 RepositoryUnity應用架構
- 移動網站應用設計:速度至關重要!網站
- 移動應用設計:易用性和易讀性
- Django與微服務架構:構建可擴充套件的Web應用Django微服務架構套件Web