programing

루멘과 라라벨의 차이점과 유사점

procenter 2022. 9. 18. 21:07
반응형

루멘과 라라벨의 차이점과 유사점

설명서를 읽었는데 Lumen은 기능이 적은 Laravel인 것 같습니다.내가 뭔가 놓친 게 틀림없어.라라벨과 루멘의 성분과 특징을 비교한 표를 찾고 있습니다.차이점을 아는 사람 있나요?

갱신(5.2)

루멘 (5.2) 마이크로프레임워크 스테이트리스 API
문서에는 다음과 같이 기술되어 있습니다.

Lumen 5.2는 Lumen을 슬림화하는 방향으로 전환하여 스테이트리스 JSON API를 제공하는 데만 초점을 맞춥니다.따라서 세션과 뷰는 프레임워크에 포함되지 않습니다.이러한 기능에 액세스 할 필요가 있는 경우는, 완전한 Larabel 프레임워크를 사용할 필요가 있습니다.


원본 답변(<= 5.1)

루멘은 스피드를 중시한다.Laravel보다 빠르고 초당 더 많은 요청을 처리할 수 있습니다.

Larabel은 많은 컴포넌트(서드파티제 및 Larabels 자체 컴포넌트)를 결합하는 프레임워크입니다.현재 Lumen은 동일한 컴포넌트를 많이 사용하고 있지만 부트스트래핑 프로세스는 최소한으로 억제하고 있습니다."다른 접착제"라고 할 수 있습니다.성분(따라서 많은 기능)은 거의 동일합니다.

성능 향상은 구성 측면에서 프레임워크의 유연성을 일부 배제하고 기본 부팅 프로세스를 변경함으로써 달성됩니다.

게다가 디폴트로 무효가 되어 있는 기능이 많아지기 때문에, 사용하기 전에 활성화 할 필요가 있습니다.예를 들어 다음과 같습니다.전면(예:DB::table())
이 .bootstrap/app.php유효하게 하려면 , 다음의 순서를 실행합니다.

// $app->withFacades();

Dotenv 환경 파일 및 Alutive도 마찬가지입니다.

루멘은 symfonys 라우터 대신 nikic/FastRoute를 사용합니다.이는 성능이 훨씬 향상되고 마이크로프레임워크에 큰 힘이 되기 때문입니다.

그것 말고는 거의 모든 것이 라라벨에서와 똑같다.

Lumen에 대한 좋은 읽을거리

Lumen은 Larabel을 대체하는 것이 아니라 마이크로 서비스 및 API용으로 설계된 보다 전문화된(및 제거된) 프레임워크입니다.HTTP 세션이나 쿠키 등의 API에 불필요한 기능을 배제하고 설정 옵션의 수도 제한했습니다.Lumen은 개봉 즉시 속도를 위해 Larabel의 유연성을 희생했습니다.

그러나 Lumen에 Laravel 컴포넌트를 추가하여 확장할 수 있으므로 마이크로 서비스나 API뿐만 아니라 다른 용도로도 사용할 수 있습니다.그러나 Lumen을 웹사이트로 확장하는 것이 목표라면 Laravel을 사용하는 것이 좋습니다.

또한 다른 사용 사례도 있습니다.루멘과 라라벨은 함께 일해야 한다.API 및 서비스가 자주 호출되는 경우 Lumen을 사용합니다.사용자용 어플리케이션의 경우 Larabel을 사용합니다.


이 답변은 Lumen과 Laravel의 차이를 설명하는 블로그 투고에서 인용한 것입니다.

Matt Stauffer의 인용문

Lumen은 Laravel과 같은 기초와 많은 성분을 가지고 있습니다.그러나 Lumen은 마이크로 서비스용으로 설계되어 있어 사용자용 어플리케이션에는 적합하지 않습니다(다만, 모든 용도로 사용할 수 있습니다).따라서 부트스트랩이나 Elixir와 같은 프런트엔드의 니치, 인증 부트스트랩 및 세션은 즉시 활성화되지 않으며 부트스트랩 파일의 확장 및 변경에 대한 유연성이 떨어집니다.

자세한 내용은 이쪽에서 보실 수 있습니다.

Lumen 마이크로프레임워크는 Laravel 풀스택 프레임워크의 경량 버전입니다.Lumen은 Laravel 구문과 컴포넌트를 사용하여 Laravel로 쉽게 업그레이드할 수 있습니다.

