Стоит ли переделывать сервер nodeJS для использования Connect (в основном для каждой аутентификации)?

Последние 6 месяцев я работал над своим собственным приложением на nodeJS, где я сам все создал с нуля. Мой сервер делает всего пару вещей, так как большая часть работы в моем приложении выполняется во внешнем интерфейсе.

Одна вещь, которую я в настоящее время рассматриваю для реализации, - это система аутентификации пользователя + facebook для приложения. Кажется, что Every-auth — гораздо более надежная структура для этого, чем что-либо еще. Однако для этого вам понадобится Express или Connect.

Таким образом, я рассматриваю возможность переделки своего кода для использования ConnectJS (в основном) для этой цели. Тем не менее, мне очень нравится иметь очень простой сервер, который делает только то, что ему нужно, и ничего сверх этого. Существуют ли какие-либо другие модули для аутентификации, столь же надежные, как Every-auth, которые не требуют подключения, которые кто-нибудь может порекомендовать?

А для тех из вас, кто использует Connect, насколько удобны другие функции, которые он предлагает? Стоит ли сжимать данные, которые будут возвращены сервером? Статический файловый сервер быстрее или отличается от обычного кода nodejs, который делает то же самое?

Я действительно сейчас на грани и был бы признателен за любые мысли от людей, у которых был опыт программирования приложений nodejs как с Connect, так и без него.

Лучший,
Сами

ПОПРАВКА - если каждый запрос, который получает мой сервер, в какой-то момент будет включать подключение к MongoDB с использованием драйвера node-mongodb-native, это вообще что-то меняет? Я немного сбит с толку относительно того, могу ли я использовать код, который я уже написал, как своего рода модуль, который действует как один из элементов промежуточного программного обеспечения, который я могу добавить для подключения. Если это предложение демонстрирует, что у меня есть полное непонимание того, что делает connect, я был бы признателен за любые разъяснения.


person thisissami    schedule 14.11.2011    source источник


Ответы (2)


Connect — это среда промежуточного программного обеспечения. Это означает, что все дело в разделении и реализации стороннего (читай: вашего и всех остальных) промежуточного программного обеспечения. Connect не имеет накладных расходов по сравнению с сервером прямого узла.

Connect и Express оба очень полезны. Я также работал с Everyauth и могу сказать, что это намного проще, чем настраивать все ваши реализации OAuth по отдельности (что я и сделал).

Вот несколько ссылок:

http://howtonode.org/connect-it

http://tjholowaychuk.com/post/664516126/connect-middleware-for-nodejs

Руководство по Express: http://expressjs.com/guide.html.

и аналогичный, но не повторяющийся вопрос о стеке: Что такое Node.js ' Connect, Express и промежуточное ПО?

person Chris Biscardi    schedule 14.11.2011
comment
Спасибо за этот ответ Крис. В этом случае, просто чтобы убедиться, что я понимаю, как это работает, я могу заменить модуль http на модуль подключения, и мой код должен работать идентично? И тогда это просто вопрос добавления дополнительных модулей, прежде чем он попадет в мой код, чтобы добавить больше функциональности? Если это так, то я чувствую себя глупо из-за того, что еще не использовал его. - person thisissami; 14.11.2011
comment
Ну, вы не заменяете модуль http, соединение расширяет сервер http, но да, вы заменяете свой код http кодом соединения, и это просто добавляет некоторые дополнительные функции. - person Chris Biscardi; 15.11.2011
comment
@thisissami Да, верно. Вместо вызова http.createServer(...) вы вызываете connect.createServer(). Объект, возвращаемый функцией connect.createServer(), работает так же, как объект, возвращаемый модулем http, но также имеет дополнительную функцию use(), которая применяет промежуточное ПО к каждому входящему запросу. - person Jared Hanson; 15.11.2011
comment
ха-ха переход был патетически прост. просто пришлось изменить мои 3 разных экземпляра http для подключения и добавить следующий в обратном вызове на сервер. - person thisissami; 15.11.2011

Не зная деталей реализации вашего приложения и его функциональных возможностей, трудно дать точную оценку преимуществ, которые Connect принесет вашему приложению, а также насколько сложно будет осуществить переход.

При этом я настоятельно рекомендую использовать комбинацию Connect/Express при разработке приложений. Вокруг Connect развивается здоровая экосистема промежуточного программного обеспечения, которая позволяет очень легко добавить в приложение необходимые модули, такие как ведение журнала, сжатие и аутентификация. По мере развития вашего приложения и внедрения дополнительных функций наличие гибкой архитектуры позволит ему развиваться более плавно.

Поскольку вы оцениваете системы аутентификации, я также упомяну, что являюсь разработчиком Passport, который является альтернатива Everyauth, которая стремится быть более модульной и ненавязчивой. Passport также построен на основе Connect. Тем не менее, он написан так, чтобы быть расширяемым в зависимости от контекста, в котором он работает (Connect по умолчанию), поэтому должна быть возможность адаптироваться к другим, даже собственным, фреймворкам.

person Jared Hanson    schedule 14.11.2011