Выбор архитектуры для веб приложения
Приветствую! С Node.js работаю недавно. Нужна помощь в выборе архитектуры для веб приложения.
Суть приложения такова: Приложение обрабатывает входящие подключения webhooks (get запросы) и на основании их делает определенную логику, связанную с работой с БД, вычислениями и.т.п. Например при запросе /node/go_logic_1 скрипт будет выполнять одни действия, а при запросе /node/go_logic_2 - другие. На данный момент это реализовано с помощью express и представляет собой цепочку подобных блоков в коде: app.get('/node/do_logic_1', function(req, res){ //do some logic 1 ); app.get('/node/do_logic_2', function(req, res){ //do some logic 2 ); //... И так далее. Проект большой. Назревает около 300 таких уникальных запросов (урлов) и как-то все оставлять в таком виде для меня кажется ужасом кромешным. Редактировать это потом будет невозможно. Да и запрашивать каждый раз такой большой файл, наверняка тоже проблема. В голове появилась мысль, что можно все это добро вынести как модули и подключать их, в зависимости от того, что находится в запросе. Например, при запросе '/node/do_logic_1' подключаем скрипт do_logic_1.js и так с остальными по аналогии. В таком случае для создания нового модуля необходимо будет лишь создать файл с нужным названием в определенной папке. Также смотрел в сторону "микросервисов". Но почитал множество постов на хабре, где говорят, что это не нужная вещь. В общем, был бы очень благодарен, если услышу ваше мнение по этому поводу. |
Посмотри учебник переводной nodejs для чайников или как-то так. Там как раз в качестве примера разбирается хороший стиль http сервера.
Т.е. проект делится на indexjs, httpserver, router, handlers. В своём серваке (у меня более обширная задача, т.к. есть ещё tcp серв, usb, не только get, но и put) я сделал как в том примере - очень удобно. Под БД делаешь ещё один .js, который прикошачиваешь к handlers. Расширяется потом проект очень легко. |
Цитата:
Спасибо) Ушел читать. |
Угу. Там грамотно всё расписано в плане архитектуры, про асинхронность, правда, маловато (для БД кури промисы). Если нужно только "GET" handlИТЬ, считай готовый шаблон для проекта.
|
Я отчасти для этих целей писал модуль под Koa -- koa-architect. Он еще сыроват, но в целом работать с ним можно :)
|
Часовой пояс GMT +3, время: 05:27. |