Есть ли какие-либо плюсы для использования профиля PCL 158 над 78 для Xamarin и MvvmCross?
Я работаю над кросс-платформенным приложением Xamarin для таргетинга на iOS и Android, используя превосходную инфраструктуру MvvmCross от Stuart Lodge.
Недавно Microsoft выпустила новые версии своих пакетов BCL для переносных классов библиотеки, а Стюарт описывает, как настроить проект с помощью http://slodge.blogspot.com.au/2013/11/quick-run-through-using-pcls-in.html.
При использовании профиля PCL 158 необходимо добавить пакет асинхронного доступа BCL и выполнить некоторую настройку, чтобы проект iOS работал.
При использовании профиля PCL 78 это, похоже, работает автоматически, без необходимости в пакетах BCL.
Зачем использовать профиль 158 над профилем 78?
Ответы
Ответ 1
Profile158 поддерживает больше платформ. В частности, он может работать на Silverlight 5, где Profile78 не может. Кроме того, Profile158 использует "старые" API-интерфейсы отражения, поэтому, если у вас есть существующий код, который использует отражение, вероятно, будет проще переносить на Profile158.
При прочих равных условиях я бы рекомендовал использовать Profile78, если у вас нет причин. Он должен работать на Xamarin, если не сообщать об этом как об ошибке.:)
Ответ 2
В дополнение к комментарию Даниэля Плейста в профиле 78 отсутствует несколько типов
- System.Threading.ThreadPool
- System.Threading.Timer
Оба варианта могут быть обходными, создав плагин с конкретной реализацией для каждой платформы или ссылаясь на более раннюю структуру, которая имеет эти и обертывает эти типы, см. timer-in-portable-library
В дополнение к этому, microsoft выпустила мощный набор: Immutable-Collection,
который поддерживает PCL, но не поддерживается в silverlight и поэтому не поддерживается в профиле 158, но поддерживается в профиле 78.