Xamarin.Forms Web 服务简介
本主题提供了 Xamarin.Forms 示例应用程序的演练,演示了如何与各种 Web 服务进行通信。 虽然每个 Web 服务都使用单独的示例应用程序,但它们在功能上相似,并共享公共类。
下面介绍的示例待办事项列表应用程序用于演示如何使用 Xamarin.Forms 访问不同类型的 Web 服务后端。 其提供的功能如下:
- 查看任务列表。
- 添加、编辑和删除任务。
- 将任务的状态设置为“完成”。
- 朗读任务的名称和备注字段。
在所有情况下,任务都存储在通过 Web 服务访问的后端中。
启动应用程序后,将显示一个页面,其中列出从 Web 服务检索到的任何任务,并允许用户创建新的任务。 单击某个任务会将应用程序导航到第二个页面,可在其中编辑、保存、删除和朗读任务。 最终的应用程序如下所示:
本指南中的每个主题都提供了指向应用程序不同版本的下载链接,该应用程序用于演示特定类型的 Web 服务后端。 在与每个 Web 服务样式相关的页面上下载相关示例代码。
了解应用程序剖析
每个示例应用程序的共享代码项目都由三个主要文件夹组成:
Folder | 目的 |
---|---|
数据 | 包含用于管理数据项并与 Web 服务通信的类和接口。 至少,这包括 TodoItemManager 类,该类通过 App 类中的属性进行公开以调用 Web 服务操作。 |
模型 | 包含应用程序的数据模型类。 至少,这包括 TodoItem 类,该类对应用程序使用的单个数据项进行建模。 该文件夹还可以包含用于为用户数据建模的任何其他类。 |
视图 | 包含应用程序的页面。 这通常包含 TodoListPage 和 TodoItemPage 类,以及用于身份验证目的的任何其他类。 |
每个应用程序的共享代码项目还包含许多重要文件:
文件 | 目的 |
---|---|
Constants.cs | Constants 类,用于指定应用程序与 Web 服务通信所使用的任何常数。 这些常数需要更新才能访问在提供程序上创建的个人后端服务。 |
ITextToSpeech.cs | ITextToSpeech 接口,该接口指定 Speak 方法必须由任何实现类提供。 |
Todo.cs | App 类和 TodoItemManager 类,前者负责实例化应用程序将在每个平台上显示的第一页,后者用于调用 Web 服务操作。 |
查看页面
大多数示例应用程序至少包含两个页面:
- TodoListPage – 此页面显示
TodoItem
实例的列表,TodoItem.Done
属性为true
时还显示一个对勾图标。 单击某个项可导航到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 – 此方法用于在 Web 服务上创建或更新
TodoItem
实例。 - DeleteTaskAsync – 此方法用于删除 Web 服务上的
TodoItem
实例。
此外,某些示例应用程序还在 TodoItemManager
类中包含其他方法,这些方法用于管理用户身份验证过程。
TodoItemManager
方法不直接调用 Web 服务操作,而是在注入 TodoItemManager
构造函数的依赖类上调用方法。 例如,一个示例应用程序将 RestService
类注入 TodoItemManager
构造函数,以提供使用 REST API 访问数据的实现。