2016 年六月

第 31 卷,第 6 期

本文章是由機器翻譯。

行動開發 - 使用 MBaaS 平台,提升行動開發的速度

Paras Wadehra |2016 年 6 月

行動裝置應用程式開發成本很大百分比來自後端整合。此外,大部分的應用程式有一組核心功能,一點都不相同於其上。因此而不是相同的功能及元件不斷地從每個應用程式重新建置,如果您可以專注於如何成為很棒的行動裝置應用程式 — UX — 和取用 (而不是組建) 的其他重要的應用程式功能? 這是完全行動後端背後的理論為服務 (MBaaS),可作為您取用的服務提供這些重要但常見的應用程式功能,可讓您專注在傳遞給您的使用者體驗節省大量的時間 (以及 money) 上開發應用程式。

不僅不需要針對每個應用程式造,MBaaS 平台也可讓您使用 「 解除結合 」 開發方法,應用程式的前端和後端。這表示在同一時間建置前端和後端,而且現在可能連接兩個只會採用 「 開關 」 完成兩面。

我要逐步引導您逐步完成主要範例企業應用程式的開發程序使用這兩個 「 自行進行此作業 」 (DIY) 和 MBaaS 方法,然後比較這兩個並知道何種案例中其中一個是合理的其他。這個使用案例的高階需求如下所示 ︰

  1. 應用程式需要驗證其使用者對 Active Directory 同盟服務 (AD FS)。
  2. 應該連接到應用程式,並顯示 SharePoint 執行個體,但要篩選的資料,而非顯示完整的記錄集從 SharePoint 需求的資料。
  3. 應用程式應該允許使用者瀏覽資料時離線。
  4. 應用程式應該允許使用者新增新記錄,而離線,並自動同步處理這些記錄與伺服器應用程式上線時。
  5. 應用程式應該會收到推播通知,確認新的或更新記錄已成功儲存在 SharePoint 中。
  6. 應用程式應該允許使用者拍照並將它上載至伺服器附加至所建立的記錄。

現在想像一下您剛才已處理這些需求,並建置行動應用程式。從何處下手? 讓我們看看這些選項。

其中一個選項是啟動並執行,取得所有後端服務,例如 AD FS 和 SharePoint 伺服器來代管您的檔案以及 — 在本例中的圖片。您也必須建置 AD FS 和 SharePoint 可讓您連接,並從行動裝置應用程式和服務。然後您可以建置前端的行動裝置應用程式連接至這些後端服務。

