iOS開發 - 網路&資料庫功能綜述

來源:互聯網
上載者:User

標籤:

學習經驗尚淺,以前iOS開發一直停留在單機版的開發,但是現在如果一個移動端開發完全拋棄網路功能,它也不會存在很久。網上講的關於iOS的網路部分都比較專一,這兩天經過融合和總結,大致摸索出了一套整體流程,在此和對網路連接不甚明了的同學分享,本文不涉及技術層面,只是概念的串通。

前提註:如果你真的只是開發一個單機版app也或者公司已經將網路資料封裝好給你個介面or XML格式等檔案用而且也不想知道的話就請華麗麗地忽視我吧。

 

一、前提概覽

首先,要考慮app所在的大環境是個什麼層級的環境,我大致將環境分為以下幾種

1. 個人開發,單機版app

此時如果沒有資料交換儲存的話,忽略這篇文章

如果有資料存放區和操作的話,用coreData/NSArray(NSDictionay),這種情況下幾乎是不需要直接操作SQLite的(優點之後說)

2. 個人開發,網路版app

此時如果沒有網路資料存放區,比如只是將某個板塊做成了地圖而且只是展示地圖資料,只需要用好MapKit or Google API即可

如果只是簡單擷取一些商家封裝好的網路資料。比如擷取iTunes的訂閱等,需要的是用好XML解析功能(NSXMLParser,第三方架構)or JSON解析功能(同理)

如果在以上兩條情況下需要對資料進行增刪改查,需要用到伺服器互動或者本地coreData(不建議直接操作資料庫)

3. 團隊開發,單機版app(真的是純單機版)

我認為這種情況不太可能

4. 團隊開發,網路版app

這種情況也適用於個人想開發配套web應用的情況

此時如果web方面以及伺服器互動方面由團隊其他人在做,做好自己的事情即可

如果是個人想做全棧的活,還需要至少瞭解網路通訊協定以及熟練使用至少一門伺服器指令碼(比如PHP, Node.js等),SQL,其次可以考慮web前端做web版配套應用。再用java等程式設計語言做商務邏輯對於一個個人開發人員來說工作量太大了,如果一定要這麼做,你真的需要考慮組建一個團隊···

 

對於以上情況,我下邊總結的都是關於個人開發人員的一點經驗,一個專業團隊中,專才更重要,而不是全棧工程師

 

二、網路資料操作

這個部分只是關於網路資料方面,與伺服器和資料庫無關。

一種是現成的封裝好的網路資料,比如MapKit和Google Map,這樣熟練運用其架構就可實現大部分功能。

一種是商家提供的資料交換格式XML, JSON, RSS等,此時做的是學好XML解析(內建NSXMLParser,或者GDataXML等第三方庫,網上建議使用第三方庫,內建的解析有些繁瑣,我不否認第三方庫更簡單明了,但是NSXMLParser更能體現SAX解析方式的思維套路),JSON解析。現在主要就是XML, JSON這兩種格式,大公司都有JSON格式給你,但是也不能避免一些你確實想用的資料公司只提供了XML。

此處因為我覺得團隊不夠層級時,第三方公司不會給你自主互動伺服器的機會,但是會給你API操作。更何況是個人開發,主要還是以操作資料分頁檔為主。

 

三、網路操作帶有伺服器和資料庫

闡述一些基礎概念,因為iOS開發嚴格意義上來說只是用戶端的開發,伺服器資料庫部分只是錦上添花,所以有些像我一樣的新手只做過web,iOS開發的童鞋,對於整體流程可能沒有認識。尤其是移動端,一個公司不會用移動端開發操作背景平台的吧。

最終獲得網路資料庫資料的途徑有兩種

1. 用戶端 - 資料庫 模式,這種方式一般情況是非常不推薦的,一是因為直接操作資料庫代碼繁瑣,不宜更新維護,比如大量的串連關閉操作,sql操作,當表中屬性資訊改變時,改動工作量很大。二是這樣一來資料庫的借口資訊將暴露在用戶端中,不安全,資料庫一定放在大後方。

2. 用戶端 - 伺服器 - 資料庫 模式,這種模式才是正常的模式,伺服器封裝了對資料庫的操作,只用對伺服器發出請求再收到回應資料即可。此處發出請求的方式為GET/POST兩種主要的方式,前者有欄位長度限制,屬於通過url操作獲得資料,後者屬於將request發送到伺服器,伺服器經過處理request給出一個response返回給用戶端,這種方式比較常用,理論上不考慮伺服器的運算能力,是沒有容量限制的。GET只適用於擷取少量資料,因為你不能把大量資料,比如視頻,放在某個url指向的檔案中供調用吧。POST即可經過伺服器的封裝運算,更有效地操作大量的資料,比如視頻的上傳下載等,具體請查閱相關文章。

 

