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 с