본문 바로가기
C#

22# CQRS

by NaHyungMin 2019. 8. 9.

채용공고에서 CQRS라는 개념을 보고 호기심에 찾아봤다.

현재 쓰고 있는 방식과 어떤 부분이 다르나 확인했더니 기본적인 사용 아키텍쳐가 살짝 다르다.

서버를 하면서 오류가 나면 명확하게 알 수 있는 장점이 있었다.

하지만 입력를 완료하고 바로 유저 정보를 조회를 하면 커넥션에 대한 리소스는 줄어들 것이다.

 

이해한 정보로 예제 코드를 작성해봤다.

 

 CQRS Style

// Command and Query Responsibility Segregation

private static void CQRSStyle()

{

    //회원가입

    Int64 userKey = CQRSInsert();

 

    //결과물을 받아야 하지만 생략.

    CQRSSelect(userKey);

}

 

private static Int64 CQRSInsert()

{

    Int64 userKey = 1;

 

    Dictionary<stringobject> paramList = new Dictionary<stringobject>()

    {

        ["$user_key"= userKey,

        ["$password"= MD5Hash("password"),

    };

 

    MySqlTable<object> readerList = MySqlManager.ExecuteMySqlTable<object>

(ServiceConfig.db_ConnectionString, MySqlProcedureName.sp_CreateUser, paramList, out Int32 resultCode);

 

    return userKey;

}

 

private static void CQRSSelect(Int64 userKey)

{

    Dictionary<stringobject> paramList = new Dictionary<stringobject>()

    {

        ["$user_key"= userKey,

    };

 

    MySqlTable<object> readerList = MySqlManager.ExecuteMySqlTable<object>

(ServiceConfig.db_ConnectionString, MySqlProcedureName.sp_GetUser, paramList, out Int32 resultCode);

 

    //정보를 만들어 반환해야 한다.

}

 

Stereotypical Style

// Stereotypical 

private static void StereotypicalStyle()

{

    //회원가입

    Int64 userKey = UserInsertAndSelect();

}

 

private static Int64 UserInsertAndSelect()

{

    Int64 userKey = 1;

 

    Dictionary<stringobject> paramList = new Dictionary<stringobject>()

    {

        ["$user_key"= userKey,

        ["$password"= MD5Hash("password"),

    };

 

    MySqlTable<object> readerList = MySqlManager.ExecuteMySqlTable<object>

(ServiceConfig.db_ConnectionString, MySqlProcedureName.sp_CreateUser, paramList, out Int32 resultCode);

 

    userKey = Convert.ToInt64(readerList[0"user_key"]);

    return userKey;

}

 

 

참고 사이트

https://justhackem.wordpress.com/2016/09/17/what-is-cqrs/

 

CQRS란 무엇인가?

CQRS 오해 CQRS와 그 관련 기술들은 .NET 환경을 중심으로 발전해왔고 점차 Java, Ruby 등의 생태계로 확산되고 있습니다. 국내에서는 아직 크게 주목받지는 않지만 최근 CQRS에 대한 관심이 늘어나고 있습니다. CQRS를 처음 접하는 국내 프로그래머들은 혼란스러워하거나 오해를 하곤 합니다. 비단 이런 현상은 CQRS나 국내 환경에 국한되…

justhackem.wordpress.com