Определение понятий PCL и Shared project

Исходный код в проектах Xamarin можно поделить на две части: Общий код (для всех платформ, например, описание доменной модели и реализация бизнес логики.) и Код специфичный для конкретной ОС (например, работа с файловой системой, графическим интерфейсом и т.д. Для каждой конкретной ОС создается отдельный проект приложения, исходный код которого будет компилироваться под указанную ОС).

Для вынесения общего кода в отдельный проект, который затем можно было бы использовать в приложениях, которые компилируются под iOS, Android и Windows Phone, Xamarin предлагает две опции: Shared Projects (это тип библиотеки, который при помощи директив компилятора #if позволяет в исходном коде указывать, для какой платформы должен компилироваться код) и Portable Class Libraries (библиотека, которая дает возможность выполнять специфичный для платформы код при помощи Inversion of Control (IoC). Классам, определенным в этой библиотеке передаются интерфейсы, реализация которых зависит от платформы).

Shared Projects Преимущества:

● Позволяет использовать код, написанный в общем проекте, в любых других проектах.

● Код, специфичный для ОС, просто помечается директивами #if.

● Приложения для конкретной ОС ссылаются на общий проект.

Недостатки:

● Общий проект не компилируется в отдельную сборку, он компилируется как часть приложения, которое на него ссылается. Если необходимо, чтобы общий код компилировался в отдельную сборку, нужно использовать подход Portable Class Libraries.

● Сложно делать рефакторинг участков кода, которые содержат в себе директивы компилятора для разных ОС. Необходима компиляция под разные платформы для проверки кода.

Portable Class Libraries Преимущества:

● Позволяет использовать код, написанный в общем проекте, в любых других проектах.

● Рефакторинг делать проще, поскольку изменения кода в Protable library можно проверить одной компиляцией.

● Этот подход можно использовать для сборки исполняемого файла с целью распространения другим разработчикам.

Недостатки:

● Невозможно использовать директивы компилятора для включения кода, специфичного для конкретной ОС.

● Только ограниченная часть.Net Framework доступна для включения в проект.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: