Вопрос

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

Редактировать:просто чтобы уточнить, я спрашиваю о серверном приложении, которое реализует сетевой протокол.Фреймворки веб-разработки не являются сетевыми серверами в этом смысле.Протоколы могут включать, но не ограничиваются ими:FTP, HTTP, XMPP, SNMP, IMAP и т.д.Хорошие сетевые серверы реализуют своего рода параллелизм, фокусируются на масштабируемости, но при этом обладают хорошей расширяемостью.

Это было полезно?

Решение

nginx (см. также nginx вики) — это HTTP-сервер и почтовый прокси, заслуживший репутацию благодаря масштабируемости и эффективности использования ресурсов.Он использует архитектуру, основанную на событиях (поддерживает epoll, kqueue и т. д.), чтобы поддерживать низкое использование памяти даже при значительных нагрузках.

Другие советы

Подумал, что выкину Апач здесь, чтобы все не ответили на него одновременно.

ДжангоВеб-фреймворк 's - хороший сервер.В этом отношении все серверы веб-приложений очень расширяемы.

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

Также чрезвычайно масштабируемый и производительный.

Одна только функциональность кэширования чего стоит.Я могу дать вам общую ссылку на ASP.NET, но я уверен, что вы с ней достаточно знакомы.

http://www.asp.net/

Для написания сетевых серверов, с которыми мне нравится работать ПОЕ.

Эджабберд — это XMPP-сервер, написанный на Erlang.Собственная передача сообщений языка программирования Erlang прекрасно сочетается с сервером обмена мгновенными сообщениями, что позволяет Ejabberd быть очень модульным, а также демонстрировать высокий уровень параллелизма.

Тот самый Мини -АТС Asterisk это телефонный сервер с открытым исходным кодом, который реализует ряд протоколов VoIP, включая SIP.Он довольно модульный и невероятно настраиваемый, даже использует своего рода собственный язык программирования AEL для описания взаимодействия с диалпланом IVR.

Пристань мне помогло.Он быстрый и хорошо работает под нагрузкой.Конечно, производительность будет зависеть от того, какое приложение вы развернете поверх Jetty.

Я бы порекомендовал прочитать эти книги по ACE:

Они содержат много очень полезной информации о разработке сетевых приложений.

я бы взглянул на ОпенСШ, он хорошо известен своей практически непроницаемостью.В основном это связано с интенсивным процессом проверки группой OpenBSD, но я подозреваю, что это также связано с архитектурой.

Для расширяемости я бы посмотрел немного глубже OpenSSL (основной набор инструментов протокола, используемый для OpenSSH).

Поскольку никто больше об этом не упомянул:ИИС.

Это очень расширяемое приложение для Windows (которое само по себе чрезвычайно расширяемо).

Добавьте ASP и другие компоненты .NET, и вы не сможете получить ничего более универсального.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top