{"id":420,"date":"2015-11-18T01:29:46","date_gmt":"2015-11-18T01:29:46","guid":{"rendered":"http:\/\/onlinelab.info\/?p=420"},"modified":"2015-11-18T01:29:46","modified_gmt":"2015-11-18T01:29:46","slug":"mo-hinh-mvc-la-gi","status":"publish","type":"post","link":"https:\/\/www.asianux.org.vn\/index.php\/2015\/11\/18\/mo-hinh-mvc-la-gi\/","title":{"rendered":"M\u00f4 h\u00ecnh MVC l\u00e0 g\u00ec?"},"content":{"rendered":"<p><strong>N\u1ebfu b\u1ea1n l\u00e0 m\u1ed9t l\u1eadp tr\u00ecnh vi\u00ean, nh\u1ea5t l\u00e0 l\u1eadp tr\u00ecnh web, s\u1ebd r\u1ea5t kh\u00f3 \u0111\u1ec3 b\u1ea1n c\u00f3 th\u1ec3 xin \u0111\u01b0\u1ee3c vi\u1ec7c n\u1ebfu kh\u00f4ng bi\u1ebft m\u00f4 h\u00ecnh MVC. Trong post n\u00e0y m\u00ecnh s\u1ebd tr\u00ecnh b\u00e0y \u0111\u1ebfn c\u00e1c b\u1ea1n m\u00f4 h\u00ecnh MVC l\u00e0 g\u00ec theo c\u00e1ch hi\u1ec3u c\u1ee7a m\u00ecnh qua m\u1ed9t v\u00e0i d\u1ef1 \u00e1n s\u1eed d\u1ee5ng MVC?<\/strong><\/p>\n<h2>MVC l\u00e0 g\u00ec?<\/h2>\n<p>MVC l\u00e0 vi\u1ebft t\u1eaft c\u1ee7a Model \u2013 View \u2013 Controller. L\u00e0 m\u1ed9t ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m hay m\u00f4 h\u00ecnh thi\u1ebft k\u1ebf \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong k\u1ef9 thu\u1eadt ph\u1ea7n m\u1ec1m. N\u00f3i cho d\u1ec5 hi\u1ec3u, n\u00f3 l\u00e0 m\u00f4 h\u00ecnh ph\u00e2n b\u1ed1 source code th\u00e0nh 3 ph\u1ea7n, m\u1ed7i th\u00e0nh ph\u1ea7n c\u00f3 m\u1ed9t nhi\u1ec7m v\u1ee5 ri\u00eang bi\u1ec7t v\u00e0 \u0111\u1ed9c l\u1eadp v\u1edbi c\u00e1c th\u00e0nh ph\u1ea7n kh\u00e1c.<\/p>\n<h2>C\u00e1c th\u00e0nh ph\u1ea7n trong MVC<\/h2>\n<h3>Controller<\/h3>\n<p>Gi\u1eef nhi\u1ec7m v\u1ee5 nh\u1eadn \u0111i\u1ec1u h\u01b0\u1edbng c\u00e1c y\u00eau c\u1ea7u t\u1eeb ng\u01b0\u1eddi d\u00f9ng v\u00e0 g\u1ecdi \u0111\u00fang nh\u1eefng ph\u01b0\u01a1ng th\u1ee9c x\u1eed l\u00fd ch\u00fang\u2026 Ch\u1eb3ng h\u1ea1n th\u00e0nh ph\u1ea7n n\u00e0y s\u1ebd nh\u1eadn request t\u1eeb url v\u00e0 form \u0111\u1ec3 thao t\u00e1c tr\u1ef1c ti\u1ebfp v\u1edbi Model.<\/p>\n<h3>Model<\/h3>\n<p>\u0110\u00e2y l\u00e0 th\u00e0nh ph\u1ea7n ch\u1ee9a t\u1ea5t c\u1ea3 c\u00e1c nghi\u1ec7p v\u1ee5 logic, ph\u01b0\u01a1ng th\u1ee9c x\u1eed l\u00fd, truy xu\u1ea5t database, \u0111\u1ed1i t\u01b0\u1ee3ng m\u00f4 t\u1ea3 d\u1eef li\u1ec7u nh\u01b0 c\u00e1c Class, h\u00e0m x\u1eed l\u00fd\u2026<\/p>\n<h3>View<\/h3>\n<p>\u0110\u1ea3m nh\u1eadn vi\u1ec7c hi\u1ec3n th\u1ecb th\u00f4ng tin, t\u01b0\u01a1ng t\u00e1c v\u1edbi ng\u01b0\u1eddi d\u00f9ng, n\u01a1i ch\u1ee9a t\u1ea5t c\u1ea3 c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng GUI nh\u01b0 textbox, images\u2026 Hi\u1ec3u m\u1ed9t c\u00e1ch \u0111\u01a1n gi\u1ea3n, n\u00f3 l\u00e0 t\u1eadp h\u1ee3p c\u00e1c form ho\u1eb7c c\u00e1c file HTML.<\/p>\n<h2>Lu\u1ed3ng \u0111i trong MVC<\/h2>\n<p>\u0110\u1ec3 gi\u1ea3i th\u00edch, m\u00ecnh xin d\u00f9ng 1 v\u00ed d\u1ee5 \u0111\u01a1n gi\u1ea3n + h\u00ecnh minh h\u1ecda sau.<\/p>\n<figure class=\"image\"><img decoding=\"async\" src=\"http:\/\/khoanguyen.me\/assets\/article_images\/2015\/01\/mo-hinh-mvc.jpg\" alt=\"M\u00f4 h\u00ecnh MVC\" title=\"\"><figcaption>M\u00f4 h\u00ecnh MVC<\/figcaption><\/figure>\n<p>Khi c\u00f3 m\u1ed9t y\u00eau c\u1ea7u t\u1eeb ph\u00eda client g\u1eedi \u0111\u1ebfn server, B\u1ed9 ph\u1eadn controller c\u00f3 nhi\u1ec7m v\u1ee5 nh\u1eadn y\u00eau c\u1ea7u, x\u1eed l\u00fd y\u00eau c\u1ea7u \u0111\u00f3. V\u00e0 n\u1ebfu c\u1ea7n, n\u00f3 s\u1ebd g\u1ecdi \u0111\u1ebfn ph\u1ea7n model, v\u1ed1n l\u00e0 b\u1ed9 ph\u1ea7n l\u00e0m vi\u1ec7c v\u1edbi Database..<\/p>\n<p>Sau khi x\u1eed l\u00fd xong, to\u00e0n b\u1ed9 k\u1ebft qu\u1ea3 \u0111\u01b0\u1ee3c \u0111\u1ea9y v\u1ec1 ph\u1ea7n View. T\u1ea1i View, s\u1ebd gen ra m\u00e3 Html t\u1ea1o n\u00ean giao di\u1ec7n, v\u00e0 tr\u1ea3 to\u00e0n b\u1ed9 html v\u1ec1 tr\u00ecnh duy\u1ec7t \u0111\u1ec3 hi\u1ec3n th\u1ecb.<\/p>\n<h2>\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a MVC<\/h2>\n<h3>1. \u01afu \u0111i\u1ec3m<\/h3>\n<p>Th\u1ec3 hi\u1ec7n t\u00ednh chuy\u00ean nghi\u1ec7p trong l\u1eadp tr\u00ecnh, ph\u00e2n t\u00edch thi\u1ebft k\u1ebf. Do \u0111\u01b0\u1ee3c chia th\u00e0nh c\u00e1c th\u00e0nh ph\u1ea7n \u0111\u1ed9c l\u1eadp n\u00ean gi\u00fap ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng nhanh, \u0111\u01a1n gi\u1ea3n, d\u1ec5 n\u00e2ng c\u1ea5p, b\u1ea3o tr\u00ec..<\/p>\n<h3>2. Nh\u01b0\u1ee3c \u0111i\u1ec3m<\/h3>\n<p>\u0110\u1ed1i v\u1edbi d\u1ef1 \u00e1n nh\u1ecf vi\u1ec7c \u00e1p d\u1ee5ng m\u00f4 h\u00ecnh MC g\u00e2y c\u1ed3ng k\u1ec1nh, t\u1ed1n th\u1eddi gian trong qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n. T\u1ed1n th\u1eddi gian trung chuy\u1ec3n d\u1eef li\u1ec7u c\u1ee7a c\u00e1c th\u00e0nh ph\u1ea7n.<\/p>\n<h2>T\u00f3m l\u1ea1i<\/h2>\n<p>\u0110\u1ec3 l\u1eadp tr\u00ecnh chuy\u00ean nghi\u1ec7p, l\u00e0m vi\u1ec7c tr\u1ecdng m\u1ed9t nh\u00f3m nhi\u1ec1u ng\u01b0\u1eddi, vi\u1ec7c \u00e1p d\u1ee5ng m\u00f4 h\u00ecnh trong thi\u1ebft k\u1ebf l\u00e0 \u0111i\u1ec1u b\u1eaft bu\u1ed9c. MVC l\u00e0 m\u1ed9t m\u00f4 h\u00ecnh kh\u00e1 \u0111\u01a1n gi\u1ea3n v\u00e0 th\u00edch h\u1ee3p cho nh\u1eefng ng\u01b0\u1eddi ch\u01b0a nhi\u1ec1u kinh nghi\u1ec7m. Hy v\u1ecdng qua b\u00e0i gi\u1edbi thi\u1ec7u n\u00e0y c\u00e1c b\u1ea1n c\u00f3 nh\u1eefng ki\u1ebfn th\u1ee9c c\u01a1 b\u1ea3n v\u1ec1 m\u00f4 h\u00ecnh thi\u1ebft k\u1ebf trong l\u00e0m ph\u1ea7n m\u1ec1m.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u1ebfu b\u1ea1n l\u00e0 m\u1ed9t l\u1eadp tr\u00ecnh vi\u00ean, nh\u1ea5t l\u00e0 l\u1eadp tr\u00ecnh web, s\u1ebd r\u1ea5t kh\u00f3 \u0111\u1ec3 b\u1ea1n c\u00f3 th\u1ec3 xin \u0111\u01b0\u1ee3c vi\u1ec7c n\u1ebfu kh\u00f4ng bi\u1ebft m\u00f4 h\u00ecnh MVC. Trong post n\u00e0y m\u00ecnh s\u1ebd tr\u00ecnh b\u00e0y&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-420","post","type-post","status-publish","format-standard","hentry","category-programing"],"_links":{"self":[{"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/posts\/420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/comments?post=420"}],"version-history":[{"count":0,"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/posts\/420\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/media?parent=420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/categories?post=420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.asianux.org.vn\/index.php\/wp-json\/wp\/v2\/tags?post=420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}