Возможности использования общего кода

В этом документе сравниваются два способа совместного использования кода в кросс-платформенных проектах: Общие проекты и Библиотеки переносимых классов, включая преимущества и недостатки каждого из них.

Обзор

Есть два альтернативных способа для совместного использования кода в кросс-платформенных приложениях:

  • Shared Projects – Использование этого типа проекта общих ресурсов, для организации исходного кода предполагает применение директивы компилятора #if, чтобы удовлетворять специфичными для каждой платформы требованиям.
  • Portable Class Libraries – Создают Библиотеку переносимых классов (PCL), предназначающуюся для платформ, которые Вы хотите поддерживать, и использовать Интерфейсы для обеспечения специфичной для платформы функциональности.

Целью стратегии совместного использования кода, показанной на этой диаграмме,  является поддержка архитектуры, где один код может использоваться на различных платформах.

share code

В этой статье сравниваются два метода, чтобы помочь вам выбрать правильный тип проекта для ваших приложений.

Shared Projects

Самый простой подход к совместному использованию файлов кода должен использовать Общий Проект (введенный в Xamarin Studio 5 и Visual Studio 2013 Update 2).

Этот скриншот показывает файлы решения, содержащий три прикладных проекта (для Android, iOS и Windows Phone), с Shared проектом, который содержит общие файлы исходного кода C#:

Концепция архитектуры представлена на следующей диаграмме, где каждый проект включает в себя все общие исходные файлы:

share project

Пример

Это кроссплатформенное приложение, которое поддерживает iOS, Android и Windows Phone потребует проект приложения для каждой платформы. Общий код существует в общем проекте.

Решение примера содержит следующие папки и проекты (имена проектов были выбраны для выразительности, ваши проекты не обязаны следовать этим правилам именования):

  • Shared – Общий проект, содержащий код, общий для всех проектов.
  • AppAndroid – Xamarin.Android проект.
  • AppiOS – Xamarin.iOS проект.
  • AppWinPhone – Windows Phone проект.

Таким образом, проекты трех приложений используют один и тот же исходный код (C# файлы в Shared). Любые изменения в общем коде будет использоваться во всех трех проектах.

Преимущества

  • Позволяет совместно использовать код в нескольких проектах..
  • Общий код может быть разветвленным на основе разделения для каждой платформы с помощью директивы компилятора (например, с помощью #if __ANDROID__, как говорилось в документе Создание кросс-платформенных приложений).
  • Проекты приложений могут включать в себя ссылки на специфические для каждой платформы ресурсы, которые может использовать общий код (например, использование Community.CsharpSqlite.WP7 в примере Tasky для Windows Phone).

Недостатки

  • В отличие от большинства других типов проектов, общий проект не имеет «на выходе» assembly-код. Во время компиляции файлы рассматриваются как часть ссылающегося проекта и компилируются в DLL. Если вы хотите делиться своим кодом как DLL, то Portable Class Libraries является гораздо лучшим решением.
  • Операции рефакторинга, которые затрагивают код внутри директивы компилятора «inactive» не будет обновлять код.

Примечания

Это хорошее решение для разработчиков приложений и создание кода, который предназначен только для совместного использования в своих приложениях (и не распространяется среди других разработчиков).

Portable Class Libraries

Portable Class Libraries — здесь более детально

PCL

Преимущества

  • Позволяет совместно использовать код в нескольких проектах.
  • Операции рефакторинга всегда обновлять все затронутые ссылки.

Недостатки

  • Нельзя использовать директивы компилятора.
  • Можно использовать только подмножество .NET Framework, определённое в выбранном профиле (см. Введение к PCL для получения дополнительной информации).

Примечания

Хорошее решение, если вы планируете передать результирующую сборку другим разработчиками.

Резюме

Portable Class Libraries — самый простой способ совместного использования кода на нескольких платформах, однако они имеют некоторые недостатки, в том числе установки PCL поддержки пользовательской конфигурации.

При стратегии совместного использования кода вы можете выбирать платформы, на которые вы ориентируетесь. Выберите метод, который лучше всего подходит для вашего проекта.

Оригинал статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *