#asp.net-mvc #node.js #socket.io
#asp.net-mvc #node.js #socket.io
Вопрос:
У меня есть существующий сложный веб-сайт, созданный с использованием ASP.NET MVC, включая серверную часть базы данных, уровень данных, а также уровень веб-интерфейса. Перестроить этот веб-сайт на другой язык невозможно.
В некоторых представлениях (на стороне клиента) есть некоторые элементы пользовательского интерфейса, которые выиграли бы от интерактивной работы в реальном времени, включающей как push, так и pull, поэтому вместо того, чтобы внедрять какой-либо пользовательский сервер long polling или websocket в asp.net Я стремлюсь использовать node.js для Windows и Socket.io .
Моя проблема в том, что мне нужна двусторонняя связь между обоими приложениями. Каждый пользователь должен иметь возможность получать данные только после авторизации на ASP.NET веб-сайт, поэтому для этого мне сначала нужна связь. Во-вторых, как только определенные события происходят на ASP.NET веб-сайт Я хочу немедленно отправить эти данные на сервер узла, чтобы они транслировались конкретным пользователям или группам пользователей. В-третьих, я хотел бы, чтобы любые данные отправлялись на node.js сервер, который будет передан на ASP.NET веб-сайт для обработки, поскольку именно на нем лежит вся наша бизнес-логика. Единственная причина добавления Node.js заключается в том, чтобы иметь возможность передавать данные непосредственно клиенту, я не хочу встраивать в это какую-либо бизнес-логику (или как можно меньше).
Я хотел бы знать, какой самый быстрый метод двусторонней push-связи между узлами.Js и ASP.NET . Единственный хороший вариант, о котором я пока знаю, — это создать специальный прослушиватель на определенном порту на node.js сервер и подключение к нему, но мне было интересно, есть ли более элегантный или эффективный метод? Я также знаю, что вы могли бы использовать промежуточную базу данных, но, конечно, это должно быть опрошено и было бы менее эффективным? Оба сервера будут запущены на одном сервере в рамках проекта Visual Studio.
Большое спасибо за любую помощь, которую вы можете предоставить.
Комментарии:
1. Для новичков в этом вопросе есть библиотека под названием EdgeJS , которая является альтернативой предлагаемым решениям. Лучше всего то, что это происходит в обоих направлениях — вы можете иметь. СЕТЬ или узел как управляющий процесс.
Ответ №1:
Я не ASP.NET эксперт, но я думаю, что есть несколько способов добиться этого:
1) Как вы сказали, вы могли бы заставить узел прослушивать данные на определенном порту, а затем реагировать на основе полученных данных (TCP)
2) Вы можете отправлять запросы POST на Node.js (HTTP), а также отправка ключа аутентификации в процессе для обеспечения дополнительной безопасности. Как и на 1) Узел будет реагировать на отправляемые вами данные.
3) Используйте что-то вроде Redis для pub-sub, отправляйте сообщения из ASP.NET (pub) и получить их на Node.js часть (подраздел). Это еще лучше, если вы хотите масштабировать свое приложение на нескольких компьютерах и т.д.
Ответ №2:
Единственный хороший вариант, о котором я пока знаю, — это создать специальный прослушиватель на определенном порту на node.js сервер и подключение к нему, но мне было интересно, есть ли более элегантный или эффективный метод?
Вы можете попробовать взглянуть на модель redis pub / sub, где ASP.NET Приложение MVC и node.js будет осуществляться обмен данными по отдельным каналам для достижения полнодуплексной связи. Или вы также можете попробовать использовать уведомления об изменении CouchDB.
Я также знаю, что вы могли бы использовать промежуточную базу данных, но, конечно, это должно быть опрошено и было бы менее эффективным?
Прежние методы не требуют от вас опроса на предмет изменений, но вместо этого они уведомят вас, когда изменения произойдут или поступит сообщение канала.