2010-10-15 2 views
1

В настоящее время я разрабатываю приложение Silverlight с призмой. Из этого приложения мне нужно отправить команду или нажатия клавиш на клиентское приложение. Каков наилучший способ сделать это?Как связаться с клиентской стороной с помощью silverlight

Вещи я рассматриваю:

Javascript может использовать объект ActiveX для использования DDE. (Ограничения только для IE)

Javascript может взаимодействовать с апплетом java для использования DDE. (Необходимо иметь дело с подписанием апплета соответствующим образом)

Silverlight 4 может получить доступ к COM-объектам, если работает вне браузера. (Я бы хотел, чтобы у вас не получилось обойтись браузером)

Есть ли другие варианты, которые я просматриваю?

ответ

1

В дополнение к другим предложениям, если вы используете что-то вроде Firebreath для разработки своего типа элемента управления ActiveX, о котором вы упомянули выше, вы бесплатно получаете идентичный NPAPI-интерфейс для вашего управления. Это позволит вам создать один элемент управления в собственном (C++) коде, который затем будет работать во всех основных браузерах; и вы могли бы поговорить с этим элементом управления Silverlight через свой мост JavaScript. Конечно, любое приложение, которое зависит от отправки нажатий клавиш другому приложению, будет довольно хрупким, поэтому вам нужно будет разработать свой интерфейс достаточно хорошо, чтобы гарантировать, что что-то не ускользнет от вас, когда другое приложение, которое вы используете контролируя икоту.

+0

Итак ... я немного смущен здесь. Вы можете использовать Firebreath, чтобы обернуть элемент управления ActiveX, чтобы его можно было использовать в любом браузере? –

+0

Не совсем - вы пишете свой контроль, используя фреймворк Firebreath, и когда вы скомпилируете свой элемент управления, он генерирует как ActiveX-интерфейс для IE (с использованием ATL за кадром), так и интерфейс NPAPI для всего остального. Одна и та же DLL поддерживает оба интерфейса, и как только она будет установлена ​​и зарегистрирована, тот же JavaScript будет работать как в IE, так и в Firefox и Chrome. Имеют смысл? Единственный недостаток (такой как это) заключается в том, что Firebreath требует, чтобы вы использовали CMake как свою систему сборки для управления, что немного больно, но, вероятно, стоит того, что вы получаете. –

+0

Хм да, это имеет смысл. Определенно жизнеспособный вариант, +1. Мне нужно решить, лучше ли это, чем создавать Java-апплет. Благодарю. –

0

Это излишество, но если клиентское приложение находится под ваш контроль вы могли бы просто провести небольшой HTTP контейнер и пост на локальный хост: порт из Silverlight :)

0

Попробуйте использовать службу WCF дуплексного

Pushing Data to Silverlight from WCF Duplex Service

+0

Разве это не для взаимодействия с сервером SL, а не для клиента SL Client? –

+0

Это SL для SL или SL до .NET или что? Если клиентское приложение - .NET, вы можете использовать службу двусторонней печати как часть своего клиентского приложения. Это может быть немного тяжело, но он отлично справляется с абстрагированием взаимодействия между двумя клиентами. – Stephan

+1

Теоретически, вы могли бы разместить службу WCF-дуплекса в исполняемом файле, который также находился на клиенте, но я согласен, что это похоже на излишний. Это подчеркивает идею, однако, что есть четыре способа «выйти за пределы песочницы» с помощью Silverlight: (1) Javascript; (2) WCF; (3) Розетки; (4) COM Interop (при запуске OOB). Если SL запущен в браузере, вы можете использовать любой из первых трех методов в некотором роде для связи с другими процессами, запущенными на ящике, - вам просто нужно иметь достаточный контроль над этими процессами, чтобы позволить Silverlight, когда он стучит. –

Смежные вопросы