# Iris — Fast Full-Featured Web Framework for Go > Iris is a high-performance Go web framework with MVC support, WebSocket handling, dependency injection, and a rich middleware ecosystem. ## Install Save as a script file and run: # Iris — Fast Full-Featured Web Framework for Go ## Quick Use ```bash go get github.com/kataras/iris/v12@latest ``` ```go package main import "github.com/kataras/iris/v12" func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { ctx.JSON(iris.Map{"message": "hello"}) }) app.Listen(":8080") } ``` ## Introduction Iris is a Go web framework focused on high performance and developer productivity. It provides an expressive API for routing, middleware, MVC patterns, WebSocket communication, and dependency injection, all while maintaining compatibility with the standard net/http library. ## What Iris Does - Routes HTTP requests using a radix-tree-based router with path and query parameters - Supports MVC architecture with controllers, models, and view templates - Handles real-time communication through built-in WebSocket and Server-Sent Events - Provides dependency injection for controllers and route handlers - Renders responses in JSON, JSONP, XML, Markdown, and multiple template engines ## Architecture Overview Iris builds on net/http and wraps it with a high-performance radix-tree router that supports parameterized, wildcard, and grouped routes. The MVC layer maps struct methods to HTTP verbs automatically. Middleware chains execute before and after handlers. Sessions, internationalization (i18n), and view rendering are pluggable modules that register with the application at startup. ## Self-Hosting & Configuration - Install with `go get github.com/kataras/iris/v12@latest` - Configure via YAML, TOML, or programmatic options passed to `iris.New()` - Enable gzip compression with `app.Use(iris.Compression)` - Serve static files with `app.HandleDir("/static", "./assets")` - Deploy behind Nginx or directly with built-in graceful shutdown support ## Key Features - Radix-tree router delivers sub-microsecond routing decisions - Built-in i18n supports localized applications with plural forms - MVC layer auto-binds struct methods to HTTP verbs and injects dependencies - WebSocket module supports custom events, rooms, and broadcasting - Versioned API routing groups endpoints under version prefixes ## Comparison with Similar Tools - **Gin** — Simpler and lighter; Iris offers more built-in modules (MVC, WebSocket, i18n) - **Echo** — Similar performance; Iris has a richer feature set and MVC support - **Fiber** — Built on fasthttp for raw speed; Iris uses net/http for broader compatibility - **Beego** — Also batteries-included; Iris is lighter with more flexible dependency injection - **Chi** — Minimal idiomatic router; Iris adds views, sessions, WebSocket on top ## FAQ **Q: Is Iris production-ready?** A: Yes. Iris is used in production by companies across various industries and has stable releases. **Q: How does Iris compare to Gin in benchmarks?** A: Both are very fast. Iris and Gin trade places depending on the benchmark; real-world differences are negligible for most applications. **Q: Can I use standard net/http handlers with Iris?** A: Yes. Iris provides adapters to wrap standard http.Handler and http.HandlerFunc. **Q: Does Iris support gRPC?** A: Iris focuses on HTTP/REST and WebSocket. For gRPC, you would run a separate gRPC server alongside Iris. ## Sources - https://github.com/kataras/iris - https://www.iris-go.com --- Source: https://tokrepo.com/en/workflows/asset-9ca5bc79 Author: Script Depot