채용공고에서 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<string, object> paramList = new Dictionary<string, object>() { ["$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<string, object> paramList = new Dictionary<string, object>() { ["$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<string, object> paramList = new Dictionary<string, object>() { ["$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/
'C#' 카테고리의 다른 글
24# 서버와 접속 중일 때 자신 포트 찾기 (0) | 2019.10.03 |
---|---|
23# RSACryptoServiceProvider (0) | 2019.10.01 |
21# C# Mysql Connection 라이브러리 (0) | 2019.05.23 |
20# C#에서 구글 API OAuth로 정보 가져오기 (0) | 2019.05.08 |
19# C#에서 Twitter 계정 검증 (0) | 2019.05.02 |