Как структурировать «переворачиваемое» приложение?

Насколько осуществимо (и некоторые рекомендации) создать приложение WPF(Silverlight) таким образом, чтобы его можно было переключать туда и обратно из Интернета на рабочий стол?

Может быть, какой-то контекст в порядке.

Я одинокий разработчик в некоммерческой организации. Я разрабатываю только собственные приложения, которые имеют очень длительный жизненный цикл с постоянными модификациями и изменениями в бизнес-правилах или требованиях. Например, мой первый проект здесь заключался в преобразовании существующего приложения ASP.net(2.0) в приложение winform. для обеспечения автономного использования в полевых условиях.

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

Недавно я познакомился с Silverlight 3 и миром XAML в Twin Cities Code Camp, и один из докладчиков взаимозаменяемо использовал некоторый код пользовательского интерфейса из Silverlight в WPF.

Теперь, сразу же, я знаю, что Silverlight является подмножеством и не является полностью взаимозаменяемым. Тем не менее, это заставило меня задуматься. Если бы я использовал WPF и переписал наше основное приложение из winform, это фактически позволило бы мне использовать XBAP и позволить моему приложению, с небольшими изменениями, работать в Интернете и/или на рабочем столе с помощью идентичный пользовательский интерфейс и бизнес-уровень?

  • Какие соображения мне необходимо принять во внимание, чтобы обеспечить такую ​​гибкость?
  • Любые источники руководства, которые можно предложить?

В качестве примечания: 75 % всех наших приложений в той или иной форме являются вариациями приложений CRUD с центральным SQL-сервером в качестве хранилища данных.

Я нашел следующую статью, которая также помогла запустить колеса: ЗДЕСЬ


Редактировать

Я очень ценю ответы, и я определенно буду более подробно изучать функциональность Silverlight Out Of Browser.

Мой первоначальный вопрос заключался в том, как я могу сделать свой пользовательский интерфейс максимально «переворачиваемым». Я понимаю, что вне браузера МОЖЕТ разрешить универсальное приложение, но помимо этого использование XAML определенным образом позволит мне повторно использовать идентичный пользовательский интерфейс для веб-приложений и приложений для настольных ПК?

По касательной; Кто-нибудь может предложить что-нибудь по Silverlight и какой-нибудь репликации?


person Refracted Paladin    schedule 05.11.2009    source источник


Ответы (3)


Похоже, что лучшим вариантом для вас будет разработка приложений в Silverlight и использование функции Out Of Browser (OOB). Функция OOB позволяет установить приложение Silverlight на рабочий стол, чтобы оно могло работать в автономном режиме. Вы можете использовать службы RIA .NET, которые включают шаблон бизнес-приложения, позволяющий очень быстро создавать приложения типа CRUD.

Для этого подхода вам потребуется слой веб-сервисов перед вашими базами данных sql. Тем не менее, это должно быть там, несмотря ни на что.

Для данных в автономном режиме вы можете использовать Изолированное хранилище (как упомянул Нейт в комментариях). Вот несколько ссылок по этой теме:

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

person Bryant    schedule 05.11.2009
comment
На данный момент, насколько надежны данные в автономном режиме? Версия winforms использует SQLExpress, установленный на каждой машине, и использует репликацию слиянием для синхронизации двух баз данных, что я теперь признаю серьезным излишеством. Насколько постоянным является хранилище? т. е. выключение системы - person Refracted Paladin; 05.11.2009
comment
Вы можете использовать изолированное хранилище. Он должен сохраняться после перезагрузки и т. д. - person Nate; 05.11.2009

Вы действительно должны взглянуть на приложения Silverlight вне браузера. См. эту запись в блоге: http://wildermuth.com/2009/03/18/Enabling_Out-of-Browser_Support_in_Silverlight_3

Похоже, это может быть именно то, что вы ищете.

Примечание. Приложение Silverlight вне браузера по-прежнему полностью изолировано, как и приложение Silverlight в браузере, в отличие от приложения WPF, которое полностью доверяет и имеет полный доступ к компьютеру пользователя. Кроме того, приложения Silverlight вне браузера поддерживают работу в автономном режиме и предоставляют API для определения доступности сети.

person KeithMahoney    schedule 05.11.2009
comment
Silverlight OOB — это именно то, что вам нужно. - person Nate; 05.11.2009
comment
На самом деле, это меня взволновало, но, пожалуйста, посмотрите мой комментарий к посту Брайанта. - person Refracted Paladin; 05.11.2009
comment
Вы можете использовать изолированное хранилище для сохранения данных в автономном режиме. Это хранилище данных является надежным и никогда не будет автоматически очищаться. Однако пользователь может удалить данные из изолированной области хранения, но до тех пор, пока он этого не сделает, данные должны быть в безопасности. - person KeithMahoney; 05.11.2009

Приложение Silverlight, иногда подключенное к сети, писать будет непросто. Все, что у вас есть для надежного хранения, — это изолированное хранилище.

То же самое с XBAP.

Вам нужна кроссплатформенная поддержка для ваших приложений?

Почему бы просто не сделать приложение ClickOnce WPF и настроить его так, чтобы оно могло переключаться между активным подключением к сервисному уровню и отключенным режимом?

Многоцелевой WPF и SL можно сделать, но это непросто. Ознакомьтесь с проектом Prism, который включает руководство и надстройку VS для поддержки множественного таргетинга.

person Bryan Batchelder    schedule 05.11.2009