Мне нужна помощь в выборе между silverlight / silverlight вне браузера / wpf

10

Я на начальной стадии планирования проекта переписывания, и я выбираю между silverlight / silverlight oob / wpf. TL; DR в конце.

Это LOB-приложение, которое обрабатывает календари клиентов / клиентов / встреч. Не слишком сложно. Я самостоятельно исследую эти варианты в другом месте, но я решил спросить. Некоторые грубые начальные требования / предполагаемые проблемы:

Я должен быть в состоянии вызвать exe в системе с аргументами командной строки (sip-телефон).

Делает SL проблемой

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

Я вижу, что это проблема с использованием WPF

Развертывание / обновление программного обеспечения должно быть очень простым . Некоторые пользователи очень нетехнические (см .: 70 лет, впервые за компьютером)

Теперь это не большая проблема с приложением ClickOnce, которое мы заменяем, и у меня есть контроль над машинами, на которых оно используется. Тем не менее, пользователям проще, если им даже не нужно нажимать кнопку «Установить». Я не знаю, как это делается с Silverlight OOB.

Компания планирует усиленное расширение через 12 месяцев, поэтому развертывание оборудования должно быть быстрым / простым. Идея состоит в том, чтобы подключиться к Интернету в новом месте, подключить несколько компьютеров и работать без необходимости в выделенных специалистах по ИТ или настройке сервера.

Делает SL привлекательным

Интеграция с другими сервисами (финансовое программное обеспечение, сервер asterix) не является непосредственной целью, но это конечная цель быть частью системы. Это делается намного проще / эффективнее, если для интеграции с этими вторичными службами настроен отдельный сервис, и ему не нужно передавать все эти данные по проводам.

Делает SL привлекательным

Создание нескольких «версий» - это окно. Я не знаю, каково это поддерживать версию silverlight + silverlight oob (если есть проблемы)

Может сделать WPF лучшим вариантом.

TL; DR: С моей точки зрения, приложение Silverlight имеет смысл для 90% пользователей - остальные 10% не могут его использовать, потому что им нужно запустить exe. Silverlight OOB может быть удачным промежуточным звеном, но в настоящий момент я не знаю, на что похожа модель его исполнения (есть ли еще концепция серверного кода? Если да, то это, возможно, было бы идеально), и я не знаю знать, как развертывание / обновление работает для него.

Стивен Эверс
источник
Почему вы хотите заменить приложение ClickOnce в первую очередь? ClickOnce имеет возможность автоматически проверять и загружать доступное обновление при запуске приложения. Я сделал это, смотрите replayer.codeplex.com
Марсель

Ответы:

6

Ну что ж - интересная проблема. Вы забыли упомянуть, что у вас может быть приложение с полным доверием Silverlight начиная с SL4, поэтому, если вы думаете о WPF, вы можете рассмотреть это вместо этого. Это должно было бы установить (ClickOnce), но вы, кажется, уходите от этого.

Я еще ничего не сделал с OOB, но я уверен, что один и тот же двоичный файл можно использовать как в браузере, так и вне браузера, так как это настройка проекта, а не отдельная цель сборки.

«Включить запуск приложения из браузера»

на вкладке Silverlight проекта Silverlight.

Так что там не было бы отдельной проблемы обслуживания.

Вы можете встроить достаточное количество кода в веб-приложение, в котором размещено приложение Silverlight, и взаимодействовать с помощью служб WCF RIA. Опять же, вам придется использовать .NET 4 и SL 4, чтобы получить версию 1.0 этого. .NET 3.5 и SL 4 поддерживают только бета-версию служб WCF RIA. Это уменьшит а) размер загрузки и б) объем кода, который необходимо выполнить на клиенте, но увеличит сетевой трафик.

На этот счет вы можете разбить свой код Silverlight на несколько сборок и, используя что-то вроде Prism, настроить их для загрузки по требованию. Это означает, что пользователь загружает только те части приложения, которые они фактически используют. Вы можете дополнительно уменьшить количество загруженных файлов, проверив

«Уменьшите размер XAP с помощью кэширования библиотеки приложений»

вариант.

Если у вас есть файл «extmap», который можно использовать с любыми внешними библиотеками (сторонними или .NET), это означает, что они упакованы в zip-файл и загружены отдельно для совместного использования всеми файлами xap в вашем проекте. Это сохраняет размер отдельных файлов xap до минимального размера и гарантирует, что у вас есть только одна копия этих других библиотек на клиентском компьютере.

ChrisF
источник
1
+1: Спасибо за ваш вклад @ChrisF. Хотел бы я знать, что ты IRL, чтобы я мог выбрать твой мозг.
Стивен Эверс
2

Ваш анализ очень хорош.

Единственное, что я хотел бы упомянуть, это то, что не ВСЕ рамки доступны вам в приложении Silverlight. Это ограничение МОЖЕТ склонить ваш выбор в пользу WPF, но вам нужно будет посмотреть, как это ограничение применяется или нет к потребностям вашего приложения.

Вальтер
источник
Приложение в основном грубое, за исключением необходимости вызывать SIP-телефон через его exe + args, поэтому я не думаю, что пропущу ни одну из недостающих частей фреймворка.
Стивен Эверс
2

Просто пара быстрых вещей:

Развертывание и «код на стороне сервера». Приложение Silverlight - это приложение на стороне клиента, простое и понятное. Не позволяйте простому факту, что оно доставляется через браузер, сбить вас с толку - когда вы запускаете SL-приложение в браузере, вы загружаете сборки для этого приложения в виде сжатого пакета, распаковываете их и запускаете с помощью плагина. Silverlight сам по себе не имеет понятия «серверный код» - если вы хотите, чтобы код запускался на удаленном сервере, напишите службу WCF.

Обновление приложения: это распространенный сценарий для приложений OOB, и SL имеет встроенную поддержку. Google вокруг для CheckAndDownloadUpdateAsync.

Изменить: Забыл упомянуть - установка приложения производится изнутри приложения. По умолчанию устанавливаемое приложение SL будет иметь действие контекстного меню для его установки. Однако установка также может быть выполнена программно в ответ на нажатие пользователем кнопки. Состояние установки также может быть определено программно, поэтому я видел, что некоторые приложения SL, предназначенные только для запуска OOB, сначала обнаруживают, установлены ли они. Если это так, запустите приложение. Если нет, просто покажите заставку с кнопкой, которая устанавливает приложение.

nlawalker
источник