客户数据库应用结构

复杂的业务线应用通常有很多页面和功能,而且有很多代码行。 因此,围绕可预测的结构设计应用至关重要。 有多种应用程序设计模式适用于企业应用,但它们都是围绕使大型应用程序更易于理解和使用而构建的。

尽管客户数据库教程为简单起见提供了一个单页应用程序,但它实现了模型 - 视图 - 视图模型 (MVVM) 应用设计模式以实际展示这些想法。 顾名思义,MVVM 设计模式将核心应用逻辑分为三个类别:

  • 模型是包含应用程序数据的类。
  • 视图是任何给定页面的 UI。
  • 视图模型提供应用程序逻辑。 这可以包括从视图处理用户操作和/或使用模型管理交互。

虽然此应用不是 MVVM 的完美和典型的示例,但它确实显示了在行动中分离关注点的主要原则。 在此处查看该应用。

应用程序结构

打开应用后,请从检查解决方案资源管理器开始。如果之前使用过 UWP 应用,则应熟悉其中的一些内容,但此处还会显示一系列文件夹,其中包含应用的组件部分

解决方案资源管理器中的应用起点

视图

应用的所有 UI 都在 Views 文件夹中定义。 本教程目前是一个单页应用,因此,这意味着只有一个视图 - CustomerListPage。 它具有 XAML UI 标记和 xaml.cs 后置代码 - 这两个文件组成一个视图。 你将向 CustomerListPage.xaml 添加 UI 元素

注意

你可能会注意到,此应用没有 MainPage。 这是因为我们在 app.config 中指定应用应在启动时启动 CustomerListPage

ViewModels

尽管此应用仅有一个视图,但它有两个视图模型。 为什么会这样?

CustomerListPageViewModel.cs 是 MVVM 模式的标准视图模型。 它是应用页面的基本逻辑所在的位置,以及本教程中使用得最多的页面。 用户执行的每个 UI 操作都将通过视图传递到此视图模型进行处理。

不过,CustomerViewModel.cs 不与任何特定视图关联。 相反,它会将编程概念(属性已编辑)与单个客户的模型中包含的数据进行关联。

模型

此应用包含三种模型,用于存储应用的数据,并提供用于与存储库进行交互的接口。 尽管这些是应用的关键部分,但本教程中不涉及直接对这些内容进行编辑。

最重要的是 Customer.cs,它描述了将在本教程中使用的客户数据结构

注意

本教程将忽略 Customer 对象的电子邮件和电话属性。 如果想要了解此处提供内容之外的信息,将这两个属性添加到应用的 UI 中是一个很好的步骤。

存储库

存储库文件夹包含用于构造和与本地 SQLite 数据库进行交互的类。 对于本教程,SQLite 数据库按原样呈现。 尽管需要向 CustomerListPageViewModel.cs 添加代码以调用这些类定义的方法,但无需进行任何更改即可设置它们

有关 UWP 中 SQLite 的详细信息,请参阅此文章

如果尝试本教程的“进一步操作”部分,需要在此处创建一个类来连接到远程 REST 数据库。 它还将实现“模型”部分中定义的 ICustomerRepository 接口,但其外观与 SQLite 对应项的外观非常不同

其他元素

对于 UWP 应用,像往常一样,应用程序启动行为是在 App.xaml.cs 类中定义的。 此处的大部分代码都是任何 UWP 应用的默认代码。 但我们已进行了一些小的更改:

  • 我们指定应用应在启动时显示 CustomerListPage
  • 我们创建了一个存储库对象,该对象将保存所使用的数据源。
  • 我们添加了一个 SQLiteDatabase 方法,该方法初始化本地数据库并将其设置为指定的存储库

如果尝试“进一步”部分,将添加类似的方法来初始化 REST 存储库对象。 由于我们已将我们的问题分隔开来,并为 SQLite 操作和 REST 操作使用相同的定义接口,所以这将是在应用中使用 REST 而不是 SQLite 所需要更改的唯一现有代码。

后续步骤

如果已完成本教程,可以查看完整的示例应用,了解如何以更大的规模实现这些功能。

否则,既然已了解内容出现在其位置的原因,则应该返回教程并使用刚才介绍的结构。