본문 바로가기

전체 글

(33)
Fixing Visual Studio 2011 “Visual Studio Component Model Host Package” Error Fixing Visual Studio 2011 “Visual Studio Component Model Host Package” Error When running Visual Studio 2011 Developer Preview under Windows 8, you may run into an error when trying to create a new project that displays the following message: Package ‘Visual Studio Component Model Host Package’ failed to load This can occur when using the Developer Preview of Windows 8 that comes packaged with V..
Event Sourcing
CQRS + Event Sourcing – A Step by Step Overview CQRS flow 1. A Command is generated from the UI Typically the UI displays data to the user. The user generates a command by requesting some form of change. 2. The Message Router or Bus receives the command The message bus is responsible to routing the command to it’s handler. 3. The handler prepares the aggregate root The handler gets the aggregate root and applies all previous events to it. Thi..
Cafe CQRS (Read Models) - part 4 part 4 까지의 작업내용은 https://github.com/shockzinfinity/CQRSCafe 를 참조하시기 바랍니다. Read Models are about Queries 이전 단계에서 도메인 로직을 작성하는 방법을 살펴봤습니다. 커맨드가 도메인에 적용되면 아무 반응이 없을 것이고, 거절된다면 예외가 리턴이 될것입니다. 그렇다면 도메인의 현재 상태를 어떻게 알 수 있을까요? 그래서 필요한 것이 Read Models 입니다. CQRS 에서는 이 부분을 Query 라고 애기하고, 이전 과정에서 애기하는 Query Facade는 바로 이 부분을 애기합니다. Read Models 는 Query 하는 것을 애기합니다. 도메인에서 발생된 이벤트로 인해 도메인의 상태가 변경이 되고, 클라이언트의 쿼리를..
Cafe CQRS (Domain Logic) - part 3 Our First Command and Event 모든 도메인 비즈니스 로직 시나리오는 Table을 오픈하는 것부터 시작하겠습니다. 먼저, TabOpened 이벤트를 정의하겠습니다. 이벤트의 구분을 위해 이벤트 guid 를 부여하는것이 핵심입니다.public class OpenTab { public Guid Id; public int TableNumber; public string Waiter; } 커맨드도 거의 비슷합니다.public class TabOpened { public Guid Id; public int TableNumber; public string Waiter; } 일반적으로 커맨드와 이벤트에 대한 suffix (접미사)등을 추가해야 하는 지에 대한 생각이 있을지 모르겠으나, 이 튜토리얼에..
Cafe CQRS - part 2 다음 단계를 이어 나가기 전에 솔루션 전반에 걸쳐 사용하게 될 Base Class 들에 대한 설명이 필요할 것 같습니다. 먼저 솔루션 구조는 아래와 같습니다. Base Library 는 다른 프로젝트에서 참조하게 될 것입니다. 클래스 다이어그램에서의 TabAggregate 는 다음 과정에서 작성할 것입니다. Aggregate.cs - Aggregate 는 DDD(Domain Driven Design) 에서 애기하는 비즈니스 애플리케이션의 주축이 되는 구성 요소 입니다. 이 Aggregate는 다음 과정들에서 설명될 event stream의 주체가 되는 역할을 합니다. 이 Aggregate를 상속하여 비즈니스 로직이 구성되어질 것입니다.public class Aggregate { /// /// 해당 Agg..
Cafe CQRS - part 1 이 시리즈는 CQRS EDUMENT 의 tutorial 을 보면서, 나름 번역과 사견을 덧붙여 작성되었습니다. 원문 링크: http://cqrs.nu/tutorial/cs/01-design CQRS 는 Command and Query Responsibility Segregation 의 약자로서 전통적인 CRUD 관점의 아키텍처를 Command 와 Query 로 분리해서 DDD(Domain Driven Design) 관점의 개발을 이루기 위한 하나의 패턴이라고 볼 수 있습니다. 이 개념은 Martin Fowler 가 처음 제시했고, Greg Young 이 좀 더 다듬은 개념입니다. 시작하기에 앞서 이 시리즈를 번역하게 된 이유는 개인적인 기록의 이유도 있지만 이 패턴을 학습하고 연구함으로써 개인적인 프로젝..
밥 - 천양희 외로워서 밥을 많이 먹는다던 너에게 권태로워 잠을 많이 잔다던 너에게 슬퍼서 많이 운다던 너에게 나는 쓴다 궁지에 몰린 마음을 밥처럼 씹어라 어차피 삶은 너가 소화해야 할 것이니까