Широко распространено мнение, что в настоящее время существует три основных веб-фреймворка на Haskell: Happstack, Yesod и Snap (в хронологическом порядке).Каждый фреймворк имеет свой собственный веб-сервер.Были попытки на других веб-серверах, но ни один из них, похоже, не сдвинулся с мертвой точки.Happstack планирует заменить веб-серверы в ближайшее время (вероятно, на Warp, который использует Yesod).Таким образом, это оставляет нам два современных основных веб-сервера в Haskell: Snap и Warp (также в хронологическом порядке).
Warp соответствует интерфейсу, определенному в пакете wai, что, по-видимому, является попыткой определить стандартный вебинтерфейс сервера.Тем не менее, WAI используется только одним из текущих основных веб-серверов Haskell, поэтому я просто не понимаю, как можно привести убедительные аргументы в пользу того, что это настоящий стандарт.Предельная выгода, которую вы получаете от того, чтобы быть стандартом, полезна только тогда, когда стандартизированные игроки фактически дифференцированы, а в случае Snap и Warp я не уверен, что это так.Единственное, что я могу придумать, что отличает Warp от Snap, это то, что Warp продемонстрировал лучшую производительность, чем Snap для простого теста понг.Но я никогда не слышал, чтобы кто-то жаловался на то, что Snap слишком медленный, поэтому скорость Warp, похоже, не сильно его отличает.
Более того, WAI появился еще до того, как появились Snap или Warp.Когда вышла Snap, у нас были разные мнения о том, как должен выглядеть интерфейс, что делало WAI неподходящим для нас.WAI также развивался с тех пор, что еще больше подтверждает аргумент, что он был преждевременным.В конце концов, что хорошего в стандарте, если он продолжает изменяться?
Если произойдет взрыв новых веб-серверов Haskell со всеми видами различных функций и инноваций, то я уверен, что появятся общие черты, из которых будет исходить подлиннаяСтандарт может быть разработан.Но до тех пор я считаю выбор веб-сервера довольно незначительным.И Warp, и Snap являются хорошими веб-серверами и не должны играть существенной роли в гораздо большем выборе того, какой фреймворк вы используете.