Xamarin.Forms Web 服務簡介

Download Sample 下載範例

本主題提供範例應用程式的逐步 Xamarin.Forms 解說,示範如何與不同的 Web 服務通訊。 雖然每個 Web 服務都使用不同的範例應用程式,但它們在功能上很類似,並共用一般類別。

以下所述的範例 to-do 列表應用程式是用來示範如何使用 來存取不同類型的 Web 服務後端 Xamarin.Forms。 它提供下列功能:

  • 檢視工作清單。
  • 新增、編輯和刪除工作。
  • 將工作的狀態設定為 「完成」。
  • 說出工作的名稱和附註欄位。

在所有情況下,工作都會儲存在透過 Web 服務存取的後端。

啟動應用程式時,會顯示一個頁面,其中列出從 Web 服務擷取的任何工作,並允許使用者建立新的工作。 按兩下工作會將應用程式巡覽至第二個頁面,其中工作可以編輯、儲存、刪除和說話。 最終的應用程式如下所示:

Todo application - first pageTodo application - second page

本指南中的每個主題都會提供不同版本的應用程式下載連結,以示範特定類型的 Web 服務後端。 下載頁面上與每個 Web 服務樣式相關的相關範例程式代碼。

瞭解應用程序結構

每個範例應用程式的共享程式代碼專案包含三個主要資料夾:

資料夾 目的
資料 包含用來管理數據項,並與 Web 服務通訊的類別和介面。 至少,這包括 類別 TodoItemManager ,其會透過 類別中的 App 屬性公開,以叫用Web服務作業。
模型 包含應用程式的數據模型類別。 這至少包含 類別 TodoItem ,它會為應用程式所使用的單一數據專案建立模型。 資料夾也可以包含用來建立用戶數據模型的任何其他類別。
檢視 包含應用程式的頁面。 這通常包含 TodoListPageTodoItemPage 類別,以及用於驗證用途的任何其他類別。

每個應用程式的共享程式代碼專案也包含一些重要檔案:

檔案 目的
Constants.cs 類別 Constants ,指定應用程式用來與 Web 服務通訊的任何常數。 這些常數需要更新,才能存取在提供者上建立的個人後端服務。
ITextToSpeech.cs 介面 ITextToSpeech ,指定 Speak 方法必須由任何實作類別提供。
Todo.cs App負責具現化應用程式在每個平台上顯示的第一個頁面,以及用來叫用 Web 服務作業的TodoItemManager類別。

檢視表頁面

大部分範例應用程式至少包含兩個頁面:

  • TodoListPage – 此頁面會顯示實例清單TodoItem,如果 屬性為 trueTodoItem.Done則會顯示刻度圖示。 點選項目會巡覽至 TodoItemPage。 此外,您可以按下 + 符號來建立新的專案。
  • TodoItemPage – 此頁面會顯示所選取 TodoItem的詳細數據,並允許編輯、儲存、刪除和說話。

此外,某些範例應用程式包含用來管理使用者驗證程式的其他頁面。

建立資料模型

每個範例應用程式都會 TodoItem 使用 類別來建立顯示並傳送至 Web 服務以進行記憶體的數據模型。 下列程式碼範例顯示 TodoItem 類別:

public class TodoItem
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Notes { get; set; }
    public bool Done { get; set; }
}

屬性 ID 是用來唯一識別每個 TodoItem 實例,並由每個 Web 服務用來識別要更新或刪除的數據。

叫用 Web 服務作業

Web 服務作業是透過 TodoItemManager 類別存取,而 類別的實例可以透過 App.TodoManager 屬性來存取。 類別 TodoItemManager 提供下列方法來叫用 Web 服務作業:

  • GetTasksAsync – 這個方法可用來將 上的 TodoListPageTodoItem 控件填ListView入從 Web 服務擷取的實例。
  • SaveTaskAsync – 這個方法可用來在 Web 服務上建立或更新 TodoItem 實例。
  • DeleteTaskAsync – 這個方法可用來刪除 TodoItem Web 服務上的實例。

此外,某些範例應用程式在類別中包含 TodoItemManager 其他方法,可用來管理使用者驗證程式。

方法會叫用插入建構函式的TodoItemManager相依類別,而不是直接TodoItemManager叫用Web服務作業。 例如,一個範例應用程式會將 RestService 類別插入建構函式, TodoItemManager 以提供使用 REST API 來存取資料的實作。