본문 바로가기
Dart/Dart Server

[중급] Dart 서버 프레임워크 이해하기/대표적인 Dart 서버 프레임워크 소개 (Aqueduct, Shelf )

by Maccrey Coding 2024. 9. 9.
반응형

 

Dart는 주로 모바일 애플리케이션 개발에 많이 사용되지만, 서버 개발에도 적합한 프레임워크들이 존재합니다.

서버 프레임워크는 웹 서버를 구축하고, API를 제공하며, 클라이언트와의 상호작용을 처리하는 데 필요한 도구들을 제공합니다.

이번 포스트에서는 대표적인 Dart 서버 프레임워크인 Aqueduct와 Shelf에 대해 초보자도 쉽게 이해할 수 있도록 설명하겠습니다.

서버 프레임워크란 무엇인가요?

서버 프레임워크는 웹 서버나 애플리케이션 서버를 개발하는 데 도움을 주는 소프트웨어 라이브러리입니다. 서버 프레임워크는 다음과 같은 기능을 제공합니다.

  • HTTP 요청 처리: 클라이언트로부터의 요청을 받고, 적절한 응답을 반환합니다.
  • 라우팅: URL에 따라 요청을 적절한 처리 함수나 핸들러로 전달합니다.
  • 미들웨어: 요청과 응답을 가로채어 전처리하거나 후처리합니다.
  • 데이터베이스 연동: 데이터베이스와의 연결 및 쿼리 처리를 지원합니다.

Aqueduct

Aqueduct 소개

Aqueduct는 Dart로 작성된 서버 사이드 프레임워크로, 웹 서버와 RESTful API를 구축하는 데 유용합니다.

Aqueduct는 많은 기능을 내장하고 있으며, 웹 애플리케이션 개발을 위해 필요한 다양한 도구를 제공합니다.

주요 기능

  1. 라우팅: URL 경로에 따라 요청을 적절한 핸들러로 전달합니다.
  2. 미들웨어: 요청과 응답을 처리하는 중간 단계에서 작업을 수행할 수 있습니다.
  3. ORM (Object-Relational Mapping): 데이터베이스와의 연동을 쉽게 할 수 있도록 돕는 ORM 기능을 제공합니다.
  4. 인증 및 권한 관리: 사용자 인증과 권한 관리를 지원합니다.

예제 코드

Aqueduct를 사용하여 간단한 RESTful API를 만드는 예제입니다.

import 'package:aqueduct/aqueduct.dart';

class MyChannel extends ApplicationChannel {
  @override
  Future prepare() async {
    // 준비 작업
  }

  @override
  Controller get entryPoint {
    final router = Router();
    
    router.route('/hello').linkFunction((request) async {
      return Response.ok('Hello, Aqueduct!');
    });
    
    return router;
  }
}

void main() {
  final app = Application<MyChannel>()
      ..options.port = 8888;
  app.startOnCurrentIsolate();
}

Shelf

Shelf 소개

Shelf는 Dart의 또 다른 서버 사이드 프레임워크로, 간단하고 모듈화된 웹 서버를 만드는 데 중점을 둡니다. Shelf는 기본적인 기능만을 제공하며, 필요한 기능을 플러그인 형태로 추가하여 사용합니다.

주요 기능

  1. 미들웨어: 요청과 응답을 처리하는 다양한 미들웨어를 제공합니다.
  2. 라우팅: 간단한 라우팅 기능을 제공합니다.
  3. 호환성: Dart의 다른 라이브러리와 쉽게 통합할 수 있습니다.

예제 코드

Shelf를 사용하여 간단한 웹 서버를 만드는 예제입니다.

import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;

void main() async {
  final handler = const Pipeline()
      .addMiddleware(logRequests())
      .addHandler((Request request) {
        return Response.ok('Hello, Shelf!');
      });

  final server = await io.serve(handler, 'localhost', 8080);
  print('Server running on http://${server.address.host}:${server.port}');
}

Aqueduct와 Shelf 비교

  • Aqueduct: 기능이 풍부하고, ORM, 인증 및 권한 관리 등의 기능을 내장하고 있습니다. 복잡한 웹 애플리케이션 개발에 적합합니다.
  • Shelf: 간단하고 모듈화된 구조를 가지고 있으며, 기본적인 웹 서버를 쉽게 구축할 수 있습니다. 필요한 기능을 플러그인으로 추가하여 사용합니다.

Dart의 서버 프레임워크인 Aqueduct와 Shelf는 각각의 장점과 용도에 맞게 선택하여 사용할 수 있습니다.

Aqueduct는 풍부한 기능과 확장성을 제공하여 복잡한 웹 애플리케이션에 적합하며, Shelf는 간단하고 모듈화된 구조를 통해 기본적인 웹 서버를 신속하게 구축할 수 있게 도와줍니다.

필요에 따라 적절한 프레임워크를 선택하여 효율적인 서버 개발을 할 수 있습니다.

 

이 블로그 포스트가 Dart의 서버 프레임워크에 대한 이해를 돕는 데 도움이 되길 바랍니다!

 

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

반응형