Мысли об использовании Silverlight в настольных приложениях? - PullRequest
6 голосов
/ 15 декабря 2008

Подводя итог, как мы все знаем,

a) Ожидается, что Silverlight будет размещаться в браузере и работать в изолированной песочнице, чтобы не было проблем с безопасностью

  1. Silverlight не имеет прямого доступа в файловую систему, кроме изолированный склад
  2. нет прямой способ открыть общий диалог такие поля, как File Save in Silverlight (хотя поле Opendialog поддерживается).

b) Silverlight не может получить доступ к локальным ресурсам, таким как принтер

Как можно выйти за рамки песочницы, чтобы я мог разместить приложение Silverlight локально, считывать файлы и при необходимости сохранять их обратно, передавать данные на принтер и т. Д.

Обновление:

Полноценный WPF мне не подходит? Нет. Меня также интересует кроссплатформенное решение - например, вы можете разместить Silverlight в веб-браузере Mono, чтобы вы могли запускать его практически где угодно.

Идея состоит в том, чтобы повторно использовать то же приложение, которое я создаю для веб-приложений, на моем рабочем столе, обеспечивая разделение задач в некоторых областях, таких как постоянство, доступ к ресурсам и т. Д. Сценарии:

1 - Какой-то гаджет-контейнер с доступом к локальным ресурсам. 2 - Настольное медиа приложение Silver Light

Обновление:

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

Ответы [ 3 ]

8 голосов
/ 15 декабря 2008

Два способа, о которых я могу думать, это:

Создание "Оболочки"

Разместите HTML-страницу с помощью Silverlight в настольном приложении Winforms, используя элемент управления веб-браузера, и обменивайтесь сообщениями с помощью HTML DOM. Затем я могу запросить размещенную оболочку для таких вещей, как печать. Подробнее здесь

Mono также имеет элемент управления веб-браузера - основанный на FireFox XULRunner вместо IE - пока не удалось загрузить Silverlight внутри него. Другим вариантом может быть использование Webkit.

Desktop Shell

Встроить веб-сервер

Встроить облегченный веб-сервер в приложение Host и обрабатывать запросы на выполнение таких операций. Вероятно, вы можете определить протокол поверх HTTP для таких вещей, как сохранение в локальной папке, отправка данных на печать и т. Д.

Embedding A Server

3 голосов
/ 15 декабря 2008

Полное приложение WPF не подходит для вашей ситуации?

Как вы, наверное, знаете, Silverlight использует подмножество WPF, поэтому вы можете относительно легко изменить свое приложение.

Приложение wpf будет проще, чем встроенный веб-сервер и т. Д. В вашем приложении.

В обозримом будущем вы не сможете получить доступ к таким ресурсам, как принтер и файлы (кроме изолированного хранилища), как вы знаете, через Silverlight.

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

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

1 голос
/ 15 декабря 2008

Я также пытаюсь повторно использовать кодовую базу как для настольных компьютеров, так и для Silverlight. Есть два варианта, о которых я знаю в дополнение к упомянутым

Если вы прямо ссылаетесь (вместо ссылки на проект) на dll silverlight из обычного проекта, он должен работать. Это позволит вам ссылаться на Silverlight DLL для обоих проектов.

Имеют два файла проекта (один wpf, один silverlight), которые указывают на один и тот же набор файлов. Возможно, вам придется использовать несколько флагов компилятора тут и там, но это должно позволить вам использовать одни и те же файлы для обоих.

...