[Chaincode] 체인코드에서의 MVC...? (1)

조금 더 확실하게 공부해서 앞으로 있을 체인코드 개발에 MVC에 가깝게 구조를 잡고 개발하기위해 정리

MVC

MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다. 이러한 “관심사 분리” 는 더나은 업무의 분리와 향상된 관리를 제공합니다. MVC 에 기반을 둔 몇 가지 다른 디자인 패턴으로 MVVM (모델-뷰-뷰모델), MVP (모델-뷰-프리젠터), MVW (모델-뷰-왓에버) 가 있습니다.

Model

데이터를 받아 비즈니스 로직을 처리
주로 DB와의 상호작용이 해당

View

레이아웃과 화면을 처리
애플리케이션의 데이터를 보여주는 방식

Controller

사용자로부터 요청을 받아 수행할 비즈니스 로직을 제어

Go언어에서의 MVC

Go언어에서는 Revel이라고 하는 MVC를 도와주는 웹 프레임워크가 있다고 함

하지만 체인코드에서는..?

MVC패턴을 제대로 모르더라도 구조를 보면 많이 익숙한 느낌이 들정도로 개발자들은 자주 접하는 구조
하지만 체인코드를 개발할때 MVC를 그대로 사용하기에는 무리가 있어서 조금 내 방식대로 수정
호출 순서는 아래와 같다고 생각

사용자 → Controller → Service → DAO → DB

그리고 각 호출에서 필요한 데이터 구조(DTO)를 정의하는 정도로 생각

폴더 구조

직관적으로 각 구조마다 폴더명을 지정해서 관리
dao, dto는 service, object등으로 상황에 따라 다르게 사용

1
2
3
4
5
\GOPROJECT\SRC\MVC
├─controller
├─dao
├─dto
└─service

코드

개발을 하면서 반복되는 코드는 계속해서 리펙토링을 통해 제거하고 관리해야함

그래도 나중엔 감당안되긴 해…