WCF - Compact Framework - получение данных с мобильного клиента - PullRequest
1 голос
/ 19 мая 2010

Я хочу передать сериализованные объекты XML с сервера на клиент и наоборот. Теперь (вероятно) легко вызывать методы из мобильного клиента (компактная структура) с использованием WCF, но есть ли способ, чтобы сервер мог вызывать методы на стороне клиента или какой-либо другой способ извлечения данных из клиента? Я знаю, что контракты обратного вызова не доступны в компактной структуре, как вы можете видеть здесь: http://blogs.msdn.com/andrewarnottms/archive/2007/09/13/calling-wcf-services-from-netcf-3-5-using-compact-wcf-and-netcfsvcutil-exe.aspx

Первоначально я думал о программировании сокетов и разработке этого самостоятельно, затем кто-то здесь упомянул WCF. Но кажется, что WCF будет работать только в не мобильной среде, так как мне нужны обратные вызовы.

Кто-нибудь может мне помочь с этим? Можно ли развить двустороннюю связь с настольным сервером и несколькими мобильными клиентами с помощью WCF, или мне придется заниматься программированием сокетов?

Спасибо за любой совет или любую помощь!

Ответы [ 2 ]

1 голос
/ 20 мая 2010

в ctacke

Спасибо за вашу помощь. Я на самом деле наткнулся на ваш веб-сервер Padran раньше. Хавент действительно проверил это еще. Но я определенно сделаю это позже. В любом случае, решение с сокетами в данный момент выглядит не так уж плохо. Тем временем я решил, что довольно просто отправить данные от нескольких клиентов на «сервер сокетов». Если мне удастся как-то управлять этими соединениями, я смогу отправить данные обратно клиентам. И тогда мне нужно было бы придумать какой-нибудь протокол, который обрабатывает данные или команды, которые я посылаю по сети ... Я думаю, самой сложной частью было бы составить такой протокол, так как я не имею понятия об этом банкомате. ...

0 голосов
/ 20 мая 2010

Даже если вы идете в сокеты, это может быть немного сложно из-за маршрутизации, фильтрации несущих и трансляций NAT (вы не упомянули реальную топологию сети). По этой причине большинству мобильных приложений приходится опрашивать сервер, даже если это парадигма «push» (например, механизм push в Exchange, когда клиент фактически опрашивает).

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

EDIT

Теперь, когда мы знаем немного больше о вашей топологии из вашего комментария, я могу вас немного больше направить. К сожалению, Microsoft не упростила для устройств Windwos CE размещение служб (WCF или иное). Теоретически, существует необходимая инфраструктура для создания собственного канала WCF и фактического размещения службы, но это не тривиальная задача. Я изучил это довольно давно и подумал, что это была пара месяцев работы, и это было бы с помощью кого-то в Редмонде, который знал, как работает существующий канал Exchange.

Лично я бы выбрал хостинг веб-службы на основе REST с использованием нашего веб-сервера Padarn , потому что это легко сделать, и я сделал это для целого ряда клиентов. Я понимаю, что предлагать Padarn в качестве решения немного эгоистично, но единственная причина, по которой я внедрил пользовательские IHttpHandlers в Padarn, заключалась в том, что я не смог найти ничего другого, что действительно обеспечило бы простой способ для устройства CE разместить свое собственное услуг, и это проблема, для которой нам часто приходится предлагать решение.

Другими вариантами могут быть такие вещи, как проприетарное решение для сокетов, размещение FTP-сервера на устройстве, использование (отвратительного, IMO) HTTP-сервера, предоставляемого MS, с ISAPI, Telnet или чем-то в этом роде. Все они кажутся хаком, большой работой или обоими.

...