成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

無線客戶端框架設(shè)計(jì)(1):前言、目錄,以及一些念念碎

移動(dòng)開發(fā) Android
也許有從事iOS開發(fā)的朋友會(huì)問,為什么要設(shè)計(jì)企業(yè)級(jí)框架呢?沒有它,我也可以很好的寫程序啊。也可以快速開發(fā)一個(gè)App啊。至少,我手下的iOS team都是這么認(rèn)為的。而Android team和WP team能比較容易接受這樣的框架。

接下來要說的一個(gè)系列,是一個(gè)完整的App應(yīng)用所需要的企業(yè)級(jí)框架設(shè)計(jì),是我這2年來在無線客戶端這個(gè)領(lǐng)域摸爬滾打的,總結(jié)沉淀的心得體會(huì),中途吃 了很多虧,走過很多彎路,加了很多班,一次又一次的重構(gòu),不斷的學(xué)習(xí),才知道,哦,原來iOS要這么做,原來Android要那么做,然后回過頭來再看看 我最熟悉的WP,哦,原來WP還可以做的更好。

2年間,我還接手了MobileAPI的維護(hù),從而讓客戶端和服務(wù)器端的配合更順暢,中途還發(fā)明了幾個(gè)好用的工具,從服務(wù)器端到客戶端這條路我打通了。再然后,我還碰了碰tcp+protobuf,WP8的項(xiàng)目就是基于此開發(fā)的。

此外,我還打通了另一條路,那就是前端設(shè)計(jì)人員和客戶端開發(fā)人員的協(xié)作,為此,專門設(shè)計(jì)了iOS UI框架和WP UI框架,前端設(shè)計(jì)人員在拿到美工的設(shè)計(jì)稿后,不再提供標(biāo)注圖,而是基于UI 框架,直接提供xib或者xaml,客戶端開發(fā)人員可以直接拿去使用。對于Android,暫時(shí)我還沒有太好的解決方案。

也許有從事iOS開發(fā)的朋友會(huì)問,為什么要設(shè)計(jì)企業(yè)級(jí)框架呢?沒有它,我也可以很好的寫程序啊。也可以快速開發(fā)一個(gè)App啊。至少,我手下的iOS team都是這么認(rèn)為的。而Android team和WP team能比較容易接受這樣的框架。

說說我的想法,一家之言。我想是因?yàn)锳ndroid是基于Java的,經(jīng)過這么多年的沉淀,Java對設(shè)計(jì)模式、代碼規(guī)范這些概念已經(jīng)有了積累。而 且Android在設(shè)計(jì)的時(shí)候,就考慮到這些東西,所以它會(huì)有Activity、Intent、Adapter這些“積木”,搭建起一個(gè)完整的App。而 微軟出品的WP,是基于.NET framework體系的,而.NET本身就充斥著設(shè)計(jì)模式的思想。

對了,也許你得到那個(gè)點(diǎn)了——iOS在這方面顯得有些貧血。除了MVC和delegate和Notification,其它什么都沒有。所以,你可 以在一個(gè)ViewController里面寫3000行代碼,而沒有任何規(guī)定說你這樣做是錯(cuò)的;不使用xib而在viewDidLoad中手動(dòng)創(chuàng)建頁面所 有控件,當(dāng)然,我問過很多到我這里面試的人,他們以及他們的公司都認(rèn)為這樣做沒什么不好,甚至更靈活。大部分的iOS程序員,都已經(jīng)習(xí)慣于面向過程的編程 方式,而抵觸OOP。

我也見過一些到我這里來面試的Leader,他們來自大公司,這些公司都有一些框架設(shè)計(jì),或者說,業(yè)界規(guī)范,比如說,數(shù)據(jù)緩存,圖片緩存、網(wǎng)絡(luò)請求的封裝。

其實(shí),越是什么都沒有,才越好做框架。我們可以借鑒Android和WP的設(shè)計(jì),甚至是網(wǎng)站開發(fā)、javascript開發(fā)、windows開發(fā)的經(jīng)驗(yàn)和模式,補(bǔ)充到iOS的框架中去。

2年來,我就在堅(jiān)持不懈地做這件事,基本上可以認(rèn)為是做成了,由iOS、Android、WP三套框架組成,它們的設(shè)計(jì)思想是一樣的,包括以下18點(diǎn),其中最重要的是前六點(diǎn),稱之為框架設(shè)計(jì)的六大要素。

