MVC ํŒจํ„ด

MVC ํŒจํ„ด์ด๋ž€ Model-View-Controller์˜ ์•ž๊ธ€์ž๋งŒ ๋”ฐ์˜จ ์•ฝ์ž๋กœ, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐ์ดํ„ฐ ๋ฐ ๋…ผ๋ฆฌ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.

๋””์ž์ธ ํŒจํ„ด์ด๋ž€? ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์–ด๋–ค ํŠน์ •ํ•œ ๊ฒƒ์„ ๊ฐœ๋ฐœํ•˜๋Š” ์ค‘์— ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ์ ๋“ค์„ ์ •๋ฆฌํ•ด์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ์šฉํ•˜์—ฌ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ •๋ฆฌํ•œ ๊ทœ์•ฝ

ํ•ด๋‹น ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ™”๋ฉด์„ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•จ์— ์žˆ์–ด์„œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ธ ๊ฐ€์ง€ ์—ญํ• ๋กœ ๋‚˜๋ˆ„์–ด ๊ตฌ๋ถ„ํ•œ ๊ฒƒ์ด๋‹ค. ์„ธ ๊ฐ€์ง€ ์—ญํ• ์€

  • ๋ชจ๋ธ(Model) : ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ด€๋ฆฌ
  • ๋ทฐ(View) : ๋ ˆ์ด์•„์›ƒ๊ณผ ํ™”๋ฉด ์ฒ˜๋ฆฌ
  • ์ปจํŠธ๋กค๋Ÿฌ(Controller) : ๋ชจ๋ธ๊ณผ ๋ทฐ๋กœ ๋ช…๋ น์„ ์ „๋‹ฌ ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค

์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์„œ๋กœ์˜ ๊ด€๊ณ„๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์š”์†Œ์— ๋Œ€ํ•ด์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž

๋ชจ๋ธ(Model)

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •๋ณด, ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ƒ์ˆ˜, ์ดˆ๊ธฐํ™”๊ฐ’, ๋ณ€์ˆ˜ ๋“ฑ์„ ๋œปํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์ •๋ณด๋“ค์„ ๊ฐ€๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๊ทœ์น™

  • ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์ง‘ํ•˜๊ธธ ์›ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ
  • ๋ทฐ๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•ด์„œ ์–ด๋–ค ์ •๋ณด๋„ ์•Œ์ง€ ๋ง์•„์•ผ ํ•จ
    • ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‚ด๋ถ€ ์†์„ฑ๊ฐ’์„ ์ง€๋‹ˆ๋ฉด ์•ˆ๋จ
  • ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด, ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„
    • ์ •๋ณด ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด, ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์ „๋‹ฌํ•˜๊ณ , ์ด๋ฅผ ๋ทฐ์—์„œ ์ˆ˜์‹ ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ํ•˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์ด ๋”ฐ๋กœ ์žˆ์–ด์•ผ ํ•จ
    • ๋ชจ๋ธ์€ ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋„ ๋ณ€ํ•˜์ง€ ์•Š์•„์•ผ ํ•จ

๋ทฐ(View)

์‚ฌ์šฉ์ž ui๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์š”์†Œ์ด๋‹ค. ๋ฐ์ดํ„ฐ ๋ฐ ๊ฐ์ฒด์˜ ์ž…๋ ฅ, ์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž๋“ค์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด๋‹ค. ์ฆ‰, ํ‘œ์‹œํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„ ์ถœ๋ ฅํ•œ๋‹ค.

๊ทœ์น™

  • ๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•ด์„œ๋Š” ์•ˆ๋จ
    • ์ž„์˜์˜ ๋ทฐ ๋‚ด๋ถ€์— ์ €์žฅ ๊ธˆ์ง€
  • ๋ชจ๋ธ์ด๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ๊ตฌ์„ฑ์š”์†Œ๋“ค์„ ๋ชฐ๋ผ์•ผ ํ•จ
    • ๋ชจ๋ธ๊ณผ ๊ฐ™์€ ์ž๊ธฐ ์ž์‹ ์„ ์ œ์™ธํ•˜๊ณ  ๋‹ค๋ฅธ ์š”์†Œ๋“ค์˜ ์ฐธ์กฐ๋‚˜ ๋™์ž‘์„ ๋ชจ๋ฆ„
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด ๋‹จ์ˆœํžˆ ํ™”๋ฉด์— ํ‘œ์‹œ๋งŒ ํ•จ
  • ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๊ตฌํ˜„
    • ๋ชจ๋ธ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ๋ณ€๊ฒฝ์„ ์•Œ๋ ค์ค˜์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ตฌํ˜„
    • ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ์„ค๊ณ„

์ปจํŠธ๋กค๋Ÿฌ(Controller)

์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฐ์ดํ„ฐ์™€ ui(์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค) ์š”์†Œ๋“ค์„ ์ž‡๋Š” ๋‹ค๋ฆฌ ์—ญํ• ์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ๋“ค์„ ์ฒ˜๋ฆฌํ•œ๋‹ค

๊ทœ์น™

  • ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•จ
    • ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ๋Š” ์„œ๋กœ ๋ชจ๋ฅด์ฆˆ๋งŒ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๊ทธ ์‚ฌ์ด์— ๋‘˜์„ ๋ชจ๋‘ ์•Œ๊ณ  ์žˆ๋Š” ์ƒํƒœ์—์„œ ๋ณ€๊ฒฝ์„ ์™ธ๋ถ€๋กœ ์•Œ๋ฆฌ๊ฑฐ๋‚˜ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
  • ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์˜ ๋ณ€๊ฒฝ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผํ•จ

์žฅ์ 

์ด๋Ÿฌํ•œ 3๊ฐœ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋‚˜๋ˆ„์–ด ๋™์ž‘ํ•˜๋Š” ์›น ์„œ๋ฒ„์˜ ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ฐ€์ง€๋Š” ์žฅ์ ๋“ค์ด ๋šœ๋ ทํ•˜๋‹ค.

  • ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
    • ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์–ด ์ฝ”๋“œ์˜ ์ˆ˜์ •์ด๋‚˜ ํ™•์žฅ์ด ์šฉ์ดํ•˜๋‹ค
    • ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ง‘์–ด ํ•ด๋‹น ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋จ
  • ๊ฐœ๋ฐœ์˜ ๋ณ‘๋ ฌ์„ฑ ์ฆ๊ฐ€
    • ๋”ฐ๋กœ๋”ฐ๋กœ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ด์„œ ํ˜‘์—…์„ ํ•  ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์˜ ๋ถ„์—…ํ™”๊ฐ€ ์ž˜ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์Œ
  • ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ ๋ฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค
    • ๊ฐ๊ฐ์˜ ์š”์†Œ์— ๋งž์ถ”์–ด ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค
  • ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ
    • mvc ํŒจํ„ด์€ ๊ฐ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์‰ฌ์›€
  • ์ฝ”๋“œ์˜ ๋ช…ํ™•ํ•œ ๊ตฌ์กฐ
    • ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•ด์ง
    • ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ž„
  • ์ค‘๋ณต ์ฝ”๋“œ ๊ฐ์†Œ
    • ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์Œ์œผ๋กœ์จ ์žฌ์‚ฌ์šฉ์ด ์šฉ์ดํ•˜๊ณ  ์ฝ”๋“œ์˜ ์ค‘๋ณต์ด ์‚ฌ๋ผ์ง

์ฐธ์กฐ

https://developer.mozilla.org/ko/docs/Glossary/MVC https://m.blog.naver.com/jhc9639/220967034588