“使用 Xamarin.Forms 的企业应用程序模式”电子书

关于开发自适应、可维护且可测试的 Xamarin.Forms 企业应用程序的体系结构指南

Enterprise Application Patterns using Xamarin.Forms eBook

注意

本电子书于 2017 年春季出版,之后再未更新。 书中有许多内容仍然很有价值,但有些材料已经过时。

本电子书提供有关如何实现模型-视图-视图模型(MVVM) 模式、依赖项注入、导航、验证和配置管理的指导,同时维护松散耦合度。 此外,还提供了关于使用 IdentityServer 执行身份验证和授权、从容器化微服务访问数据以及单元测试的指南。

前言

本章介绍指南的目的和范围,以及面向的目标读者群体。

介绍

企业应用的开发人员面临着几项挑战,这些挑战可能会在开发过程中改变应用的体系结构。 因此,请务必构建一个应用,使其可随时间推移进行修改或扩展。 针对这种适应性进行设计可能很困难,但通常涉及将一个应用划分为多个离散的松散耦合组件,这些组件可以轻松集成到应用中。

MVVM

模型-视图-视图模型 (MVVM) 模式有助于将应用程序的业务和表示逻辑与用户界面 (UI) 清晰分离。 保持应用程序逻辑和 UI 之间的清晰分离有助于解决许多开发问题,并使应用程序更易于测试、维护和演变。 它还可以极大提高代码重用机会,并允许开发人员和 UI 设计人员在开发应用各自的部分时更轻松地进行协作。

依赖项注入

依赖关系注入使具体类型与依赖于这些类型的代码分离。 它通常使用一个容器来保存接口和抽象类型之间的注册和映射列表,以及实现或扩展这些类型的具体类型。

依赖关系注入容器通过提供一种工具来实例化类实例并根据容器的配置管理它们的生命周期,从而减小了对象之间的耦合度。 在对象创建期间,容器将对象所需的任何依赖项注入其中。 如果尚未创建这些依赖项,则容器将先创建并解析其依赖项。

松散耦合组件之间的通信

Xamarin.FormsMessagingCenter 类可实现发布-订阅模式,允许不便按对象和类型引用进行链接的组件之间进行基于消息的通信。 这种机制允许发布方和订阅方在没有彼此引用的情况下进行通信,这有助于减少它们之间的依赖关系,同时允许独立开发和测试组件。

Xamarin.Forms 包括对页面导航的支持,这通常是用户与 UI 交互或由于内部逻辑驱动的状态更改应用本身导致的结果。 但是,在使用 MVVM 模式的应用中实现导航可能会很复杂。

本章介绍了 NavigationService 类,用于从视图模型执行视图模型优先导航。 将导航逻辑置于视图模型类中,这意味着可以通过自动测试来执行逻辑。 此外,视图模型可以实现用于控制导航的逻辑,确保强制执行某些业务规则。

验证

接受用户输入的任何应用都应确保输入有效。 如果没有验证,用户可能会提供导致应用失败的数据。 验证会强制实施业务规则,可防止攻击者注入恶意数据。

在模型-视图-视图模型 (MVVM) 模式的上下文中,通常需要视图模型或模型来执行数据验证并向视图发出信号,指示存在验证错误,以便用户可以更正它们。

配置管理

设置允许将配置应用行为的数据与代码分离,从而允许在不重新生成应用的情况下更改行为。 应用设置是应用创建和管理的数据,而用户设置是应用的可自定义设置,可影响应用行为,不需要频繁重新调整。

容器化微服务

微服务提供了一种应用程序开发和部署方法,该方法能满足新式云应用程序的灵活性、规模和可靠性要求。 微服务的一个主要优点是可以独立横向扩展,这意味着可以缩放需要更多处理能力或网络带宽的特定功能区域来支持需求,而不需要对需求没有增加的应用程序区域进行不必要的缩放。

身份验证和授权

有许多方法可以将身份验证和授权集成到与 ASP.NET MVC Web 应用程序通信的 Xamarin.Forms 应用中。 在这里,身份验证和授权是使用 IdentityServer 4 的容器化标识微服务执行的。 IdentityServer 是一个适用于 ASP.NET Core 的开源 OpenID Connect 和 OAuth 2.0 框架,它与 ASP.NET Core 标识集成以执行持有者令牌身份验证。

访问远程数据

许多现代的基于 Web 的解决方案都利用 Web 服务器托管的 Web 服务,来为远程客户端应用程序提供相关功能。 Web 服务公开的操作构成 Web API,客户端应用应该能够在不知道 API 公开的数据或操作是如何实现的情况下利用 Web API。

单元测试

从 MVVM 应用程序测试模型和视图模型与测试任何其他类相同,并且可以使用相同的工具和技术。 但是,模型和视图模型类的一些典型模式可以从特定的单元测试技术中受益。

社区站点

此项目有一个社区站点,可以在此站点上发布问题并提供反馈。 社区站点位于 GitHub 上。 或者,可以将有关电子书的反馈通过电子邮件发送给 dotnet-architecture-ebooks-feedback@service.microsoft.com