框架設(shè)計(jì)六大要素:

1.基類的設(shè)計(jì)

沒有基類,就不要說有框架。而且不僅僅是一個(gè)基類,對于一個(gè)企業(yè)級(jí)的App而言,框架層要有一個(gè)基類,里面只存放一些與框架有關(guān)的共用邏輯。App層也要有一個(gè)二級(jí)基類,繼承自框架級(jí)的那個(gè)基類,里面存放的是App相關(guān)的共用邏輯。

2.自定義App的生命周期。

對于一個(gè)頁面從初始化到消亡,每個(gè)客戶端系統(tǒng)各自有自己的生命周期。我們發(fā)現(xiàn),在初始化的時(shí)候,要做過多的事情,代碼會(huì)很多很亂,因此有必要細(xì)分,重新規(guī)劃,定義新的生命周期。

3.發(fā)起網(wǎng)絡(luò)請求(以下簡稱MobileAPI)獲得數(shù)據(jù)。

很多書都在大講特講手機(jī)控件的使用、IO語法、酷炫動(dòng)畫。卻對MobileAPI的介紹 語焉不詳。其實(shí)這才是最重要的一個(gè)環(huán)節(jié),包括請求失敗后的自動(dòng)重試、如何處理JSON、如何統(tǒng)一API的調(diào)用形式并使之最簡,對于多個(gè)API調(diào)用,是串行 調(diào)用還是并發(fā)調(diào)用及各自的處理方式。

此外,我們經(jīng)常面對的是HTTP+JSON形式的網(wǎng)絡(luò)請求,對于轉(zhuǎn)換為TCP+protobuf形式,則需要做的事情還有很多。

無論是HTTP+JSON,還是TCP+protobuf,都要考慮數(shù)據(jù)緩存,并且要讓上層使用者感受不到數(shù)據(jù)是來自網(wǎng)絡(luò)請求還是緩存。

4.圖片緩存

服務(wù)器端,有2種解決方案。

客戶端的解決方案,iOS、Android、WP實(shí)現(xiàn)思想相同,只是實(shí)現(xiàn)手法不太一樣。

5.導(dǎo)航器(僅適用于iOS和WP)

跳轉(zhuǎn)到一個(gè)頁面很簡單,但是要整個(gè)App都采用一種調(diào)整風(fēng)格,要求iOS、Android、WP都采用一種風(fēng)格,就不大容易了,尤其是傳遞參數(shù),以及處理登錄后的回調(diào)。

6.適配器

Android在這一方面做的是最好的。對于iOS和WP,我們不妨學(xué)習(xí)一下Android,設(shè)計(jì)出各自的自動(dòng)適配器。

接下來就是一些細(xì)節(jié)了:

7.登錄

別看一個(gè)小小的登錄框,里面的學(xué)問可大了。比如說,記住密碼要怎么實(shí)現(xiàn),才能保證用戶下次打開App不需要登陸。比如Cookie的讀寫。比如登錄后要去往哪里?比如重復(fù)輸入3次錯(cuò)誤后要求輸入驗(yàn)證碼的實(shí)現(xiàn)?比如最安全的登陸解決方案設(shè)計(jì)。

8.與JS的互操作

你可能會(huì)第一時(shí)間想到PhoneGap。但其實(shí),對于一個(gè)原生的App框架,只要支持簡單的JS交互就夠了。

9.時(shí)間校準(zhǔn)

如何讓客戶端時(shí)間與服務(wù)器時(shí)間保持一致,這對于電子商務(wù)至關(guān)重要。

10.廣告處理器

廣告是目前App最賺錢的一個(gè)功能。如何設(shè)計(jì)一個(gè)通用的廣告機(jī)制,而且要脫離App整體的業(yè)務(wù)邏輯,實(shí)現(xiàn)松耦合,至關(guān)重要。

11.彈出框鏈

這是職責(zé)鏈模式在App中的典型應(yīng)用。

12.進(jìn)度條

進(jìn)度條經(jīng)常和網(wǎng)絡(luò)請求聯(lián)系在一起,分兩種,一種是調(diào)用MobileAPI時(shí),鎖住當(dāng)前頁面不能動(dòng),知道請求返回結(jié)果;另一種是鎖住局部頁面,頁面其他地方可以操作。

