Как создать приложение WPF, которое можно развернуть как XBAP или как собственное приложение Windows с минимальными издержками? XBAP двоично совместимы с Windows-приложениями WPF и работают поверх того же CLR (в отличие от Silverlight). Они все еще отличаются в некоторых отношениях.
С точки зрения развертывания их наибольшее различие заключается в том, что XBAP имеет элемент управления Page в качестве основного контейнера, а приложение Windows - элемент управления Window. Было бы довольно тривиально заставить приложение Windows использовать элемент управления Page, но я чувствую (не стесняйтесь не соглашаться), что использование метода навигации по страницам в приложении Windows довольно неинтуитивно.
Второе основное отличие состоит в том, что XBAP по умолчанию выполняются в частично доверенной среде. Однако это можно обойти, и XBAP могут быть запущены в режиме полного доверия. Режим частичного доверия с XBAP означает, что вы не можете получить доступ, например, к удаленным веб-службам или собственному коду из XBAP напрямую.
Каким будет простой и понятный способ решения следующих проблем с вышеуказанными проблемами?
Требования
- Развертывается обоими способами: как XBAP через http и как автономный исполняемый файл WPF.
- Показывает информацию с удаленного веб-сервера, такого как flickr, или через неуправляемый API.
- Если возможно, методы развертывания должны оставаться верными их платформам. То есть: используйте страницы в XBAP, где они имеют смысл, и диалоговые окна в приложении Windows, где они имеют смысл.
Ограничения
- Платформа оптимизирована. Материал, требуемый XBAP, не должен влиять на клиента Windows и наоборот.
- Параметры развертывания позволяют использовать как можно больше кода. Это помогает в тестировании и обслуживании.
- Запуск XBAP должен быть максимально простым. Предварительные требования к сертификату могут нарушить цель XBAP.
Я понял, что для первого требования требуются два отдельных проекта. Второе ограничение может быть решено при наличии проекта управления пользователем, который содержит весь пользовательский интерфейс и на который ссылаются два проекта развертывания. Веб-служба WCF может обойти ограничения XBAP.
При использовании решения, аналогичного приведенным выше строкам, первое ограничение потребует некоторой работы, поскольку клиент Windows может обойтись без службы WCF, поскольку он уже работает в режиме полного доверия. Также третьему требованию потребовался бы некоторый специфичный для развертывания код, поэтому весь код пользовательского интерфейса не может быть в проекте управления пользователями.
Я хотел бы знать, какие решения могут быть использованы для решения этих проблем. Не стесняйтесь игнорировать частичное решение. Это в основном, чтобы объяснить суть и предотвратить комментарии «Мысль об этом уже». Поэтому, чтобы уточнить, меня интересуют все решения этой проблемы, а не только те, которые соответствуют частичному решению.
Причиной интереса к этому является то, что решение означало бы, что нет необходимости размышлять между Windows-приложением WPF и XBAP, поскольку оба они могут быть созданы без особых усилий, и клиент может выбрать тот, который им подходит.