我們一直想讓用戶可以簡單、快速的共享他們收藏的圖片。事實上,產(chǎn)品最先發(fā)布的原身是Pinterest的一個版本,用于收集一個市場路線圖。最初的網(wǎng)絡(luò)版發(fā)布后我們就認(rèn)識到,在上傳圖片的時候還存在一定的困難,所以我們一直在致力新方法的研究。我們首先在iPhone上進(jìn)行了嘗試,并希望在不久的將來能推出Android應(yīng)用。因為開始時,我們只能把精力集中在一個方向。
將有一系列(3-5)文章講述iPhone應(yīng)用是如何構(gòu)建的。這里我們將談一些架構(gòu)細(xì)節(jié),并在以后逐步的公布一些代碼。第一篇文章,就將展示出全部的圖片。好吧,實話告訴你,我們就只有這么一張:
我在之前的報告中提到過每層都是一個成本投資。事實上,最初我們沒有“Phone.Services”這層。這是我們之后發(fā)現(xiàn)在手機中使用中間層來緩存數(shù)據(jù)可以大限度的提升性能。下面將概括的描述一下每一層的用途。
Data Layer
現(xiàn)在你可能認(rèn)為我們將使用SQL Server作為我們主要的數(shù)據(jù)儲存。但是我們使用的是BizSpark,微軟出品的一個世界級項目,完全可以承擔(dān)起后臺數(shù)據(jù)庫服務(wù)器的重任。沒有廣泛的Microsoft經(jīng)驗,我們也許回答不出為什么不選擇SQL Server。在我們訪問數(shù)據(jù)庫過程中有99%都是通過存儲程序?qū)崿F(xiàn)的,只有三兩個是通過數(shù)據(jù)庫原生的SQL工具(沒有這些網(wǎng)絡(luò)上可以利用的,就沒有了SQL注入攻擊的可能)。我們認(rèn)為數(shù)據(jù)庫的價值只在于數(shù)據(jù)的儲存。我們的存儲程序非常短,而且他們之間是沒有邏輯的。以后我將會在博客中公布一些我們的數(shù)據(jù)結(jié)構(gòu),你將會看到故意不規(guī)范的一些方面。
Bit.Services Layers
開始猛攻Collectibles之前,我們得多考慮其他一些方面。將包含立足一個合適的應(yīng)用,F(xiàn)aceBook的游戲應(yīng)用,最后再回到我們的出發(fā)點。但是之前還必須做出一些其他的測試,我們建立了“23bits.com,LLC”。正因為這個我們才把命名空間定為“Bit”。很友善、簡短、便于輸入而且引人注意,對吧?!
基本的Services Layer應(yīng)該提供數(shù)據(jù)庫的連接,可以對數(shù)據(jù)庫進(jìn)行任何操作并且可以為ASP.net層提供簡單的實體類型。這些服務(wù)和其他的網(wǎng)絡(luò)類型及iPhone應(yīng)用程序相同。關(guān)于這點,將會在今后的討論中給出更詳細(xì)的解答。這里將會有12個左右的服務(wù)來保障安全、用戶資料、收藏、論壇、社區(qū)及那些還沒有啟動的特色。服務(wù)之間的依賴性將通過使用Ninject被DI(Dependency Injection)管理。理論上這些為硬件提供支持的服務(wù)是可以獨立劃分的,在實力增長后我們也必將把他們分開。
Internet Bounday(ASP.net MVC3.5)
當(dāng)下來說仍然是ASP.net MVC3,但是同樣可以作為MVC4運行并且處理的無限接近于MVC4。我們將很快的升級然后將使用更多的方法使Web API技術(shù)變的更酷!同時它還響應(yīng)了基礎(chǔ)JSON的號召。隨后,將會出一篇介紹我們是用什么樣方法來保護(hù)我們系統(tǒng)的博客。雖然現(xiàn)在這個API接口的工作原理還只能用于iPhone,但是不久的將來這個API同樣會在Android和Windows上出現(xiàn)。
Bit.ClientServices
當(dāng)然,客戶服務(wù)設(shè)計模式并不意味著你只能擁有一個客戶端和一個服務(wù)。對于這種情況,通過iPhone的客戶端我們還擁有一個依賴于我們后端服務(wù)器的服務(wù)。它將在iPhone上通過服務(wù)本地應(yīng)用ClientServices層來促進(jìn)通信。最需要關(guān)心的事就是如何不破壞iPhone的應(yīng)用就可以實現(xiàn)對服務(wù)器的通話,即使在innerwebs低下的時候。然而它將會很好的完成這項使命。
Phone.Services
我們來到了最終層,這層是個很特殊的平臺。這層是在一些實際測試后被加入,測試的結(jié)果發(fā)現(xiàn),只需添加少量的緩存,手機性能就會呈戲劇性的提高。也許其中有一些東西Facebook應(yīng)用是可以用到的。于是我們給Bit.ClientServices加了讓它可以高速響應(yīng)的緩存。當(dāng)我們繼續(xù)深挖Bit.ClientServices細(xì)節(jié)時還發(fā)現(xiàn)這個可移植層可以在Android和Windows手機應(yīng)用上重利用。很輕量,主要用于ClientServices的調(diào)用。只需要知道自己能緩存什么和不能緩存什么,還要知道一下UI控制的特殊性。所以有了它你本地的Facebook應(yīng)用將得到新的提升。
有以上是所有服務(wù)層的介紹,更多細(xì)節(jié)將在續(xù)篇中得以報告。(編譯/仲浩 王旭東/審校 原文來自collectedit )