Подтвердить что ты не робот

Как реализовать Socket.IO с ASP.Net, IISNode, Node.JS и SQL Server для push-push-уведомлений на основе событий?

Для проекта уведомления хотелось бы вывести уведомления о событиях. Это такие вещи, как логин, изменение профиля и т.д., А также отображение соответствующего клиента. Я хотел бы обсудить некоторые идеи по их объединению и получить рекомендации по наилучшему подходу.

Я заметил здесь, что изменения, внесенные в CouchDB, могут быть обнаружены с помощью потока _changes, подхваченного Node, а также удары процесса выкл. Я хотел бы реализовать что-то вроде этого (я использую SQL Server, но точка входа на этом уровне может оказаться не лучшим решением).

Вместо того, чтобы следовать примеру CouchDB (обнаруживая события на базе базы данных, я думаю, что это просто усложняет ситуацию, так как мы заинтересованы в событиях клиента), я думал, что когда происходит событие, такое как логин пользователя, сообщение отправляется на сервер Node с некоторыми сведениями о событии (запрос RESTful?). Затем это сообщение обрабатывается и передается всем подключенным клиентам; соответствующий клиент отображает уведомление.

Предлагаемая экосистема:

  • .Net 4.0
  • IIS
  • IISNode
  • Socket.IO
  • Node.JS
  • SQL Server 2008

Это будет построено поверх существующего проекта с использованием инфраструктуры .Net(IIS и т.д.). Многие браузеры клиентов не поддерживают веб-сокеты, поэтому использование Socket.IO - хороший вариант (резервная поддержка). Однако из того, что я вижу, Socket.IO по-прежнему поддерживает только длительный опрос через IISNode (что на самом деле не проблема).

Опция должна заключаться в том, чтобы разоблачить конечную точку Socket.IO/ Node для всех клиентов, чтобы уведомления на основе клиента могли быть отправлены через JS на сервер Node, который передает это сообщение. (следует основным примерам chat-server/client/server).

В качестве альтернативы можно использовать конечную точку IIS, но она может поддерживать только длительный опрос (через Socket.IO). Это предложило бы некоторую дополнительную фоновую обработку .Net, но может быть чрезмерно усложнять архитектуру.

Есть ли уведомление о событиях на основе SQL Server для Node?

Каким будет лучший подход?

Если я не получил правильную конфигурацию экосистемы, пожалуйста, уточните.

Спасибо.

4b9b3361

Ответ 1

Я бы порекомендовал вам сначала проверить SignalR, прежде чем рассматривать добавление iisnode/node.js к сочетанию технологий вашего pre существующего приложения ASP.NET.

Что касается веб-сокетов, независимо от того, используете ли вы ASP.NET или node.js(socket.io), вы можете использовать только длительный опрос HTTP для уведомлений с низкой задержкой, поскольку веб-порты не поддерживаются HTTP.SYS/IIS до Windows 8. iisnode в настоящее время не поддерживает websockets (даже в Windows 8), но такая поддержка может быть добавлена ​​позже.

Недавно я провел некоторое исследование относительно доступа MSSQL от node.js. Существует несколько проектов OSS, некоторые из которых используют собственные расширения для платформы, некоторые пытаются реализовать протокол TDS исключительно в JavaScript. Я не знаю о том, что позволит вам получить доступ к функциям SQL Notifications. Однако сама команда MSSQL инвестирует в первый класс MSSQL-драйвера для node.js, поэтому это то, что нужно следить за ходом (https://github.com/tjanczuk/iisnode/issues/139).

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

Ответ 2

Я бы очень рекомендовал использовать Pusher. Это то, что мы используем, и это упрощает реализацию, поскольку это хостинг-решение. Так что подключить его и заставить его работать очень просто. Это не будет стоить дорого, если вы не нажмете сумасшедшее количество сообщений через него в массовом масштабе.