viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8ffa11d02831dfaf0852456fb219302713c4cf83ae386e34f378a964a80872d242972d5e8dbd3c529269c1861c17f2d06c016c09f324bbefc78c


일단 MVC에 대해 먼저 간단히 설명을 하자면

디자인 패턴 중 하나인데, 웹개발 쪽에서는 거의 종교 경전 처럼 숭배 받는 패턴임.


크게 Model - View - Controller 로 나뉘는데... 각 단어에서도 알 수 있듯이


유저의 요청을 받으면 컨트롤러가 쿼리에 적합한 데이터(모델)을 View에 넘겨서 띄우는 거임


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8ffa11d02831dfaf0852456fb219302713c4cf83ae386e34f378a964a80872d242972d5e8dbd3c529269c1861c17f0876a506f0aa226a9e877a4


MVC에 대한 도식을 그려보라고 하면 윗짤이 가장 정확한 짤임.

유저(브라우저)는 컨트롤러를 통해 요청을 하고, 컨트롤러를 통해 응답을 받음.


간혹 도식 중에 View와 User(Browser)를 연결하거나, Model과 View를 연결하는 경우도 있는데


의미적으로는 맞을지 몰라도, 개념적으로는 틀렸다고 보면 됨.




MVC 패턴의 가장 중요한 포인트는


View가 Model에 직접적으로 접근 하면 안된다는 거야.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8ffa11d02831dfaf0852456fb219302713c4cf83ae386e34f378a964a80872d242972d5e8dbd3c529269c1861c17af85395e6c5ea220b59e3c41

농담이 아니라 jsp나 php 레벨까지 내려가면


ㄹㅇ 저 도식처럼 view 파일에서 쿼리 날리고


"이거슨 MVC 패턴입니다 으어어어" 하는 능지 처참한 새끼들도 수두룩함


괜히 Spring에서 jsp 사용 못하게 빼버린게 아니다. 



다음은 ECS


개념만 설명할께


Entity는 우리가 흔히 알고 있는 GameObject야


그리고 Component들은 DOD 즉, 데이터 지향 방식이야.

그리고 System은 우리가 Manager라고 이름 붙이는 애들..작업을 처리하는 애들이고...




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8ffa11d02831dfaf0852456fb219302713c4cf83ae386e34f378a964a80872d242972d5e8dbd3c529269c1861c17a2d73e503e5ca27540e85847

가령 각각의 GameObject 사이의 거리를 구하는 작업을 한다고 하면


FindComponents 해가지고 Array 받아서 쭈르르 처리하겠지?


그게 ECS야




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8ffa11d02831dfaf0852456fb219302713c4cf83ae386e34f378a964a80872d242fa405a89b7ff32dfa003cdb853688510013057e6d001758b




MVC는 그 목적이 기능에 따른 로직의 분리이지만


ECS는 속도개선에 그 목적이 있어.


기존의 Component는 묵직한 MonoBehaviour class여서 이를 주고 받는다면 당연히 그 만큼의 비용이 발생하게 돼


특히 이건 멀티플레이에서 네트워크 비용 문제로 다가올 수 있어.


반면에 구조체 형태의 component들은 필드 값만 가지고 있으니까 상대적으로 가볍지


즉, 멀티플레이 구현 시 보다 적은 데이터를 전송함으로써 네트워크 지연을 줄이는 셈이야


괜히 ECS에서 Burst 이니 Chunk니 하는게 아님.


게다가 아직 개발 중인 상태라 지금 모습을 가지고 갑론을박 하는 것도 아니라고 봄.


https://blogs.unity3d.com/kr/2019/03/08/on-dots-entity-component-system/


https://forum.unity.com/threads/dots-multiplayer-discussion.694669/



결론


ECS는 MVC가 아니다.

 - MVC는 능지처참한 소스 코드의 방지가 주 목적이지만

 - ECS는 엔진의 속도 개선이 그 목적이다.

 - ECS는 작업 처리에 대한 패턴으로 View에 해당되는 개념이 없고, Component는 Entity에 속해 있다. (종속적)