Iris - быстрый, простой, но полнофункциональный и высокоэффективный веб-фреймворк на Golang.
Он предоставляет выразительный и простой в использовании фундамент для вашего следующего веб-сайта или интерфейса приложения.
Особенности Iris
- HTTP/2 (push, включая встроенные данные)
- Промежуточное ПО (Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)
- Версионирование API
- Модель-Представление-Контроллер
- Веб-сокеты
- gRPC
- Автоматический HTTPS
- Встроенная поддержка ngrok для размещения вашего приложения онлайн наиболее быстрым способом
- Уникальный маршрутизатор с динамическими параметрами пути, поддерживающий стандартные типы: :uuid, :string, :int, и создание пользовательских маршрутизаторов
- Сжатие
- Движки представления (HTML, Django, Handlebars, Pug/Jade, и т.д.)
- Создание собственного файлового сервера и размещение собственного сервера WebDAV
- Кэширование
- Локализация (i18n, sitemap)
- Сессии
- Богатые ответы (HTML, текст, Markdown, XML, YAML, бинарные данные, JSON, JSONP, Protocol Buffers, MessagePack, согласование содержимого, поток, события, отправляемые сервером, и т.д.)
- Сжатие ответа (gzip, deflate, brotli, snappy, s2)
- Богатые запросы (привязка URL-запроса, заголовков, форм, текста, XML, YAML, бинарных данных, JSON, валидация, Protocol Buffers, MessagePack, и т.д.)
- Внедрение зависимостей (MVC, обработчики, API-маршрутизаторы)
- Набор тестирования
Демо
package main
// Импорт пакета
import "github.com/kataras/iris/v12"
func main() {
// Определение экземпляра iris
app := iris.New()
// Использование промежуточного ПО для сжатия gzip
app.Use(iris.Compression)
// Настройка маршрутизатора
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Привет <strong>%s</strong>!", "Мир")
})
// Слушание порта
app.Listen(":8080")
}
Тестирование производительности
Отправка 200 000 запросов с динамическими параметрами в виде целых чисел, отправка JSON в теле запроса и получение JSON в качестве ответа.
Фреймворк | Язык разработки | Запросов в секунду | Задержка | Пропускная способность | Время завершения |
---|---|---|---|---|---|
Iris | Go | 238 954 | 521,69 мкс | 64,15 МБ | 0,84 с |
Gin | Go | 229 665 | 541,96 мкс | 62,86 МБ | 0,87 с |
Chi | Go | 228 072 | 545,78 мкс | 62,61 МБ | 0,88 с |
Echo | Go | 224 491 | 553,84 мкс | 61,70 МБ | 0,89 с |
Martini | Go | 198 166 | 627,46 мкс | 54,47 МБ | 1,01 с |
Kestrel | C# | 163 486 | 766,90 мкс | 47,42 МБ | 1,23 с |
Buffalo | Go | 102 478 | 1,22 мс | 28,14 МБ | 1,95 с |
Koa | Javascript | 48 425 | 2,56 мс | 15,39 МБ | 4,14 с |
Express | Javascript | 23 622 | 5,25 мс | 9,04 МБ | 8,41 с |