开发可适应,可维护和可测试的Xamarin.Forms企业应用程序的架构指导
本电子书提供了有关如何实现Model-View-ViewModel(MVVM)模式,依赖注入,导航,验证和配置管理的指导,同时保持松耦合。此外,还有指导使用IdentityServer执行身份验证和授权,访问集装箱式微服务的数据和单元测试。
前言
本章将介绍指南的目的和范围以及目标。
介绍
企业应用开发人员面临着几个挑战,可以在开发过程中改变应用的架构。因此,重要的是构建一个应用程序,以便随着时间的推移可以修改或扩展。设计这种适应性可能很困难,但通常包括将应用程序分割成离散的,松散耦合的组件,可以轻松地集成到应用程序中。
MVVM
Model-View-ViewModel(MVVM)模式有助于将应用程序的业务和表示逻辑与其用户界面(UI)进行干净分离。在应用程序逻辑和UI之间保持干净的分离有助于解决许多开发问题,并可使应用程序更容易进行测试,维护和发展。它还可以大大提高代码重用机会,并允许开发人员和UI设计人员在开发应用程序的各个部分时更轻松地协作。
依赖注入
依赖注入可以使具体类型与依赖于这些类型的代码进行解耦。它通常使用一个容器来存储接口和抽象类型之间的注册和映射列表,以及实现或扩展这些类型的具体类型。
依赖注入容器通过提供实例化类实例的功能并根据容器的配置来管理其使用寿命来减少对象之间的耦合。在创建对象期间,容器将注入对象所需的任何依赖项。如果这些依赖关系尚未创建,容器首先创建并解析它们的依赖关系。
松散耦合部件之间的通信
Xamarin.Forms MessagingCenter类实现了发布 - 订阅模式,允许不便于通过对象和类型引用链接的组件之间的基于消息的通信。这种机制允许发布者和订阅者在不相互引用的情况下通信,有助于减少组件之间的依赖关系,同时还允许组件进行独立开发和测试。
导航
Xamarin.Forms包括对页面导航的支持,这通常是由于内部逻辑驱动的状态更改的结果,用户与UI的交互或应用程序本身。然而,在使用MVVM模式的应用程序中实现导航可能很复杂。
本章介绍一个NavigationService类,用于从视图模型执行视图模型优先导航。在视图模型类中放置导航逻辑意味着逻辑可以通过自动测试来实现。此外,视图模型可以实现逻辑来控制导航,以确保执行某些业务规则。
验证
任何接受用户输入的应用程序都应确保输入有效。 没有验证,用户可以提供导致应用失败的数据。 验证强制执行业务规则,并防止攻击者注入恶意数据。
在Model-ViewModel-Model(MVVM)模式的上下文中,通常需要视图模型或模型来执行数据验证,并向视图发出任何验证错误,以便用户可以对其进行更正。
配置管理
设置允许将配置应用程序行为的数据与代码分离,允许在不重新构建应用程序的情况下更改行为。 应用程序设置是应用程序创建和管理的数据,用户设置是影响应用程序行为的应用程序的可自定义设置,不需要频繁重新调整。
容器式微服务
微服务提供了适用于现代云应用的敏捷性,规模和可靠性要求的应用程序开发和部署方法。微服务的主要优点之一是可以独立扩展,这意味着可以对特定的功能区进行扩展,这需要更多的处理能力或网络带宽来支持需求,而不会不必要地缩放没有经历的应用程序区域 需求增加。
认证和授权
将认证和授权集成到与ASP.NET MVC Web应用程序通信的Xamarin.Forms应用程序中有许多方法。这里,使用IdentityServer 4的容器化身份微服务执行身份验证和授权。IdentityServer是用于ASP.NET Core的开放源代码OpenID Connect和OAuth 2.0框架,与ASP.NET Core Identity集成以执行承载令牌身份验证。
访问远程数据
许多现代的基于Web的解决方案利用由Web服务器托管的Web服务来为远程客户端应用程序提供功能。 Web服务公开的操作构成Web API,并且客户端应用程序应该能够使用Web API,而不必知道API暴露的数据或操作的实现方式。
单元测试
从MVVM应用程序测试模型和查看模型与测试任何其他类相同,可以使用相同的工具和技术。然而,有一些典型的模型和模型类的模式,可以从特定的单元测试技术中受益。
备注:每个大标题都有链接,点击可查看具体章节内容。