Шаблоны корпоративного приложения с помощью Xamarin.Forms электронную книгуEnterprise Application Patterns using Xamarin.Forms eBook

Руководство по архитектуре для разработки адаптируемых, поддерживаемых и проверяемых корпоративных приложений Xamarin.FormsArchitectural guidance for developing adaptable, maintainable, and testable Xamarin.Forms enterprise applications

Эта книга содержит руководство по реализации шаблона Model-View-ViewModel (MVVM), внедрение зависимостей, навигации, проверки и управления конфигурацией, сохраняя слабых связей.This eBook provides guidance on how to implement the Model-View-ViewModel (MVVM) pattern, dependency injection, navigation, validation, and configuration management, while maintaining loose coupling. Кроме того имеется также рекомендации по выполнению проверки подлинности и авторизации с identityserver должно, доступ к данным из контейнерных микрослужб и модульного тестирования.In addition, there's also guidance on performing authentication and authorization with IdentityServer, accessing data from containerized microservices, and unit testing.

ПредисловиеPreface

В данной главе объясняется назначение и область руководство, а также кому он нацелен на.This chapter explains the purpose and scope of the guide, and who it's aimed at.

ВведениеIntroduction

Разработчики корпоративных приложений сталкиваются с рядом трудностей, которые могут изменить архитектуру приложения во время разработки.Developers of enterprise apps face several challenges that can alter the architecture of the app during development. Таким образом очень важно создать приложение, чтобы его можно изменить или расширенных со временем.Therefore, it's important to build an app so that it can be modified or extended over time. Проектирование для таких адаптируемости довольно сложно, но обычно подразумевает разделение приложения на дискретные, слабо связанных компонентов, которые можно легко интегрировать друг с другом в приложение.Designing for such adaptability can be difficult, but typically involves partitioning an app into discrete, loosely coupled components that can be easily integrated together into an app.

MVVMMVVM

Шаблон Model-View-ViewModel (MVVM) помогает четко отделить бизнеса и логику представления приложения из его пользовательский интерфейс (UI).The Model-View-ViewModel (MVVM) pattern helps to cleanly separate the business and presentation logic of an application from its user interface (UI). Поддержание четкое разделение между логикой приложения и пользовательский Интерфейс помогает решить множество проблем разработки и позволяют запускать приложения проще тестировать, обслуживать и развиваться.Maintaining a clean separation between application logic and the UI helps to address numerous development issues and can make an application easier to test, maintain, and evolve. Его можно также значительно улучшают возможности повторного использования кода и позволяет разработчикам и конструкторы пользовательского интерфейса для более тесно сотрудничать при разработке их соответствующих частей приложения.It can also greatly improve code re-use opportunities and allows developers and UI designers to more easily collaborate when developing their respective parts of an app.

Введение зависимостейDependency Injection

Внедрение зависимостей обеспечивает разделение конкретные типы из кода, который зависит от этих типов.Dependency injection enables decoupling of concrete types from the code that depends on these types. Обычно в нем контейнер, который содержит список регистраций и сопоставления между интерфейсы и абстрактные типы и конкретные типы, которые реализуют или расширяют эти типы.It typically uses a container that holds a list of registrations and mappings between interfaces and abstract types, and the concrete types that implement or extend these types.

Контейнеры для введения зависимостей уменьшить взаимозависимость между объектами, предоставляя средства для создания экземпляров класса и управления временем их существования, в зависимости от конфигурации контейнера.Dependency injection containers reduce the coupling between objects by providing a facility to instantiate class instances and manage their lifetime based on the configuration of the container. Во время создания объекта контейнера внедряет все зависимости, требуемые для объекта требуется в нее.During the objects creation, the container injects any dependencies that the object requires into it. Если эти зависимости не был создан, создает контейнер и сначала устраняет их зависимости.If those dependencies have not yet been created, the container creates and resolves their dependencies first.

Взаимодействие между слабо связанными компонентамиCommunicating Between Loosely Coupled Components

Xamarin.Forms MessagingCenter класс реализует публикации-подписки шаблон, позволяя обмена сообщениями между компонентами, которые было неудобно для связывания с ссылки на объект и тип.The Xamarin.Forms MessagingCenter class implements the publish-subscribe pattern, allowing message-based communication between components that are inconvenient to link by object and type references. Этот механизм позволяет издателями и подписчиками, обмениваться данными без ссылку друг с другом, позволяя сократить зависимостей между компонентами, позволяя компонентов независимо друг от друга и тестировать.This mechanism allows publishers and subscribers to communicate without having a reference to each other, helping to reduce dependencies between components, while also allowing components to be independently developed and tested.

Xamarin.Forms поддерживает навигацию по страницам, что обычно приводит к от взаимодействия пользователя с помощью пользовательского интерфейса, или в приложении, в результате изменения внутреннего состояния на основе логики.Xamarin.Forms includes support for page navigation, which typically results from the user's interaction with the UI, or from the app itself, as a result of internal logic-driven state changes. Тем не менее навигации могут быть сложными для реализации в приложениях, использующих шаблон MVVM.However, navigation can be complex to implement in apps that use the MVVM pattern.

