2015-05-14 3 views
1

мне интересно, если этот сценарий можно даже:Двусторонняя связь между веб-приложением и настольным приложением

  1. .Net Windows Forms приложений (наш продукт) с парой услуг WCF открытых (самодостаточно, для пример на 'http://localhost:8000/myservice/method1'), работающий в режиме повышенной готовности.
  2. Веб-приложение (от другого производителя) на общедоступном домене, который будет взаимодействовать с нашим приложением в режиме двунаправленной:
    1. веб-приложений на рабочем столе приложения: во время установки нашего приложения мы зарегистрировать собственный протокол 'xxx' (аналогично 'mailto') и установите наше приложение в качестве обработчика для этого протокола. Таким образом, веб-приложение может инициировать действие в нашем настольном приложении со ссылками в форме «href =» xxx: parameters ».
    2. настольное приложение для веб-приложения: веб-приложение будет периодически (каждая секунда, например) опросить наш localhost Услуги WCF через javascript ajax calls.

ли вариант 2,2 возможно? Какую привязку мы должны использовать для служб WCF? Существуют ли проблемы с перекрестными вызовами (от общедоступного домена до локального)?

Редактировать - да, общение не является двусторонним, поскольку в нашем сценарии настольное приложение не может напрямую манипулировать веб-приложением. Опция опроса - это просто идея, как получить состояние от настольного приложения до веб-приложения, поэтому, если есть лучшие альтернативы, я бы очень хотел услышать об этом :)

Есть несколько других альтернатив для связи между веб-сайтом приложение для приложений и настольных приложений (java-плагины, активные x для IE, плагины firefox, встроенный плагин chrome, ...), но они очень хрупки в отношении новых версий браузеров, версий Java, версии Windows ... и вам нужно поддерживать их все. Мы ищем вариант, который будет работать во всех основных браузерах и что производитель, отвечающий за веб-приложение, будет иметь как можно меньше работы.

+0

Является ли веб-приложение от другого производителя размещенным на сервере, которым вы можете управлять? – mageos

+0

@mageos - нет, и мы хотели бы спроектировать систему так, чтобы у другого производителя была как можно меньше дополнительной работы. – sventevit

+0

Какая связь с другим производителем? Это успокоительный API? На основе SOAP? Есть API-интерфейс, который используются обеими сторонами? – mageos

ответ

1

Возможно ли вариант 2.2?

Yes

Какой связывании мы должны использовать для служб WCF?

  1. Для входящих звонков с веб-приложение (HREF ссылки) вы должны подвергать операции службы в качестве конечной точки REST, используя WCF webHttpBinding или что-то вроде Nancy, что намного легче.

  2. Для опроса, как уже упоминалось, вам необходимо разместить другую конечную точку REST.

Двусторонняя связь между веб-приложением и настольным приложением

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

Опция опроса только идея, как получить состояние с рабочего стола приложение для веб-приложения

Строго говоря, опрос возбудитель не веб-приложение само по себе, но браузер клиента через JavaScript. Помимо архитектурных проблем использования клиентского приложения в качестве посредника между настольным компьютером и сервером, в браузере существует очень сложное решение по внедрению cross-origin scripting.

Я предлагаю, чтобы лучшее решение заключалось в том, чтобы вызвать веб-приложение из приложения для рабочего стола при изменении состояния, а затем веб-приложение «уведомило» веб-клиента либо через ajax-опрос (в веб-приложение), либо something like SignalR ,

Возможно, это будет не так много работы для вашего партнера, как если бы им понадобилось разместить новую конечную точку «Status Changed» для вызова, задача опроса ajax, вероятно, будет проще видеть, поскольку они будут опросить свои собственный сервис, а не ваш.

+0

Мы не используем WCF для опции 2.1 (веб-приложение -> настольное приложение), а пользовательский протокол «xxx» (http://blogs.msdn.com/b/ieinternals/archive/2011/07/14/url- протоколы-приложения-протоколы-и-асинхронно-штыревые-протоколы-о-my.aspx). Это хорошо работает. – sventevit

+0

Да, это не настоящая двусторонняя связь, потому что мы не отправляем информацию из настольного приложения в веб-приложение; веб-приложение должно опросить наше настольное приложение для получения новой информации. Я добавил редактирование на свой вопрос. – sventevit

+1

@sventevit Я обновил свой ответ в ответ. –

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