其次我將資料分為以下幾種情況

1. 資料只需要進行單機操作(少量)

一般資料存倆NSArray or NSDictionary得了

使用者登入資訊的Cache通過coreData儲存在本地(第2點詳述)

 

2. 資料庫只需要進行單機操作(大量)

此時coreData是首選,說明一下coreData並不是資料庫,是一種資料持久化技術,哈哈這種概念聽多了和沒聽一樣,通俗來講,coreData是蘋果對SQLite資料庫的很好的封裝,開發人員通過coreData可以更有效操作SQLite資料庫,相當於程式和SQLite的中介。

所以此處也應該明白了一個有可能困擾新手的問題,coreData和SQLite有什麼區別?

如果對於coreData和SQLite本身來講,不是一種概念,因為最終操作的都是SQLite。非要說區別,指的是操作coreData和直接操作SQLite有什麼區別。coreData是將SQLite進行對象化然後進行操作,如果對Oracle或者mySQL有經驗的童鞋,不難理解資料庫執行個體化的意義,畢竟現在什麼都流行物件導向嘛!coreData的優點就在於彷彿是串連你的MVC程式和SQLite的伺服器,對資料庫進行封裝操作,在SQLite表的屬性有所改變or換了一個資料庫執行個體什麼的,能夠進行方便的資料轉移。直接操作SQLite一般情況下既繁瑣又難以維護,但是如果你需要對資料庫進行進階操作,coreData也許滿足不了你,這時就需要撇開coreData直接操作SQLite。

CoreData還有一個最大的優點就是通過NSFetchedResultsController以及其delegate方法,可以實現當增刪改查資料庫時對頁面顯示資料的即時更新,好像AJAX哈哈

 

3. 資料需要在網路上進行資料交換(少量,公開)

這種情況下,我認為目前移動端並沒有用來做伺服器和資料庫的後台開發,所以一般來講除了使用者資訊和某些特定行業app(比如銀行等),大部分資料都是公開的網路資料,用資料交換最靠譜,優點就是簡單,速度快。增刪改查JSON/XML的操作在iOS中可以實現。

這時首選是JSON,後起之秀,輕量級資料交換格式,簡單易用,思路也清晰,在iOS開發中很是推薦

如果沒有,選用XML的輕量級第三方架構比如TBXML,GDataXML等,第三方架構多用DOM方式解析,比原生態的快很多,但是只是在處理少量資料時,詳情在這裡

http://mobile.51cto.com/iphone-281283.htm

 

4. 資料需要在網路上進行資料交換(少量,安全傳輸)

這種情況最常見的莫過於使用者登入驗證了,此時需要與伺服器進行互動,發送HTTP請求(POST,POST安全,因為需要經過伺服器處理)

最老的NSURLConnection(已經deprecated,而且在主隊列操作,太慢)

iOS7之後推薦的NSURLSession(可以非同步處理,詳情點擊這裡,我的另一篇文章)

第三方AFNetworking(與NSURLSession同理,我個人測試覺得是最快的)

ASIHttpRequest,當年很牛,但是很久沒有更新,前兩天用了一下,如果你的程式開啟了ARC模式,已經不能用了,因為這個架構是在手動控制記憶體的時代寫的

這時不要想如何與資料庫直接連接操作,你這樣等於把所有使用者資訊暴露在了任意一個移動端中

 

5. 資料需要在網路上進行資料交換(大量,公開)

Num 1. 你需要大量資料中的一部分。如果是資料交換的方式做,JSON和XML的DOM層級架構也許滿足不了你了。這時候推薦水果內建XML解析NSXMLParser,libxml2,支援SAX解析,SAX和DOM的區別以及NSXMLParser的基礎實現點擊這裡,我寫過一篇。

Num 2. 你需要大量資料中的某一條。請向伺服器發送請求(此時XML,JSON代碼可能會比較冗長)。非要連資料庫,就把資料庫的介面資訊當做伺服器介面資訊來做,然後進行相應的增刪改查。

Num 3. 你需要大量資料的所有,也許XML DOM方式以及JSON會快一些,我沒測試過大量資料。

 

6. 資料需要在網路上進行資料交換(大量,安全傳輸)

這在移動端應該是見不到的,那就是內部web項目的事情了。

 

本文旨在給iOS個人開發初學者做一個簡單易懂的網路指南,如果有錯誤請不吝指正。

 

如果你對搭建網路伺服器和資料庫有一點興趣,在評論中告訴我,我之前搭建了一個AWS EC2 配 AWS RDS的小系統,之後會寫點這方面的心得。

 

歡迎光臨我的首頁http://www.jiachengzhi.com/

iOS開發 - 網路&資料庫功能綜述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.