Эта глава представляет NavigationService класс, который используется для выполнения переходов основанная на модели представления из модели представления.This chapter presents a NavigationService class, which is used to perform view model-first navigation from view models. Поместив логику навигации в представлении классов модели означает, что логика может быть выполнено через автоматические тесты.Placing navigation logic in view model classes means that the logic can be exercised through automated tests. Кроме того модель представления затем можно реализовать логику для управления навигации, чтобы убедиться, что применяются определенные бизнес-правила.In addition, the view model can then implement logic to control navigation to ensure that certain business rules are enforced.

ПроверкаValidation

Любое приложение, которое принимает входные данные от пользователей, следует убедиться, что ввод был допустимым.Any app that accepts input from users should ensure that the input is valid. Без проверки пользователь может передать данные, которые вызывают его сбой.Without validation, a user can supply data that causes the app to fail. Проверка применяет бизнес-правила и не позволяет злоумышленнику вставку вредоносных данных.Validation enforces business rules, and prevents an attacker from injecting malicious data.

В контексте объекта Model-View-ViewModel (MVVM) шаблона, модель представления или модели часто нужно будет выполнить проверку данных и сигнализировать об ошибок проверки в представление, таким образом, пользователь может их исправления.In the context of the Model-View-ViewModel (MVVM) pattern, a view model or model will often be required to perform data validation and signal any validation errors to the view so that the user can correct them.

Управление конфигурациейConfiguration Management

Параметры позволяют разделение данных, используемый для настройки поведения приложения из кода, позволяя поведение, которое должно быть изменено без повторной сборки приложения.Settings allow the separation of data that configures the behavior of an app from the code, allowing the behavior to be changed without rebuilding the app. Параметры приложений — это данные, приложение создает и управляет ими, и параметров пользователя настраиваемых параметров приложения, которые влияют на поведение приложения и не требуют частого повторной настройки.App settings are data that an app creates and manages, and user settings are the customizable settings of an app that affect the behavior of the app and don't require frequent re-adjustment.

Контейнерные микрослужбыContainerized Microservices

Микрослужбы открывают подход к разработке приложений и развертывания, в соответствии с требованиями гибкость, масштабируемость и надежность современных облачных приложений.Microservices offer an approach to application development and deployment that's suited to the agility, scale, and reliability requirements of modern cloud applications. Одно из основных преимуществ микрослужб является, что они могут быть масштабируемыми независимо друг от друга, что означает, что определенной функциональной области можно масштабировать, требуются дополнительные обработки или сетевых ресурсов для поддержки требованию, без без необходимости масштабирования области приложение, которое не наблюдается повышение спроса.One of the main advantages of microservices is that they can be scaled-out independently, which means that a specific functional area can be scaled that requires more processing power or network bandwidth to support demand, without unnecessarily scaling areas of the application that are not experiencing increased demand.

Проверка подлинности и авторизацияAuthentication and Authorization

Существует множество подходов к интеграции проверки подлинности и авторизации в приложение Xamarin.Forms, которое взаимодействует с веб-приложение ASP.NET MVC.There are many approaches to integrating authentication and authorization into a Xamarin.Forms app that communicates with an ASP.NET MVC web application. Здесь проверка подлинности и авторизация выполняются с микрослужбами контейнерных удостоверений, использует IdentityServer 4.Here, authentication and authorization are performed with a containerized identity microservice that uses IdentityServer 4. IdentityServer — это платформа с открытым исходным OpenID Connect и OAuth 2.0 для ASP.NET Core, которое интегрируется с удостоверением ASP.NET Core для выполнения проверки подлинности токена носителя.IdentityServer is an open source OpenID Connect and OAuth 2.0 framework for ASP.NET Core that integrates with ASP.NET Core Identity to perform bearer token authentication.

Доступ к удаленным даннымAccessing Remote Data

Многие современные решения на основе веб-сделать использование веб-служб, размещенных на веб-серверах, для предоставления функций для удаленных клиентских приложений.Many modern web-based solutions make use of web services, hosted by web servers, to provide functionality for remote client applications. Операции, которые веб-служба предоставляет составляют веб-API, и клиентские приложения должны иметь возможность использовать веб-API, не зная, как реализованы данных или операций, которые предоставляет API-Интерфейс.The operations that a web service exposes constitute a web API, and client apps should be able to utilize the web API without knowing how the data or operations that the API exposes are implemented.

Модульное тестированиеUnit Testing

Тестирование модели и модели представлений из приложений MVVM идентична тестирование любые другие классы, и можно использовать те же средства и методы.Testing models and view models from MVVM applications is identical to testing any other classes, and the same tools and techniques can be used. Тем не менее существуют некоторые шаблоны, что характерно для модели и классов модели представления, которые могут использовать преимущества методики тестирования для конкретного устройства.However, there are some patterns that are typical to model and view model classes, that can benefit from specific unit testing techniques.

ОтзывыFeedback

Этот проект содержит узел сообщества, на котором можно задавать вопросы и отзывы.This project has a community site, on which you can post questions, and provide feedback. Веб-узле сообщества находится на GitHub.The community site is located on GitHub. Кроме того, отзывы о электронную книгу можно отправлять по электронной почте dotnet-architecture-ebooks-feedback@service.microsoft.com .Alternatively, feedback about the eBook can be emailed to dotnet-architecture-ebooks-feedback@service.microsoft.com.