아이리스는 빠르고 간편하면서도 완전한 기능을 갖춘 매우 효율적인 Golang 웹 애플리케이션 프레임워크입니다.
다음 웹 사이트 또는 응용 프로그램 인터페이스를 위한 표현력이 풍부하고 사용하기 쉬운 기반이 제공됩니다.
아이리스의 기능
- HTTP/2 (푸시, 내장 데이터 포함)
- 미들웨어 (Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)
- API 버전 관리
- Model-View-Controller
- 웹소켓
- gRPC
- 자동 HTTPS
- 어플리케이션을 가장 빠르게 온라인으로 만들기 위한 내장 ngrok 지원
- 동적 경로 매개 변수가 있는 고유한 라우터로 :uuid, :string, :int와 같은 표준 유형 및 사용자 정의 라우터 생성 지원
- 압축
- 뷰 엔진 (HTML, Django, Handlebars, Pug/Jade, 등)
- 자체 파일 서버 생성 및 자체 WebDAV 서버 호스팅
- 캐싱
- 로컬라이제이션 (i18n, 사이트맵)
- 세션
- 풍부한 응답 (HTML, 텍스트, Markdown, XML, YAML, 이진, JSON, JSONP, 프로토콜 버퍼, 메시지팩, 내용 협상, 스트림, 서버-전송 이벤트 등)
- 응답 압축 (gzip, deflate, brotli, snappy, s2)
- 풍부한 요청 (URL 쿼리, 헤더, 폼, 텍스트, XML, YAML, 이진, JSON, 유효성 검사, 프로토콜 버퍼, 메시지팩 등)
- 의존성 주입 (MVC, 핸들러, API 라우터)
- 테스트 슈트
데모
package main
// 패키지 가져오기
import "github.com/kataras/iris/v12"
func main() {
// 아이리스 인스턴스 정의
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.69us | 64.15MB | 0.84s |
Gin | Go | 229,665 | 541.96us | 62.86MB | 0.87s |
Chi | Go | 228,072 | 545.78us | 62.61MB | 0.88s |
Echo | Go | 224,491 | 553.84us | 61.70MB | 0.89s |
Martini | Go | 198,166 | 627.46us | 54.47MB | 1.01s |
Kestrel | C# | 163,486 | 766.90us | 47.42MB | 1.23s |
Buffalo | Go | 102,478 | 1.22ms | 28.14MB | 1.95s |
Koa | Javascript | 48,425 | 2.56ms | 15.39MB | 4.14s |
Express | Javascript | 23,622 | 5.25ms | 9.04MB | 8.41s |