Lumen은 마이크로 서비스 개발 및 API 개발을 위해 설계된 보다 전문화된(및 제거된) 프레임워크입니다.따라서 Larabel의 HTTP 세션, 쿠키, 템플릿 등의 일부 기능은 필요하지 않으며 Lumen은 이러한 기능을 제거하여 라우팅, 로깅, 캐싱, 큐, 검증, 오류 처리 등 중요한 기능을 유지합니다.

라라벨 루멘

라우팅

기본의

특징들 라라벨 루멘
GET Route::get($uri, $callback) $router->get($uri, $callback)
POST Route::post($uri, $callback) $router->post($uri, $callback)
PUT Route::put($uri, $callback) $router->put($uri, $callback)
PATCH Route::patch($uri, $callback) $router->patch($uri, $callback)
DELETE Route::delete($uri, $callback) $router->delete($uri, $callback)
OPTION Route::option($uri, $callback) $router->option($uri, $callback)
다중 HTTP 동사 Route::match($types, $uri, $callback) ns
모든 HTTP 동사 Route::any($uri, $callback) ns

경로 리다이렉트

특징들 라라벨 루멘
기본의 Route::redirect($from, $to, $status); ns
프리시스턴트 Route::permanentRedirect($from, $to); ns

루트 표시

특징들 라라벨 루멘
기본의 Route::view($from, $to); ns

루트 파라미터

특징들 라라벨 루멘
파라미터 ns ns
파라미터 및 의존관계 주입 ns ns
필수 파라미터 ns ns
필수 파라미터 ns ns
정규 표현의 제약 조건 ns ns
글로벌 제약 ns ns

네임드 루트

특징들 라라벨 루멘
기본의 Route::get($uri, $callback)->name('profile') $router->get($uri, ['as' => 'profile', $callback])
이름 있는 루트에 대한 URL 생성 route('profile') route('profile')
이름에 의한 현재 경로 검사 $request->route()->named('profile') ns

루트 그룹

특징들 라라벨 루멘
미들웨어 Route::middleware($middleware) $router->group(['middleware' => $middleware], $callback)
컨트롤러 Route::controller(ProfileController::class) ns
서브도메인 라우팅 Route::domain('{account}.example.com') ns
네임스페이스 Route::namespace($namespace) $router->group(['namespace' => $namespace], $callback)
루트 프리픽스 Route::prefix('admin') $router->group(['prefix' => 'admin'], $callback)
루트명 프리픽스 Route::name('admin.') ns

루트 모델의 바인딩

특징들 라라벨 루멘
암묵적인 바인딩 ns ns
암묵적 열거 바인딩 ns ns
명시적 바인딩 ns ns

폴백 루트

특징들 라라벨 루멘
기본의 Route::fallback() ns

루트 캐싱

특징들 라라벨 루멘
기본의 ns ns

미들웨어

특징들 라라벨 루멘
미들웨어의 정의 artisan make:middleware 설명서
글로벌 미들웨어 ns ns
루트에 미들웨어 할당 ns ns
미들웨어 그룹 ns ns
미들웨어 파라미터 ns ns
종료 가능한 미들웨어 ns ns

CSRF 보호

특징들 라라벨 루멘
기본의 ns ns

버전 CSRF 이후 되었습니다.5.2


컨트롤러

특징들 라라벨 루멘
컨트롤러의 정의 artisan make:controller 설명서
기본의 ns ns
싱글 액션 컨트롤러 ns ns
컨트롤러 미들웨어 ns ns
자원 컨트롤러 ns ns
의존관계 주입 및 컨트롤러 ns ns

요청한다

특징들 라라벨 루멘
요청 접근 ns ns
요청 경로 및 방법 ns ns
요청 헤더 ns ns
요청 IP 주소 ns ns
콘텐츠 네고시에이션 ns ns
PSR-7의 요구 ns ns
입력 검색 중 ns ns
입력이 존재하는지 확인 ns ns
추가 입력 병합 ns ns
이전 입력 ns ns
쿠키 ns ns
입력 트리밍 및 정규화 ns ns
업로드된 파일 가져오기 ns ns
업로드된 파일 이동 ns ns

대답

특징들 라라벨 루멘
응답에 머리글 부착 ns ns
응답에 쿠키 첨부 ns ns
리다이렉트 ns ns
응답 표시 ns ns
JSON 응답 ns ns
파일 다운로드 ns ns
파일 응답 ns ns

뷰 및 블레이드

특징들 라라벨 루멘
기본의 ns ns
블레이드 ns ns

세션

특징들 라라벨 루멘
기본의 ns ns

