Как заметил Марк Симанн: однажды я работал в 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 по электронной почте.