Как общаться между Silverlight и настольным приложением?
У меня есть приложение Silverlight 5 в браузере. Нужно заставить его работать со сканерами. У меня есть контроль над приложением SL5, и я могу разработать настольное приложение (.NET) для выполнения сканирования.
Как я могу заставить приложение SL "общаться" с настольным приложением? В идеале я вижу это следующим образом:
- "Управление документами" работает так же, как в SL5, когда вы просто загружаете / скачиваете документы.
- Когда пользователь хочет сканировать - SL5 запускает некоторый процесс (?), Который вызывает открытие приложения на рабочем столе.
- Если на рабочем столе нет приложения - оно перейдет на веб-страницу с инструкциями и загрузкой.
- Когда откроется настольное приложение - приложение SL будет передавать параметры, настройки и т. Д.
- Когда документ отсканирован - настольное приложение передаст информацию обратно в приложение SL
Есть ли способ заставить SL/WPF общаться друг с другом? Как?
2 ответа
Я реализовал сканирование в приложении Silverlight раньше. Это включало создание элемента управления activex / dll и размещение его рядом с приложением silverlight на странице размещения.aspx. Сам элемент управления был полностью скрыт, я просто использовал его методы для доступа к сканеру и работы с локальной файловой системой. Теперь я должен был сделать этот сайт надежным, а не разрешить элементу управления доступ к клиентскому компьютеру. тогда вы можете использовать javascript в качестве моста между кодом Silverlight и вашим контролем сканирования. Чтобы передать изображение обратно в Silverlight, я просто преобразовал отсканированное изображение в строку base64 и передал его обратно в javascript и далее в код silverlight, который затем в конечном итоге передал его обратно на сервер и в хранилище изображений.
Можно ли "увидеть" сканер с сервера приложений? Я успешно распечатал документы, вызвав службу WCF, размещенную на том же сайте, что и мое приложение Silverlight, и заставив ее отправить документ. Вам нужно управлять таблицей, связывающей пользователей с устройствами. Это может означать, что вам вообще не нужно настольное приложение, но вы можете добавить эту функциональность в ваше приложение Silverlight. Очевидно, что это не идеально с точки зрения производительности, если вы передаете большие изображения вокруг или у вас много пользователей. Однако на сервере у вас есть все возможности.net для работы, что делает все довольно просто.
Таким образом, по сути пользовательский интерфейс вашего настольного приложения находится в Silverlight, и кишки вернулись на сервер.
Если вы найдете прямой способ сделать это, я был бы рад услышать об этом.