您可以也開始建置前端的行動應用程式,使其與模擬資料和驗證來源第一次,然後更新 [行動裝置的應用程式後端服務已啟動跟驗證來源與實際的資料和執行。不過,這需要您建立模擬 (mock) 的資料和驗證系統或服務,可用來建置行動應用程式。

對於任一 DIY 選項,前端應用程式必須與後端相同的語言,並有可能會中斷後端的變更,需要您的應用程式作昂貴又耗時的修正程式。

使用 MBaaS 平台相較之下,表示行動應用程式前端和後端服務可以建立一次由兩個不同的團隊 — 也就是說縮短上市時間 — 而且這兩個可以使用 MBaaS 平台本身彼此連接。其中幾個這種方法的優點是,您不需要擔心建立模擬 (mock) 的服務,來模擬資料和驗證來源。

MBaaS 平台為您提供的 Sdk 適用於原生和混合式平台。您只要將您所選擇的平台 SDK 整合至開發環境和程式碼,以方便使用的後端服務。MBaaS 會使用您的應用程式最重要功能之一整合與後端資料與身分識別來源。MBaaS 平台也提供一個抽象層,從而隱藏前端的行動應用程式中的後端的複雜性。

讓我們看看哪些每個這些選項需要更深入了解。我將 DIY 方法實作該功能,請先檢查每個應用程式和焦點的所需的功能,然後比較所帶來的 MBaaS 方式。最後,我的整體比較兩種方法。

驗證

使用 DIY 方法時,您首先要建置 AD fs 的連接器,然後使用該連接器驗證使用者。連接器必須從行動裝置應用程式,並允許傳遞使用者名稱和密碼從應用程式至 Active Directory 進行驗證。Active Directory 已成功驗證使用者時,它會傳回驗證權杖,將需要進行剖析,加密和儲存的使用會在未來呼叫。此外,如果驗證提供者支援重新整理權杖,程式碼必須寫入至到期時,自動重新整理驗證權杖。

使用 MBaaS,相較之下,您進行驗證通話使用用戶端 SDK 來驗證使用者,如下所示 ︰

MBaaS.login(redirectURI);

根據驗證類型,提供者可能有它自己的登入畫面 (OAuth 樣式) 或 MBaaS 提供者可能會有自己的登入畫面版本。所有 MBaaS 提供者都提供至少部分無程式碼連接器企業身分識別來源,包括但不是限於 AD FS。您只要提供 MBaaS 定域機組入口網站中的一些組態參數,並設定 MBaaS 聯繫到您的 AD FS 執行個體。您提供的組態參數的型別包含提供者登入 URI、 登出 URI、 憑證文字,以及重新導向 Uri 的名稱識別碼格式的 URI 和存留時間 (TTL) 驗證權杖。您可以從 AD FS 系統管理員在企業中取得所有這些值。只要設定這些組態參數中,您可以建立連線至您的 AD FS 執行個體。

現在已簡化實作整個驗證程序的複雜度,以這一行程式碼。現在是由 MBaaS 平台和對應的 SDK 的處理所有後端處理複雜,像是驗證信號交換,擷取驗證權杖,加密和儲存,等等。

資料存取

提取 DIY 資料看起來直接明瞭,直到您坐下來並再試。不巧的是預設情況下公開取用 Web 服務的資料上方的資料來源。它甚至可能很容易從直接連接到資料來源的 Web 架構應用程式。不過,行動平台通常沒有相同的連接器可做為 Web 應用程式的企業資料來源。這表示需經過撰寫自訂連接器,最有可能會為 Web 服務與資料來源,並公開其資料使用標準 HTTP 動詞命令,例如 GET、 PUT、 POST 和刪除。此外,此連接器需要某處裝載。在大部分情況下,從外部網路,這表示您所建立的服務必須能夠與外界,以及在內部防火牆企業世界 Web,存取您的應用程式,這表示一個洞可能需要 poked 在防火牆中。建立自訂連接器之後,您可以從行動裝置應用程式連接到它,並據此執行資料的所有作業。但如果您有可讓使用者擷取只根據其查詢特定記錄集嗎? 這會需要建置在 Web 服務中,可以得很複雜,尤其是如果您需要允許使用者進行複雜的查詢 (linq) 功能。

大多數 MBaaS 系統提供的方塊外連接數個企業資料來源,這表示您只需而不是建立這些設定的連接器。範例使用案例中,您可以設定 sharepoint 連接器藉由設定參數,例如主機 URL 和使用者名稱和密碼來連接到您的 SharePoint 執行個體。使用行動裝置應用程式中的從 SharePoint 資料是,只要撰寫這一行程式碼 ︰

MBaaS.data.get(NameofDataCollection [,QueryParams] [,Options]);

這通常會從資料來源傳回 JSON 物件的陣列。使用 MBaaS 提供者所提供的方塊外連接器的優點之一是此類連接器提供的方法來探索資料存放區中的所有物件,因此只要找都出所有的 SharePoint 清單並選取您的想来提供行動應用程式中的存取權。您也可以篩選並協調 SharePoint 只要幾如此大量的資料集未傳送到行動裝置上,只有一小部分可能真的有用的應用程式時所需的行動裝置應用程式所傳回的欄位。同樣地,套用篩選,而不需要撰寫任何自訂程式碼 — 龐大的價值主張行動開發人員。沒有提供此類功能 MBaaS 設定時,整個篩選的負擔,並協調資料最重要的是行動應用程式 (這表示在裝置上更高的頻寬和電池耗用量,行動使用者從未良好的體驗) 或使用您要撰寫伺服器端指令碼,主控地方與管理 (表示進行中的工作以及為您維護)。QueryParams 輸入前一行的程式碼中的方法可讓您傳入查詢為基礎的參數,以便搜尋和篩選的需求或使用者的輸入為基礎的記錄。

MBaaS 平台時,通常也提供內建的平台本身,因此不需要它們自己的資料來源的應用程式可以使用內建的 MBaaS 資料存放區來儲存及取用資料的資料與檔案存放區。

離線資料

只讓資料可供離線使用的是 DIY 方法其實很簡單。您只需要而將資料儲存在本機裝置上,在本機儲存體或 SQLite,像是資料存放區中讀取從該處,當使用者嘗試存取您的應用程式中的資料。

不過,它不是很容易就能啟用離線編輯現有的資料或加入新資料並再同步處理與伺服器時的過程,可能會發生的衝突。曾經嘗試過實作衝突解決程式碼的人會說,它不是最有趣的做法。您要檢查哪些實體在本機已修改,但這已在此同時,在伺服器上修改,然後找出每個實體的屬性已修改,並在相同實體的相同的屬性已修改用戶端和伺服器上決定哪些變更的優先順序將會儲存為記錄的值。

使用 MBaaS 提供者的用戶端 SDK 應該讓它更容易讓應用程式中的離線資料取用。前一節中使用資料耗用量範例,您可以只傳遞某些選項值來呼叫,如下所示 ︰

MBaaS.data.get(NameofDataCollection [,QueryParams] , Data.Offline, Data.EncryptFull);

在此程式碼中,我讓離線資料儲存體上的裝置,以及資料的加密。SDK 如何儲存資料供離線使用不同者,但是的實作應該不會影響您與 MBaaS SDK 的互動。SDK 會負責為您的離線實作周圍的所有複雜操作。一樣簡單,且只要涉及到設定選項,應該是更好、 啟用加密。這可讓離線資料存放區的安全,大部分的企業應用程式的必備條件。MBaaS SDK 會自動解密資料與使用者互動或在螢幕上顯示,並加密再將其儲存在裝置上的使用者輸入的資料。通常 SDK 會讓離線編輯和加入的新資料的處理。這如預期般運作,不過後, 端系統必須 LastUpdatedTime 實作每一筆記錄。同樣地,設定進一步的衝突解決選項會決定用戶端或伺服器上的變更贏得這兩端同時更新記錄時。

推播通知

設定推播通知的 DIY 專案可以是一項挑戰。中所示 [圖 1, ,多個步驟,必須先設定成功推播通知通道和要傳送推播通知。(請參閱 bit.ly/UWPPush 如需詳細資訊。)

  1. 通用 Windows 平台 (UWP) 應用程式會向作業系統要求推播通知通道。
  2. 新的通知通道是建立 Windows 通知服務 (WNS),並傳回給呼叫端的裝置,在表單的統一資源識別元 (URI)。
  3. 通知通道 URI 會傳回 Windows 應用程式。
  4. 您的應用程式將 URI 傳送至雲端服務,儲存在何處,傳送通知時,就能存取的 URI。
  5. 當您的雲端服務有傳送通知時,它會告知稍早註冊 WNS 使用的 URI。這是發出 HTTP POST 要求,包括通知裝載,透過安全通訊端層 (SSL)。
  6. WNS 接收要求,並將通知路由至適當的裝置。

設定和傳送推播通知的流程
[圖 1 流程來設定及傳送推播通知

此外,您必須要求通道每次啟動應用程式,因為通道 Uri 可能會過期,而且也有效 URI 不保證至上一個頻道。如果傳回的通道 URI 是不同於您所使用的 URI,您將需要更新您的雲端服務中的 URI。您也需要將通道 URI 對應至使用者的裝置識別碼,讓您可以在伺服器上更新適當的通道 URI。

任何良好 MBaaS 平台提供了簡化推播通知設定。還記得您剛剛看到成功推播通知傳送至 UWP 應用程式的步驟嗎? 現在看一下 [圖 2, ,其中顯示您沒有執行,如果您使用 MBaaS 平台。

由 MBaaS 推播通知的複雜性
[圖 2 推播通知複雜性包辦 MBaaS

如您所見,MBaaS 會隱藏所有複雜的設定、 管理及傳送推播通知給使用者。所有的處理方式是使用用戶端 SDK 所建立的單一呼叫 ︰

MBaaS.registerForPush();

和撰寫 MBaaS 平台,判斷何時傳送推播通知,並叫用適當的使用者會送出推送的預先定義的方法內的伺服器端商務邏輯。

檔案伺服器

下列 DIY 路徑表示您需要裝載和管理您自己的檔案伺服器,可讓使用者拍照從他們的裝置,並將它上傳至伺服器,以及管理使用者存取這些檔案讓一位使用者無法存取其他使用者的檔案。此外,您需要管理伺服器,以及延展性、 效能和安全性更新的執行時間。

MBaaS 平台,您可能不必執行任何能夠在雲端中的主機檔案。MBaaS 平台的功能之一是現成的檔案存放區存取。取得完整的 CDN 備份檔案存放區來裝載所有常見的檔案類型 — Pdf、 影像、 視訊、 office 文件等等。如同其他功能,您只需要是 MBaaS SDK 使用檔案儲存在雲端中進行簡單的方法呼叫。檔案 API 可讓您上傳、 下載和資料流檔案與檔案存放區中,使用類似的呼叫 ︰

MBaaS.File.upload(FileName);
MBaaS.File.download(FileName or FileID);

這可免除管理龐大的檔案伺服器 (根據數字和儲存檔案的大小),包括擴充和縮減依需要在任何給定的時間點的儲存體的頭痛問題和管理執行時間和檔案存取延遲。

其他 MBaaS 功能

我所描述的本文中,開頭的範例應用程式的功能集,但我也想要反白顯示幾個 MBaaS 平台功能可能會使應用程式開發更加輕鬆 ︰

伺服器端商務邏輯,可讓您執行大量處理伺服器上,而非耗用用戶端裝置上的電源。它也可讓您篩選資料來源傳送到傳送什麼僅需要節省頻寬,讓使用者在行動裝置上的資料。此外,您可以攔截任何進出透過、 MBaaS 平台的呼叫。

伺服器端快取可讓子第二個 UX 案例。傳統的企業資料來源通常會需要幾秒鐘到回應查詢,但行動使用者預期更快的回應,如果載入應用程式的時間太長,而只會解除安裝應用程式及前往競爭對手。使用伺服器端快取功能,企業資料來源的資料可以快取 MBaaS 平台行動應用程式中的快速回應要求並快取可以從原始資料來源在背景以無訊息模式更新。

總結

DIY 和 MBaaS 方法有應用程式開發中的位置。使用 MBaaS 平台的優點並明確的但在某些情況下使用 DIY 方法只要是合理的。這類執行個體包含已經有所有必要的服務在連接到資料及身分識別的來源位置的一次性應用程式開發專案。其中還尚未建立服務連線到這類資料及身分識別的來源,而且需要從多個應用程式中取用的情況下,MBaaS 平台可以真正加快行動應用程式開發所提供的現成的後端整合最複雜的功能。MBaaS 平台的幫助您專注於您的應用程式 UX 而不需將資料和識別來源、 加密、 離線的實作,衝突解決、 推播通知設定和其他基本整合但重要的行動應用程式的元件。

在結束時,就是項優點,可讓您視需要變更您的後端資料和頻率的身分識別來源的抽象 MBaaS 平台提供。您也可以變更您的伺服器端商務邏輯,而不需要重新撰寫一行程式碼應用程式中。行動 Sdk MBaaS 平台提供這個抽象層,讓您執行的應用程式的工作,並可節省從更新 (包括單元、 整合和迴歸測試)、 測試和部署應用程式,以及等候儲存一次核准 !

一個缺點是,使用 MBaaS 平台可能會使其難以變更平台,連接器的實作取自使用者。在 DIY 方法中,您所擁有的所有連接器的程式碼,以便於進一步自訂以供未來的需求。

當建置行動應用程式,同時根據時間和精力以及從持續性維護、 安全性和保養服務和相關的伺服器的觀點來看,MBaaS 確實提供顯著的成本節約。


Paras Wadehra是有經驗的軟體架構設計人員解決問題,並可讓應用程式可跨 Web、 桌面和行動平台。他必須開發所有主要行動平台 iOS、 Android 和 Windows 的經驗。他在 C#、 Node.js、 JavaScript、 SQL 和 Swift 舉幾個撰寫程式碼。Wadehra 目前是在 Windows 開發的 Microsoft MVP。他在各種產業活動和研討會發表演說,您可以在 Twitter 上 ︰ @ParasWadehra 和 LinkedIn 上。

衷心感謝以下技術專家對本文的審閱: 世的老 Dave (相關聯按有限,英國),Kurt Monnier (Kinvey,Inc.) 和 Arun Nagarajan (Uber)
世的老 Dave 是 Windows 開發人員與企業和消費者的空間超過 15 年的經驗。

Kurt Monnier 資深主任解決方案和客戶成功 Kinvey,inc.,具有已幫助企業客戶自 2007年建置行動應用程式。

Arun Nagarajan 是超級工程經理。