1. MVC ํจํด์ด๋
MVC (Model-View-Controller) ํจํด์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ค๊ณ์์ ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์ ๋๋ค. ์ด ํจํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ธ, ๋ทฐ, ๊ทธ๋ฆฌ๊ณ ์ปจํธ๋กค๋ฌ๋ผ๊ณ ํ๋ ์ธ ๊ฐ์ง ์์๋ก ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ ๋ฐฉ์์ ๋๋ค.
- ๋ชจ๋ธ(Model): ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํฉ๋๋ค. ๋ฐ์ดํฐ์ ์ํ๋ฅผ ์ ์งํ๊ณ , ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฑฐ๋ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ชจ๋ธ์ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ฉฐ, ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ๋ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ทฐ(View): ๋ทฐ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๋ด๋นํฉ๋๋ค. ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ๊ณ , ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํ๋ ์ญํ ์ ์ํํฉ๋๋ค. ๋ทฐ๋ ๋ณด์ฌ์ง ๋ฐ์ดํฐ์ ํํ ๋ฐฉ์์ ์ ์ํ๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ ๋ทฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
- ์ปจํธ๋กค๋ฌ(Controller): ์ปจํธ๋กค๋ฌ๋ ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์ํธ์์ฉ์ ๊ด๋ฆฌํ๋ ์ญํ ์ ์ํํฉ๋๋ค. ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋, ๋ชจ๋ธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ทฐ์ ์ ๋ฌํฉ๋๋ค. ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ๋ทฐ๋ฅผ ์ ํํฉ๋๋ค.
MVC ํจํด์ ๊ฐ ์์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ๋์ด ์ ์ง๋ณด์์ ํ ์คํธ๊ฐ ์ฉ์ดํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ํ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ ๋ถ๋ถ์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ฏ๋ก ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ์คํ๋ง ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ์คํ๋ง MVC๋ MVC ํจํด์ ๊ธฐ๋ฐ์ผ๋กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ง์ํฉ๋๋ค.
2. ์คํ๋ง MVC ํจํด์ ๊ตฌ์ฑ ์์
์คํ๋ง MVC๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ๋ฐํํ๊ธฐ ์ํด ๋ค์ํ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
DispatcherServlet: ์คํ๋ง MVC์ ํต์ฌ์ด๋ฉฐ, ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ง์ ์ ์ ๋๋ค. DispatcherServlet์ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ ์ ํ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ฌํฉ๋๋ค. ๋ํ, ์๋ต์ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํฉ๋๋ค.
HandlerMapping: ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด ์ด๋ค ์ปจํธ๋กค๋ฌ๊ฐ ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ ํ๋ ์ญํ ์ ํฉ๋๋ค. HandlerMapping์ ์์ฒญ URL์ ๋ถ์ํ์ฌ ์ ์ ํ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ์ํํฉ๋๋ค.
Controller: ์ปจํธ๋กค๋ฌ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์ปจํธ๋กค๋ฌ๋ ์ค์ ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ฑฐ๋ ํ์ํ ์๋น์ค๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
ModelAndView: ์ปจํธ๋กค๋ฌ๊ฐ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ๋ฐ ๋ทฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด์ ๋๋ค. ModelAndView๋ ์ปจํธ๋กค๋ฌ์์ ์์ฑ๋๊ณ , DispatcherServlet์ ์ํด ๋ทฐ์ ์ ๋ฌ๋ฉ๋๋ค.
ViewResolver: ViewResolver๋ ๋ทฐ์ ๋ ผ๋ฆฌ์ ์ธ ์ด๋ฆ์ ๋ทฐ์ ์ค์ ๊ฒฝ๋ก๋ก ๋ณํํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ๋ทฐ์ ์ด๋ฆ๊ณผ ๊ฒฝ๋ก๋ฅผ ๋งคํํ์ฌ ์ ์ ํ ๋ทฐ๋ฅผ ์ฐพ์์ ๋ฐํํฉ๋๋ค.
View: ๋ทฐ๋ ์ปจํธ๋กค๋ฌ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ๋ ์ญํ ์ ํฉ๋๋ค. ๋ทฐ๋ JSP, Thymeleaf, Freemarker ๋ฑ์ ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
Model: Model์ ๋ทฐ์ ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด์ ๋๋ค. ์ปจํธ๋กค๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ Model ๊ฐ์ฒด์ ์ค์ ํ๊ณ , ์ด๋ฅผ ๋ทฐ๋ก ์ ๋ฌํจ์ผ๋ก์จ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ทฐ์ ๋ฐ์ํ ์ ์์ต๋๋ค.
์คํ๋ง MVC์ ๊ตฌ์ฑ ์์๋ค์ ๊ฐ๊ฐ์ ์ญํ ์ ์ํํ๋ฉฐ, ์๋ก ํ๋ ฅํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ ๋ฐ ์ฒ๋ฆฌ ํ๋ฆ์ ๊ตฌ์ฑํฉ๋๋ค. ๊ฐ๊ฐ์ ๊ตฌ์ฑ ์์๋ค์ ์คํ๋ง์ ์์กด์ฑ ์ฃผ์ (Dependency Injection)๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํตํด ์ ์ฐํ๊ฒ ์กฐํฉ์ด ๊ฐ๋ฅํ๊ณ , ํ์์ ๋ฐ๋ผ ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅํฉ๋๋ค.
3. ์คํ๋ง MVC ์๋ ์๋ฆฌ
์คํ๋ง MVC๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ผ๋ จ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์๋ํฉ๋๋ค. ๋ค์์ ์คํ๋ง MVC์ ์๋ ์๋ฆฌ์ ๋ํ ์์ธํ ์ค๋ช ์ ๋๋ค.
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด DispatcherServlet์ ๋์ฐฉํฉ๋๋ค.
- DispatcherServlet์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด HandlerMapping์๊ฒ ์์ฒญ URL์ ์ ๋ฌํฉ๋๋ค.
- HandlerMapping์ ์์ฒญ URL์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์ ๋ฐํํฉ๋๋ค.
- DispatcherServlet์ ๋ฐํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์คํํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ ์ค์ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ , ํ์ํ ์๋น์ค๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ModelAndView ๊ฐ์ฒด์ ์ค์ ํ์ฌ ๋ฐํํฉ๋๋ค.
- DispatcherServlet์ ViewResolver์๊ฒ ๋ทฐ์ ๋ ผ๋ฆฌ์ ์ธ ์ด๋ฆ์ ์ ๋ฌํ์ฌ ์ค์ ๋ทฐ์ ๊ฒฝ๋ก๋ฅผ ์ป์ต๋๋ค.
- ViewResolver๋ ๋ทฐ์ ์ด๋ฆ์ ์ค์ ๋ทฐ์ ๊ฒฝ๋ก๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค.
- DispatcherServlet์ View ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ModelAndView ๊ฐ์ฒด์ ํจ๊ป View์๊ฒ ์ ๋ฌํฉ๋๋ค.
- View๋ ์ ๋ฌ๋ฐ์ ModelAndView ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
์คํ๋ง MVC์ ์๋ ์๋ฆฌ์์ ์ค์ํ ์ญํ ์ ํ๋ ๊ฒ์ DispatcherServlet, HandlerMapping, ์ปจํธ๋กค๋ฌ, ViewResolver, View ๋ฑ์ ๊ตฌ์ฑ ์์์ ๋๋ค. DispatcherServlet์ ๋ชจ๋ ์์ฒญ์ ์ง์ ์ ์ด๋ฉฐ, HandlerMapping์ ์์ฒญ URL์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ปจํธ๋กค๋ฌ๋ ์ค์ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ , ViewResolver๋ ๋ทฐ์ ์ด๋ฆ์ ์ค์ ๋ทฐ์ ๊ฒฝ๋ก๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค. View๋ ์ ๋ฌ๋ฐ์ ModelAndView ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์คํ๋ง MVC์ ์๋ ์๋ฆฌ์ ๋ฐ๋ผ ์์ฒญ์ ๊ฐ๊ฐ์ ๊ตฌ์ฑ ์์๋ค์ ํตํด ์ฒ๋ฆฌ๋๋ฉฐ, ๊ฒฐ๊ณผ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ ํ ๋ฐฉ์์ผ๋ก ๋ฐํ๋ฉ๋๋ค. ์ด๋ฌํ ์๋ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ํ์ฉํจ์ผ๋ก์จ ์คํ๋ง MVC์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
4. ์คํ๋ง MVC์ ์ฅ์
์คํ๋ง MVC๋ ๋ง์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ๋ค์์ ์คํ๋ง MVC์ ์ฃผ์ ์ฅ์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ๋๋ค.
1. ์ ์ฐํ ์ํคํ ์ฒ
์คํ๋ง MVC๋ MVC ์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋์ด ์ฝ๋์ ์ ์ง ๋ฐ ํ์ฅ์ด ์ฉ์ดํฉ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ทฐ์ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๋ํ, ์คํ๋ง์ ์์กด์ฑ ์ฃผ์ (Dependency Injection)์ ํตํด ๊ฐ๊ฐ์ ๊ตฌ์ฑ ์์๋ค์ ์ ์ฐํ๊ฒ ์กฐํฉํ ์ ์์ด ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์ปค์คํ ํ ์ ์์ต๋๋ค.
2. ๊ฐ๋ ฅํ ํ ์คํธ ์ง์
์คํ๋ง MVC๋ ๋จ์ ํ ์คํธ์ ํตํฉ ํ ์คํธ๋ฅผ ์ง์ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ํ ์คํธํ ์ ์๋๋ก ๋์์ค๋๋ค. ์ปจํธ๋กค๋ฌ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ณ , ์์กด์ฑ ์ฃผ์ ์ ํตํด ํ ์คํธ์ฉ ๊ฐ์ฒด๋ฅผ ์ฝ๊ฒ ์ฃผ์ ํ ์ ์์ต๋๋ค. ๋ํ, ์คํ๋ง์ ํ ์คํธ ์ง์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐํธํ๊ฒ ํ ์คํธ ํ๊ฒฝ์ ์ค์ ํ๊ณ ์คํํ ์ ์์ต๋๋ค.
3. ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ
์คํ๋ง MVC๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ์ํคํ ์ฒ๋ฅผ ์ ๊ณตํ๋ฏ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๊ธฐ๊ฐ ์ฉ์ดํฉ๋๋ค. ๊ฐ๊ฐ์ ๊ตฌ์ฑ ์์๋ค์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ ๋ฐ ํ ์คํธ๋ ์ ์์ด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๋ํ, ์คํ๋ง์ AOP(Aspect-Oriented Programming)๋ฅผ ์ด์ฉํ์ฌ ๊ณตํต ๊ธฐ๋ฅ์ ๋ชจ๋ํํ์ฌ ์ ์ฉํ ์ ์์ผ๋ฏ๋ก ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ ์ ์ง๋ณด์์ฑ์ ๊ฐํํ ์ ์์ต๋๋ค.
4. ๋ค์ํ ๋ทฐ ํ ํ๋ฆฟ์ ์ง์
์คํ๋ง MVC๋ ๋ค์ํ ๋ทฐ ํ ํ๋ฆฟ ์์ง์ ์ง์ํ์ฌ ๊ฐ๋ฐ์๋ ์ ํธํ๋ ๋ทฐ ํ ํ๋ฆฟ์ ์ ํํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. JSP, Thymeleaf, Freemarker ๋ฑ ๋ค์ํ ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ UI ๋ ๋๋ง์ ์์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ํ, ๋ทฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌ๋ฅผ ํตํด ๋์์ด๋์ ๊ฐ๋ฐ์์ ํ์ ์ด ์ํํ ์ด๋ค์ง ์ ์์ต๋๋ค.
์คํ๋ง MVC์ ์์ ๊ฐ์ ์ฅ์ ๋ค์ ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฅ์๊ณผ ์ฝ๋์ ์ ์ง๋ณด์์ฑ, ํ ์คํธ ์ฉ์ด์ฑ ๋ฑ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋๋ก ๋์ต๋๋ค. ๋ํ, ์คํ๋ง์ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ํจ๊ป ์ฌ์ฉ๋ ์ ์์ด ๋์ฑ ๊ฐ๋ ฅํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
5. ์คํ๋ง MVC์ ํ์ฉ ์์
์คํ๋ง MVC๋ ๋ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์๋๋ฆฌ์ค์ ์ ์ฉํ๊ฒ ํ์ฉ๋ ์ ์์ต๋๋ค. ๋ค์์ ์คํ๋ง MVC์ ํ์ฉ ์์์ ๋ํ ์์ธํ ์ค๋ช ์ ๋๋ค.
1. ์ ํต์ ์ธ CRUD ์ ํ๋ฆฌ์ผ์ด์
์คํ๋ง MVC๋ ์ ํต์ ์ธ CRUD(Create, Read, Update, Delete) ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ์ ์ ํฉํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ์ฌ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑ, ์กฐํ, ์์ , ์ญ์ ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ์ ์์ฑ, ์์ , ์ญ์ ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ์๋น์ค ๋ ์ด์ด์์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐ์ ์ผ๋ก ์ ๊ณตํ๋ ์ญํ ์ ์ํํฉ๋๋ค.
2. RESTful ์น ์๋น์ค
์คํ๋ง MVC๋ REST(Representational State Transfer) ์ํคํ ์ฒ ์คํ์ผ์ ๋ฐ๋ฅด๋ ์น ์๋น์ค์ ๊ฐ๋ฐ์ ์ ํฉํฉ๋๋ค. RESTful ์น ์๋น์ค๋ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋๋ฐ ์ง์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค(API)์ ๋๋ค. ์คํ๋ง MVC๋ HTTP ๋ฉ์๋(GET, POST, PUT, DELETE)์ URL ํจํด์ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ๋ฆฌ์์ค์ ๋ํ CRUD ์์ ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ปจํธ๋กค๋ฌ๋ RESTful API์ ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ์๋น์ค ๋ ์ด์ด์ ๊ตฌํ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๋ JSON, XML ๋ฑ์ ํ์์ผ๋ก ๋ฐํ๋ ์ ์์ต๋๋ค.
3. ์ค์๊ฐ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์
์คํ๋ง MVC๋ WebSocket๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ค์๊ฐ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. WebSocket์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์๋ฐฉํฅ ํต์ ์ ์ง์ํ๋ ํ๋กํ ์ฝ๋ก, ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค. ์คํ๋ง MVC๋ WebSocket์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ค์ ๊ณผ API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ปจํธ๋กค๋ฌ๋ WebSocket ์ฐ๊ฒฐ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๋ฉ์์ง๋ฅผ ์ก์์ ํ๋ฉฐ, ํด๋ผ์ด์ธํธ์์ ์ํธ์์ฉ์ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ์๋น์ค ๋ ์ด์ด์ ๊ตฌํ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๋ ์ค์๊ฐ์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ๋ ์ ์์ต๋๋ค.
4. ํฌํธ ์ฌ์ดํธ
์คํ๋ง MVC๋ ํฌํธ ์ฌ์ดํธ์ ๊ฐ๋ฐ์๋ ์ ์ฉํ๊ฒ ํ์ฉ๋ ์ ์์ต๋๋ค. ํฌํธ ์ฌ์ดํธ๋ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ์ฌ์ฉ์์๊ฒ ๊ฐ์ธํ๋ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๊ณ , ์ฌ๋ฌ ์๋น์ค์ ๋ํ ํตํฉ ์ ๊ทผ์ ์ ๊ณตํฉ๋๋ค. ์คํ๋ง MVC๋ ์ปจํธ๋กค๋ฌ์ ๋์ ๋ก๋ฉ, ์ฃผ์ ์ปดํฌ๋ํธ์ ์ฌ์ฌ์ฉ, ํ ํ๋ฆฟ ์์ง์ ๋ค์ํ ์ง์ ๋ฑ์ ํตํด ํฌํธ ์ฌ์ดํธ์ ๊ตฌํ์ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์คํ๋ง MVC๋ ๋ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์๋๋ฆฌ์ค์ ์ ์ฐํ๊ฒ ํ์ฉ๋ ์ ์์ผ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ํ์ํ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ค๋๋ค. ์คํ๋ง์ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ๊ฒฐํฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ฑ ๊ฐ๋ ฅํ๊ฒ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
๋๊ธ