Xamarin.Forms Web サービスの紹介
このトピックでは、さまざまな Web サービスとの通信方法を示す Xamarin.Forms のサンプル アプリケーションを詳しく解説します。 Web サービスごとに別のサンプル アプリケーションが使用されますが、これらは機能的に似ており、共通のクラスを使用します。
以下で説明するサンプルの To Do リスト アプリケーションでは、さまざまな種類の Web サービス バックエンドに Xamarin.Forms でアクセスする方法を示します。 このアプリケーションには、次の機能があります。
- タスクの一覧を表示します。
- タスクを追加、編集、削除します。
- タスクの状態を "完了" に設定します。
- タスクの名前とメモのフィールドを読み上げます。
どの場合も、タスクはバックエンドで保存され、Web サービスを介してアクセスされます。
このアプリケーションが起動されると、Web サービスから取得されたタスクの一覧のページが表示され、ユーザーは新しいタスクを作成できます。 タスクの 1 つをクリックすると、このアプリケーションの 2 番目のページが表示され、ここでそのタスクの編集、保存、削除、読み上げができます。 最終的なアプリケーションは、次のとおりです。
このガイドの各トピックには、このアプリケーションの別バージョンへのダウンロード リンクがあり、特定の種類の Web サービス バックエンドのデモを見ることができます。 各 Web サービス スタイルに関連するページにある、関連するサンプル コードをダウンロードしてください。
アプリケーションの構造を理解する
各サンプル アプリケーションの共有コード プロジェクトは、次の 3 つのメイン フォルダーで構成されます。
Folder | 目的 |
---|---|
データ | データ項目を管理するために、および Web サービスと通信するために使用されるクラスとインターフェイスが格納されています。 少なくとも、これには TodoItemManager クラスが含まれており、このクラスは Web サービス操作を呼び出すために App クラス内のプロパティを介して公開されます。 |
モデル | このアプリケーションのデータ モデルのクラスが格納されています。 少なくとも、これには TodoItem クラスが含まれており、このアプリケーションで使用されるアイテム 1 件のデータがこれでモデル化されます。 このフォルダーには、ユーザー データのモデル化に使用される任意の追加クラスを入れることもできます。 |
ビュー | このアプリケーションのページが格納されます。 これは通常、TodoListPage クラスと TodoItemPage クラスで構成されており、認証目的で使用される追加クラスもここに格納されます。 |
各アプリケーションの共有コード プロジェクトも、次のように多数の重要なファイルで構成されています。
ファイル | 目的 |
---|---|
Constants.cs | Constants クラス。このアプリケーションが Web サービスと通信するために使用する定数がある場合は、ここで指定されます。 プロバイダー上に作成された個人用バックエンド サービスにアクセスするには、これらの定数を更新する必要があります。 |
ITextToSpeech.cs | ITextToSpeech インターフェイス。Speak メソッドを任意の実装クラスによって提供する必要があることが指定されています。 |
Todo.cs | App クラス。このアプリケーションによって各プラットフォーム上に表示される最初のページと、Web サービス操作の呼び出しに使用される TodoItemManager クラスの、両方のインスタンス化を行います。 |
ビュー ページ
サンプル アプリケーションの大多数には、少なくとも次の 2 つのページが含まれています。
- TodoListPage – このページには
TodoItem
のインスタンスの一覧が表示され、TodoItem.Done
プロパティがtrue
の場合はチェック マークのアイコンが表示されます。 アイテムの 1 つをクリックすると、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 – このメソッドは、Web サービスから取得した
TodoItem
のインスタンスをTodoListPage
上のListView
コントロールに入力するために使用されます。 - SaveTaskAsync – このメソッドは、
TodoItem
のインスタンスを Web サービス上で作成または更新するために使用されます。 - DeleteTaskAsync – このメソッドは、
TodoItem
のインスタンスを Web サービス上で削除するために使用されます。
さらに、一部のサンプル アプリケーションでは TodoItemManager
クラスに追加のメソッドが含まれており、ユーザー認証プロセスの管理に使用されます。
TodoItemManager
のメソッドでは、Web サービス操作を直接呼び出す代わりに、TodoItemManager
コンストラクターに挿入された依存クラスのメソッドが呼び出されます。 たとえば、あるサンプル アプリケーションでは RestService
クラスが TodoItemManager
コンストラクターに挿入されており、これで REST API を使用してデータにアクセスするという実装が実現します。