Я экспериментирую с большим количеством программного обеспечения с открытым исходным кодом, и я заметил, что изрядное количество приложений серверного типа в мировом потреблении с открытым исходным кодом libevent упрощает основанную на событии обработку, а не порождает несколько потоков для обрабатывания запросов.
Я также делаю большое программирование.NET (это - моя базовая функция задания), и я интересуюсь изучением, как libevent касается модели событий.NET. Являются события в.NET эквивалентом libevent для программ C? Я должен попытаться изучить libevent и попытку использовать его в пользовательских серверных приложениях.NET, или действительно ли использование является стандартной моделью событий.NET в основном то же самое?
События .NET и libevent не эквивалентны, хотя имеют общие абстрактные концепции.
События .NET допускают недетерминированную связь между компонентами среды CLR. В C # компонент - это объект, а события - это члены класса. В других языках, например , таких как F # , объекты не требуются. Событие позволяет потребителям подписываться на уведомления, которые происходят при определенных условиях в источнике - нажата кнопка, загрузка завершена, возникло исключение и т. Д. Некоторые характеристики событий .NET:
libevent обеспечивает недетерминированную асинхронную связь между ОС и потребителем. Это может показаться похожим на события .NET, поскольку они оба инвертируют управление, но механизмы очень разные.
Стоит ли мне попробовать изучить libevent и попытаться использовать его в пользовательском .NET серверные приложения ...?
Если вы делаете это для развлечения, конечно. Если вы делаете это для работы, вероятно, нет.Libevent заявляет о наибольшем приросте производительности в системах * nix. Windows использует другую сетевую парадигму. Разработчики libevent устраняют эти различия в версии 2, но 2.0.5 все еще находится в стадии бета-версии.
Кроме того, .NET предлагает собственные неблокирующие библиотеки ввода-вывода , включая асинхронные сокеты .