Как отправить данные на клиент .NET CF? - PullRequest
5 голосов
/ 07 января 2010

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

Ответы [ 4 ]

3 голосов
/ 07 января 2010

Как заметил Марк Симанн: однажды я работал в POC системы уведомлений клиентов для .NET CF, когда работал в команде Microsoft Dynamics Mobile.

В то время я не нашел каких-либо готовых решений, которые могли бы сделать это, и я не хотел встраивать соединение с Exchange Server, поскольку предполагаемые пользователи не имели учетной записи AD и большинство Certanly не использовал сервер обмена. Так что я был в той же ситуации, что и вы сейчас. Я начал искать возможные решения ...

Я понял, что сервер не может подключиться к клиенту, поскольку его IP-адрес постоянно меняется (переход с 3G на WiFi, потеря соединения и т. Д.). Клиника должна была подключиться к серверу. Кроме того, я обнаружил, что большинство сетей допускают HTTP-соединения, но не всегда настраиваемые TCP-соединения через настраиваемые порты.

Я использовал «Comet» для выполнения длительных http-запросов от клиента (.NET CF) к серверу (IIS) и отправлял уведомления клиенту, используя это соединение. Если клиент получит таймаут до того, как будет получено уведомление, он просто сделает новый запрос.

На стороне сервера я использовал комбинацию AsyncHttpHandler и ожидал потоков, которые проверяли сообщения для подключенных клиентов каждую секунду. Важно использовать AsyncHttpHandler, иначе вы заблокируете сервер IIS.

POC работал хорошо, и это оказалось надежным решением. У этого есть некоторые недостатки: если вы не будете осторожны, вы очень быстро разрядите аккумулятор.

К сожалению, я просто слишком много строк кода, чтобы я мог разместить здесь код, но если вам нравится, вы можете связаться со мной, и я отправлю вам свой POC по электронной почте.

3 голосов
/ 07 января 2010

Когда я работал в команде Microsoft Dynamics Mobile (до января 2009 года), не было другого встроенного способа сделать это на .NET CF, кроме как через почтовый транспорт Exchange Server.

Однако один из моих коллег сделал всплеск, когда мобильный клиент открыл HTTP-соединение со службой и оставил его открытым, в результате чего у службы был открытый канал, по которому он мог перейти.

AFAIK, это в основном то, что делает почтовый транспорт Exchange Server. IIRC, у него все работает нормально, но я напишу ему в твиттере и посмотрю, смогу ли я заставить его присоединиться.

2 голосов
/ 12 августа 2010

Попробуйте проверить WebSync , сервер комет для IIS / .NET. Теперь он получил полную поддержку компактных фреймворков.

0 голосов
/ 07 января 2010

Вот несколько вариантов использования во внутренней сети:

  1. MSQM
  2. TcpListener

Для варианта 1 вам нужно установить еще один компонент инфраструктуры, но вы получите стандартный API и протокол.

Для второго варианта вы должны реализовать свой собственный протокол.

Оба варианта работают только в закрытой среде!

...