Laravel 개발: Laravel Event Sourcing을 사용하여 이벤트 기반 애플리케이션을 구축하는 방법은 무엇입니까?
이벤트 기반 애플리케이션은 이벤트 및 이벤트 핸들러(이벤트 핸들러)를 사용하여 구현된 애플리케이션입니다. 이벤트 기반 아키텍처를 사용하면 애플리케이션을 더 쉽게 확장하고 유지 관리할 수 있으며, 더 유연하고 변화에 더 쉽게 적응할 수 있습니다.
Laravel은 이벤트 기반 애플리케이션을 구축하는 데 도움이 되는 이벤트 소싱이라는 기능을 제공하는 인기 있는 PHP 프레임워크입니다. 이 글에서는 Laravel Event Sourcing을 사용하여 간단한 이벤트 기반 애플리케이션을 구축하는 방법을 소개합니다.
1. 라라벨 이벤트 소싱이란?
Laravel Event Sourcing은 이벤트 중심 애플리케이션을 구축하는 데 도움이 되도록 Laravel에서 제공하는 제품군인 이벤트 중심 모델링 프레임워크입니다. 이벤트를 저장하고 복원하여 애플리케이션에서 상태를 재현하고 이전 상태로 돌아갈 수 있습니다.
2. Laravel 이벤트 소싱을 사용하는 이유는 무엇인가요?
Laravel Event Sourcing을 사용하면 애플리케이션의 확장성과 유지 관리 가능성을 향상시킬 수 있다는 이점이 있습니다. 이벤트 기반 애플리케이션을 사용하면 애플리케이션의 다양한 부분을 이해하고 수정하기가 더 쉽고 애플리케이션이 더욱 강력해집니다.
Laravel Event Sourcing을 사용하면 CQRS(Command Query Responsibility Segregation) 모드와 ES(Event Sourcing) 모드를 포함한 여러 모드를 쉽게 구현할 수 있습니다.
3. Laravel Event Sourcing을 사용하여 이벤트 기반 애플리케이션을 구축하는 방법은 무엇입니까?
이 예에서는 사용자가 작업을 생성하고 완료할 수 있는 간단한 작업 관리 애플리케이션을 구축하겠습니다.
1단계: 작업 생성
작업 생성을 통해 Laravel Event Sourcing을 사용하는 방법을 시연할 수 있습니다. 먼저 작업 생성 동작을 처리하기 위해 "TaskCreated" 이벤트를 생성해야 합니다.
php artisan make:event TaskCreated
2단계: 작업에 대한 이벤트 핸들러 생성
이벤트를 생성한 후에는 이벤트를 처리할 이벤트 핸들러를 생성해야 합니다. 이제 "TaskCreated" 이벤트를 처리할 이벤트 핸들러를 만들어야 합니다.
php artisan make:listener CreateTaskListener --event=TaskCreated
3단계: 이벤트와 이벤트 핸들러를 함께 바인딩
이제 이벤트와 이벤트 핸들러를 함께 바인딩해야 합니다. Laravel의 EventServiceProvider 파일에서 이를 달성할 수 있습니다.
protected $listen = [ TaskCreated::class => [ CreateTaskListener::class, ], ];
4단계: 이벤트 핸들러를 사용하여 작업 생성 이벤트 처리
이제 이벤트 핸들러를 사용하여 작업 생성 이벤트를 처리할 수 있습니다. 우리가 구현할 첫 번째 이벤트 핸들러는 실제로 새 작업을 생성하는 CreateTaskListener입니다.
public function handle(TaskCreated $event) { $task = new Task; $task->name = $event->name; $task->save(); }
5단계: Laravel Event Sourcing을 사용하여 이벤트 저장
Laravel Event Sourcing을 사용하면 이벤트를 저장하고 복원할 수 있습니다. Broadway 라이브러리와 같은 Laravel의 Event Sourcing 라이브러리를 사용해야 합니다.
Laravel의 Composer.json 파일을 사용하여 Broadway 라이브러리를 추가할 수 있습니다:
"require": { "broadway/broadway": "^1.0", "broadway/serializer": "^1.0", "broadway/event-store": "^1.0" }
그런 다음 다음 명령을 실행하여 Broadway 라이브러리를 설치합니다:
composer install
6단계: Laravel Event Sourcing 사용
이제 Laravel Event Sourcing을 사용하여 다음을 수행할 수 있습니다. 매장 이벤트.
이벤트를 저장하고 검색하려면 이벤트 저장소를 만들어야 합니다. Laravel의 앱 폴더에 TaskEventStore.php라는 클래스를 생성하여 이를 구현할 수 있습니다:
use BroadwayEventStoreEventStore; use BroadwayEventSourcingEventSourcingRepository; class TaskEventStore extends EventSourcingRepository { public function __construct(EventStore $eventStore) { parent::__construct( $eventStore, new TaskAggregateRootEventSourcedFactory(), new TaskAggregateRootEventSourcedRepository() ); } }
TaskEventStore 클래스의 생성자에서 새 이벤트 저장소를 생성하고 Broadway 라이브러리 Store 이벤트의 EventSourcingRepository를 사용해야 합니다. 또한 집계 루트를 관리하려면 집계 루트 팩토리와 집계 루트 저장소를 정의해야 합니다.
이제 TaskEventStore 클래스를 사용하여 이벤트를 저장할 수 있습니다. CreateTaskListener 이벤트 핸들러에 다음 코드를 추가할 수 있습니다.
$eventStore = $this->app->make(TaskEventStore::class); $eventStream = new DomainEventStream([$event]); $aggregateRoot = $eventStore->load($command->taskId); $aggregateRoot->handle($event); $eventStore->save( $aggregateRoot->getUncommittedEvents(), $aggregateRoot->getId() );
이 코드 조각은 TaskEventStore 클래스의 인스턴스를 가져오고, 이벤트 스트림을 생성하고, 집계 루트를 로드하고, 핸들 메서드를 호출하고, 커밋되지 않은 이벤트를 저장합니다.
또한 Laravel의 ServiceProvider 클래스에 TaskEventStore 클래스를 바인딩해야 합니다:
$this->app->singleton(TaskEventStore::class, function ($app) { $eventStore = new InMemoryEventStore; return new TaskEventStore($eventStore); });
7단계: 작업 찾기 및 표시
이제 새 작업을 만들었으므로 쿼리 작업을 수정하여 사용자에게 모든 작업을 표시할 수 있습니다. .
ShowTasks라는 명령을 만듭니다.
php artisan make:command ShowTasks
우리가 구현할 첫 번째 명령 프로세서는 목록 표시를 위해 모든 작업을 반환하는 ShowTasks입니다.
public function handle() { $tasks = Task::all(); foreach ($tasks as $task) { $this->info("Name: {$task->name}"); } }
8단계: 작업을 완료로 표시
이제 작업을 완료로 표시하는 동작을 시뮬레이션해 보겠습니다. "TaskCompleted" 이벤트를 사용하여 이 동작을 추적할 수 있습니다.
먼저 "TaskCompleted" 이벤트를 생성해야 합니다:
php artisan make:event TaskCompleted
그런 다음 이 이벤트를 처리하기 위해 CompleteTaskHandler라는 이벤트 핸들러를 생성합니다.
php artisan make:listener CompleteTaskHandler --event=TaskCompleted
다음으로 "TaskCompleted" 이벤트와 CompleteTaskHandler 이벤트 핸들러를 바인딩합니다.
protected $listen = [ TaskCreated::class => [ CreateTaskListener::class, ], TaskCompleted::class => [ CompleteTaskHandler::class, ], ];
마지막으로 구현하려는 두 번째 이벤트 핸들러는 작업 상태를 Completed로 설정하는 CompleteTaskHandler입니다.
public function handle(TaskCompleted $event) { $task = Task::where('name', $event->name)->firstOrFail(); $task->completed = true; $task->save(); }
이 시점에서 우리는 사용자가 작업 목록을 생성, 완료 및 표시할 수 있는 이벤트 기반 애플리케이션을 성공적으로 만들었습니다.
결론
Laravel Event Sourcing을 사용하면 이벤트 기반 애플리케이션을 구축하는 데 도움이 될 수 있습니다. 이벤트 중심 애플리케이션은 더 확장 가능하고 유지 관리가 용이하며 더 유연합니다. Laravel Event Sourcing을 사용하면 CQRS 및 ES 패턴을 포함한 여러 패턴을 쉽게 구현할 수 있으므로 개발자가 애플리케이션을 구축하는 동안 이벤트 중심 아키텍처를 사용할 것을 권장합니다.
위 내용은 Laravel 개발: Laravel Event Sourcing을 사용하여 이벤트 기반 애플리케이션을 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!