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介面的除錯。
其他
因為選的是比較熟悉的技術棧,所以也只花了不到兩天的業餘時間完成的。或許,這也是全棧程式設計師的優勢所在。
相關文章
- 應用架構圖的設計應用架構
- SaaS架構:應用服務、應用結構設計架構
- 一文搞懂SaaS應用架構:應用服務、應用結構、應用互動設計應用架構
- Unity應用架構設計(6)——設計動態資料集合ObservableListUnity應用架構
- 論軟體架構設計及應用架構
- 如何從 0 到 1 設計、構建移動分析架構架構
- 移動應用的測試策略與測試架構架構
- Angular應用架構設計-2:Data Service模式Angular應用架構模式
- FMEA在架構設計中的應用分析架構
- Angular應用架構設計-5:設計原則與總結Angular應用架構
- 百萬年薪架構師之路:談應用系統架構設計架構
- 貨拉拉應用多分組架構設計方案分享架構
- Unity應用架構設計oC工廠理念先行Unity應用架構
- 基於.NET架構的樹形動態報表設計與應用架構
- 從Elasticsearch來看分散式系統架構設計Elasticsearch分散式架構
- 事件驅動架構設計事件架構
- 移動網站應用設計:速度至關重要!網站
- Unity應用架構設計(4)——設計可複用的SubView和SubViewModel(Part 1)Unity應用架構View
- vue實戰 | vue移動端專案架構設計(附demo)Vue架構
- Unity應用架構設計(12)——AOP思想的實踐Unity應用架構
- 系統設計概念:生產 Web 應用的架構Web架構
- 架構師必備:HBase行鍵設計與應用架構
- 【架構設計】你的應用該如何分層呢?架構
- Django與微服務架構:構建可擴充套件的Web應用Django微服務架構套件Web
- 新零售SaaS架構:客戶管理系統的應用架構設計應用架構
- 移動應用app設計開發工具:Creo 2 for macAPPMac
- Unity應用架構設計(1)—— MVVM 模式的設計和實施(Part 2)Unity應用架構MVVM模式
- Unity應用架構設計(1)—— MVVM 模式的設計和實施(Part 1)Unity應用架構MVVM模式
- 前端架構之移動端混合架構(hybrid)前端架構
- Flutter 在流式場景下的架構設計與應用Flutter架構
- 使用 Angular 打造微前端架構的 ToB 企業級應用Angular前端架構
- HBase+Elasticsearch,百億級資料中心架構設計實踐Elasticsearch架構
- 架構設計思想-微服務架構設計模式架構微服務設計模式
- Unity應用架構設計(5)——ViewModel之間如何共享資料Unity應用架構View
- 直播預告 | 從0到千萬DAU,應用架構如何設計?應用架構
- Unity應用架構設計 ViewModel之間實現共享資料Unity應用架構View
- ElasticSearch架構反向思路Elasticsearch架構
- elasticsearch(4)- 架構概念Elasticsearch架構
- netty應用架構的一些設想Netty應用架構