버전 Lumen 이후 5.2


확인

특징들 라라벨 루멘
기본의 ns ns
폼 리퀘스트 ns ns
$this->validate ★★★ ns $this->validateLumen에서 사용할 수 있는 도우미는 항상 관련 오류 메시지와 함께 JSON 응답을 반환합니다.이는 요구가 AJAX 요구가 아닌 경우 리다이렉트 응답을 반환하는 Larabel 버전의 메서드와는 대조적입니다.Lumen은 스테이트리스이며 세션을 지원하지 않기 때문에 세션에 대한 오류 플래시는 불가능합니다.달리, 은 라라벨에 할 수 .validate경로 폐쇄 안에서부터의 방법.
exists ★★★★★★★★★★★★★★★★★.unique ns 「 」를 는, 「」exists ★★★★★★★★★★★★★★★★★」unique 합니다.$app->withEloquent() 콜을 bootstrap/app.phpfile.파일.
그 그$errors보기 Variable변수 표시 ns 그래서 Lumen은 즉시 사용 가능한 세션을 지원하지 않습니다 Lumen 상자의 세션을 지원하지 않습니다.$errors는 Laravel의 모든 관점에서 사용 가능하다 보기 변수 Lumen에서 살 수 없다.Larabel의 모든 뷰에서 사용할 수 있는 뷰 변수는 Lumen에서 사용할수 없습니다.validation, 검증에 실패하면 만약 실패 한다면$this->validate도우미 도우미가를 던질 것이다 던지다Illuminate\Validation\ValidationException내장된 JSON반응 때문에 모든 관련 오류 메시지도 포함됩니다.모든 관련 오류 메시지가 포함된 JSON응답을 포함합니다.

오류 및 로깅

특징들 라라벨 루멘
에러 ns ns
로깅 ns ns

장인 콘솔

특징들 라라벨 루멘
명령어 실행 ns ns
명령어 쓰기 ns ns

캐시

특징들 라라벨 루멘
기본의 ns ns

그 사용하기 전에를 이용하기 전에Cache입면, 당신은 파사드(facad)는,반드시코멘트를 실시해 주세요uncommented가 있는지 확인합니다.$app->withFacades()당신의 메서드에서 메서드 호출 콜의bootstrap/app.phpfile.파일.

Redis 지원

Lumen를 Redis캐시를 이용하기 전에, 당신은 Lumen에서 Redis캐시를사용하기 전에를 설치해야 합니다.illuminate/redis작곡가를 통해 패키지이다.그럼이제 등록.Illuminate\Redis\RedisServiceProvider 안에서bootstrap/app.php 삭제:

$app->register(Illuminate\Redis\RedisServiceProvider::class);

하지 않은 $app->withEloquent() 안에서bootstrap/app.php.$app->configure('database'); bootstrap/app.php파일을 사용하여 Redis 데이터베이스 구성이 올바르게 로드되었는지 확인합니다.


자산의 컴파일

특징들 라라벨 루멘
믹스 ns ns

이벤트

특징들 라라벨 루멘
기본의 ns ns
제너레이터

및하기 위한 Lumen을 만 하면 .ExampleEvent ★★★★★★★★★★★★★★★★★」ExampleListener이벤트 및 청취자를 정의하는 클래스입니다.이러한 샘플 클래스는 모든 이벤트와 청취자의 기본 구조를 제공합니다.

이벤트/청취자 등록 중

프레임워크와 로 Laravel 프레임워크는EventServiceProviderLumen 어플리케이션에 포함되어 있어 모든 이벤트 청취자를 등록할 수 있습니다.listenproperty에는 모든 이벤트(키)와 그 리스너(값)의 배열이 포함됩니다.물론 어플리케이션에 필요한 만큼 이벤트를 이 어레이에 추가할 수 있습니다.

protected $listen = [
    'App\Events\ExampleEvent' => [
        'App\Listeners\ExampleListener',
    ],
];
기동 이벤트

.event 또는 "" " " " " "Event루멘 어플리케이션 전체에 걸쳐 이벤트를 발생시킵니다.다시 말씀드리지만, 이들 함수는 완전한 Laravel 프레임워크와 동일하게 동작합니다.

event(new ExampleEvent);
Event::dispatch(new ExampleEvent);

인증 및 인가

특징들 라라벨 루멘
인증 ns ns
허가 ns ns
인증