13.日志工具

對于那些很難復(fù)現(xiàn)的bug,日志工具所記下的內(nèi)容,能告訴我們一切。日志分兩種,調(diào)試時(shí)直接打在控制臺(tái)上;直接寫入到在手機(jī)中。

14.單元測試

本文告訴你App上的單元測試要怎么寫?以及什么時(shí)候需要單元測試。

15.MVC還是MVVM

iOS和Android使用MVC,WP使用MVVM,本文告訴你,使用哪一種,不是絕對的,一切根據(jù)業(yè)務(wù)邏輯的復(fù)雜程度而定。以此來消除一個(gè)頁面3000行代碼的問題。

16.分頁

上拉分頁,下拉刷新。3個(gè)平臺(tái)的分頁各有不同,需要注意的細(xì)節(jié)都不能少,比如說,沒有數(shù)據(jù)時(shí)怎么辦?

17.低流量模式

在2G網(wǎng)絡(luò)下,網(wǎng)速賊慢,因此,我們要設(shè)計(jì)一種能認(rèn)用戶快速看到內(nèi)容的機(jī)制。這就是低流量模式。其實(shí),這是App的一種需求,只是很多App并沒有考慮過。

18.UI框架設(shè)計(jì)

在分工越來越細(xì)的今天,我們可以把一部分工作分出去給其它Team。比如UI設(shè)計(jì),完全可以讓前端人員(熟悉js和html)來做,這就需要我們?yōu)?前端Team提供一個(gè)好用的App UI的設(shè)計(jì)工具。這樣,我們能拿到的就不再是設(shè)計(jì)稿或者標(biāo)注圖,而是畫好的xib、xaml以及Android的xml布局文件。

責(zé)任編輯:閆佳明 來源: cnblogs
相關(guān)推薦

2013-09-03 09:35:48

無線客戶端框架設(shè)計(jì)iOS

2013-09-03 09:55:42

iOS無線客戶端框架設(shè)計(jì)

2013-09-09 10:48:24

iOS無線客戶端框架設(shè)計(jì)

2013-09-16 10:43:15

無線客戶端框架設(shè)計(jì)iOSJSON

2009-09-16 16:09:41

NIS服務(wù)器客戶端NIS

2013-09-09 10:36:14

iOS無線客戶端框架設(shè)計(jì)

2010-03-16 17:53:43

無線客戶端NIC

2010-07-05 11:16:22

SQL Server客

2012-11-28 11:05:42

IBMdW

2009-06-12 19:18:08

REST客戶端框架JavaScript

2010-03-24 18:27:27

無線mesh網(wǎng)絡(luò)應(yīng)用

2010-03-19 12:14:13

無線AP Client

2011-03-07 13:50:20

2011-07-13 09:13:56

Android設(shè)計(jì)

2011-03-21 13:41:20

數(shù)據(jù)庫開發(fā)規(guī)范

2012-06-25 12:43:26

.NET框架

2011-08-17 10:10:59

2013-04-07 10:40:55

前端框架前端

2019-08-15 14:33:26

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: www.夜夜草 | 男女免费在线观看视频 | 日韩免费网站 | 国产成人综合网 | 亚洲国产看片 | 亚洲精品成人av久久 | 91在线| 久久激情网 | 天天干夜夜操 | 国产精品久久久久久久免费大片 | 91九色porny首页最多播放 | 国产精品久久久久久一区二区三区 | 成人av网站在线观看 | 亚洲电影一级片 | 亚洲免费网址 | 欧美二区三区 | 成人精品鲁一区一区二区 | 中文字幕欧美一区 | 欧美aaa级 | 成人av免费网站 | 国产精品婷婷 | 国产成人精品一区二 | 日日摸天天添天天添破 | 久久久久久久99 | 国产高清在线精品一区二区三区 | 狠狠躁躁夜夜躁波多野结依 | 中国一级特黄毛片大片 | 成人免费观看网站 | 国产免费一区二区 | 天天色天天色 | 国产精品一区二区不卡 | 精品粉嫩aⅴ一区二区三区四区 | 在线免费观看毛片 | 久久这里只有精品首页 | 日韩一区不卡 | 亚洲成a | www.亚洲一区二区三区 | 久久久久久亚洲精品 | 性色综合 | 精品国产乱码久久久久久丨区2区 | 二区av|