Lumen에서의 인증은 Laravel과 동일한 기본 라이브러리를 사용하지만 전체 Laravel 프레임워크와는 상당히 다르게 구성됩니다.Lumen은 세션 상태를 지원하지 않으므로 인증하려는 수신 요청은 API 토큰 등의 상태 비저장 메커니즘을 통해 인증되어야 합니다.

허가
능력의 정의

Larabel과 비교하여 Lumen에서 인증을 사용할 때 가장 큰 차이점은 능력을 정의하는 방법에 있습니다. 루멘을 할 수 .GateAuthServiceProvider력을정 정의: :

Gate::define('update-post', function ($user, $post) {
    return $user->id === $post->user_id;
});
정책의 정의

달리 에는 라라 a a a가 .$policies 위에 배열하다AuthServiceProvider . , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,policyGate의 「프로바이더에서의 boot★★★★

Gate::policy(Post::class, PostPolicy::class);
능력 확인

완전한 Laravel 프레임워크에서처럼 능력을 "확인"할 수 있습니다. '어느 정도'를 .Gate는, 반드시파사드」의 「하게 해 .bootstrap/app.phpfile. 마세요는 User에 the 에 allows현재 인증된 사용자가 자동으로 인가 콜백에 전달되기 때문에 다음과 같이 설정합니다.

if (Gate::allows('update-post', $post)) {
    //
}

if (Gate::denies('update-post', $post)) {
    abort(403);
}

어떤 것이 하실 수도 있습니다.User인스턴스에는 다음과 같은 기능이 있습니다.

if ($request->user()->can('update-post', $post)) {
    // The user is allowed to update the post...
}

if ($request->user()->cannot('update-post', $post)) {
    abort(403);
}

데이터베이스

특징들 라라벨 루멘
기본 쿼리 ns ns
쿼리 작성기 ns ns
웅변 ORM ns ns
이행 ns ns
시드러 ns ns

「 」를 는, 「」DB 합니다.$app->withFacades()bootstrap/app.phpfilename을 클릭합니다.


이메일 확인 및 비밀번호 리셋

특징들 라라벨 루멘
이메일 확인 ns ns
비밀번호 리셋 ns ns

암호화 및 해시

특징들 라라벨 루멘
암호화 ns ns
해싱 ns ns

해 주세요.APP_KEY.env32번이 값이 올바르게 설정되지 않으면 Lumen에 의해 암호화된 모든 값은 안전하지 않습니다.


메일

특징들 라라벨 루멘
기본의 ns ns

특징들 라라벨 루멘
기본의 ns ns

Lumen에서는 마감 작업이 지원되지 않습니다.

제너레이터

Lumen에는 새 작업 클래스를 자동으로 만들기 위한 생성기가 포함되어 있지 않습니다.대신 '아, 아, 아, 아, 아, 베끼다'를 .ExampleJob이치노

작업의 디스패치

의 디스패치에 프레임워크와 로 Laravel을 할 수 .dispatchLumen 어플리케이션 내의 임의의 장소에서 작업을 디스패치하는 기능:

dispatch(new ExampleJob);

'먹다'도 쓸 수 요.Queue는, 반드시 콜주세요.$app->withFacades() 안에서bootstrap/app.php 삭제:

Queue::push(new ExampleJob);

서비스 컨테이너

특징들 라라벨 루멘
기본의 ns ns
컨테이너 접근

Laravel\Lumen\Application는 instance의 입니다.Illuminate\Container\Container따라서 어플리케이션의 서비스 컨테이너로 취급될 수 있습니다.

인스턴스 해결

컨테이너의 문제를 해결하려면 컨테이너에 의해 이미 자동으로 해결된 클래스(route Closure, 컨트롤러 컨스트럭터, 컨트롤러 메서드, 미들웨어, 이벤트 리스너 또는 큐잉 작업 등)에 필요한 의존관계를 입력할 수 있습니다.'어울리지 않다'를 .app어플리케이션 내 어디에서나 기능:

$instance = app(Something::class);

테스트

특징들 라라벨 루멘
기본의 ns ns

루멘은 라라벨과 같은 기초와 많은 컴포넌트를 가진 마이크로 프레임 구조입니다.

  • 그러나 Lumen은 마이크로 서비스용으로 설계되어 사용자용 애플리케이션용으로 설계되어 있지 않습니다.
  • Laravel의 대규모 버전이기 때문에 HTTP 세션이나 쿠키 등의 API에 불필요한 기능을 배제하고 설정 옵션의 수를 제한합니다.
  • Lumen은 동일한 컴포넌트를 많이 사용하지만 부트스트래핑 프로세스를 최소한으로 줄입니다.
  • 경량 API 핸들링 시스템으로 설계되어 있어 코드를 최대한 빨리 기동하여 사용자에게 데이터를 최대한 빨리 반환할 수 있습니다.

간단히 말하면

  • 루트 관리 및 MVC 기능은 동일하며 슬롯링을 포함한 미들웨어 기능도 있지만, 켜는 설정이 있어도 기본적으로는 Alturnal 등의 기능은 꺼집니다.예를 들어 Composer를 통해 추가할 필요가 없습니다.
  • 또한 팅커나 장인 명령어 같은 것도 추가되지 않습니다.

주요 차이점 중 몇 가지

  • Larabel은 많은 서드파티제의 툴과 프레임워크를 패키지화 또는 지원하는 풀스택 웹 어플리케이션 프레임워크입니다.한편 Lumen은 마이크로 서비스 및 API 개발에 사용되며 속도와 높은 응답 시간을 제공합니다.
  • Laravel은 서버 및 애플리케이션과 함께 사용하는 기타 툴에 대해 다양한 종류의 구성이 필요합니다.한편 Lumen 마이크로 프레임워크는 API 개발, 쿠키, 템플릿, 캐시, 로깅, 라우팅, HTTP 세션 등의 특수한 기능을 제공하는 가벼운 형태의 Laravel 버전입니다.
  • Laravel은 Lumen과 다른 수의 도구와 통합할 수 있는 반면 Lumen은 다른 도구와의 통합 설비가 적습니다.
  • Larabel의 퍼포먼스는 SQL 쿼리와 어플리케이션레벨에서 데이터베이스를 튜닝하는 경우 양호하지만 Lumen의 퍼포먼스는 SQL 쿼리의 경우 저하되어 Larabel에 비해 기능이 적습니다.
  • 루멘에서는 웅변가가 필요하면 활성화해야 합니다.
  • Lumen에는 블레이드 템플릿 엔진이 없습니다.
  • Larabel은 RESTful API(Application Programming Interfaces) 구축에 적합한 반면 Lumen은 마이크로 서비스 구축에 가장 성능이 뛰어난 마이크로프레임워크 API 중 하나입니다.
  • Lumen에서의 인증은 Laravel과 동일한 기본 라이브러리를 사용하지만 전체 Laravel 프레임워크와는 상당히 다르게 구성됩니다.Lumen은 세션 상태를 지원하지 않으므로 인증하려는 수신 요청은 API 토큰 등의 상태 비저장 메커니즘을 통해 인증되어야 합니다.
  • Lumen에는 Laravel과 같은 이벤트 큐잉 기능이 내장되어 있지 않습니다.

왜 루멘일까요?

Lumen은 Laravel 기반의 마이크로 서비스와 초고속 API를 구축하기 위한 완벽한 솔루션입니다.사실, 이것은 가장 빠른 마이크로 프레임 중 하나입니다.Laravel 어플리케이션을 지원하는 놀라운 속도의 서비스를 작성하는 것이 그 어느 때보다 쉬워졌습니다.문서

Lumen은 API를 구축하기 위한 프레임워크로, 기본적으로 요청에 대한 JSON 응답을 제공합니다.바로 그겁니다.

이러한 종류의 애플리케이션은 일반적으로 웹 서비스로 알려져 있습니다.

Lumen 5.2 업데이트 시점에서는 라라벨 뷰, 세션 등을 지원하지 않습니다.그러기 위해서는 완전한 라라벨 프레임워크로 업그레이드해야 합니다.

Laravel 프레임워크의 일부 컴포넌트는 성능을 위해 다른 패키지와 스왑됩니다.여기에서 확인하다

Lumen을 고려할 수 있는 시나리오의 예

  • API를 통해 애플리케이션의 일부 기능을 다른 개발자에게 개방할 수 있습니다.
  • 당신의 어플리케이션은 웹 어플리케이션과 모바일 어플리케이션을 모두 지원해야 합니다.그러면 데이터를 Lumen API로 랩된 DB에 저장하는 것이 완벽할 것입니다.
  • scalability를 중요한 포인트로 고려할 때 루멘이 필요할 수 있습니다.

라라벨과 루멘의 가장 큰 차이점은 라라벨은 루멘에는 없는 장인의 명령어를 가질 수 있다는 것입니다.

언급URL : https://stackoverflow.com/questions/29647960/differences-and-similarities-between-lumen-and-laravel

반응형