{"id":5017,"date":"2011-03-21T21:04:40","date_gmt":"2011-03-21T20:04:40","guid":{"rendered":"http:\/\/www.ziserman.com\/blog\/?p=5017"},"modified":"2011-03-21T21:05:56","modified_gmt":"2011-03-21T20:05:56","slug":"conception-modele-vue-controleur","status":"publish","type":"post","link":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/","title":{"rendered":"Conception Mod\u00e8le &#8211; Vue &#8211; Contr\u00f4leur"},"content":{"rendered":"<p>Je vous propose plusieurs billets, sur la conception logicielle de qualit\u00e9.<\/p>\n<p>Une bonne pratique, quand on veut faire du logiciel de qualit\u00e9, c&rsquo;est de s\u00e9parer les fonctions en \u00ab\u00a0couches\u00a0\u00bb.<\/p>\n<p>Ainsi, on a l&rsquo;habitude, pour un syst\u00e8me de publication web (e-commerce ou autre CMS) de s\u00e9parer les choses en trois couches :<\/p>\n<ol>\n<li>Couche Pr\u00e9sentation<\/li>\n<li>Couche \u00ab\u00a0applicative\u00a0\u00bb<\/li>\n<li>Couche d&rsquo;acc\u00e8s aux donn\u00e9es<\/li>\n<\/ol>\n<p>C&rsquo;est ce qu&rsquo;on appelle le mod\u00e8le MVC : Mod\u00e8le Vue Contr\u00f4leur.<\/p>\n<p>La premi\u00e8re couche est simple \u00e0 d\u00e9finir : c&rsquo;est tout ce qui touche \u00e0 la g\u00e9n\u00e9ration de la page HTML. Normalement, le code HTML doit \u00eatre exclusivement regroup\u00e9 dans cette couche.<\/p>\n<p>Le derni\u00e8re couche est \u00e9galement simple \u00e0 comprendre : elle doit couvrir l&rsquo;ensemble des acc\u00e8s au syst\u00e8me de stockage des donn\u00e9es : la base de donn\u00e9es quoi. Elle regroupe donc, si le syst\u00e8me est bas\u00e9 sur une base de donn\u00e9es relationnelles, l&rsquo;ensemble des acc\u00e8s SQL (il ne doit donc pas y en avoir sur les autres couches).<\/p>\n<p>A partir de ces deux d\u00e9finitions, on peut d\u00e9duire que la couche du milieux contient&#8230; le reste.<\/p>\n<p>L&rsquo;avantage de cette approche :<\/p>\n<p><strong>On ne m\u00e9lange pas tout<strong>. <\/strong><\/strong>Programmer l&rsquo;acc\u00e8s \u00e0 une base de donn\u00e9es, ou programmer une interface HTML, ce n&rsquo;est pas du tout la m\u00eame chose.<\/p>\n<p><strong><strong> <\/strong><\/strong>Normalement, cela doit permettre de faire \u00e9voluer le site plus vite, d&rsquo;am\u00e9liorer sa qualit\u00e9 (moins de bugs).<\/p>\n<p>Je dis normalement, parce qu&rsquo;il faut bien savoir que&#8230; <strong>un mauvais programmeur fera du mauvais travail, quelque soit les r\u00e8gles qu&rsquo;on peut mettre en place<\/strong>.<\/p>\n<p>Autre paradoxe : programmer comme cela, en couche, <strong>cela augmente m\u00e9caniquement la taille du code<\/strong>.<\/p>\n<p>Le programme le plus court sera celui ou vous m\u00e9langez tout&#8230;<\/p>\n<p>Et pourtant, l\u00e0 aussi m\u00e9caniquement, <strong>moins il y a de code, et moins il y a risque de bug<\/strong>.<\/p>\n<p>On est donc \u00e0 la <strong>recherche d&rsquo;un juste milieu<\/strong>.<\/p>\n<p>Bon, ceci dit, personne de vraiment s\u00e9rieux ne remet en cause le mod\u00e8le de ces trois couches.<\/p>\n<p>D&rsquo;ailleurs, la plupart des plate formes e-commerce respectent cette structure : Magento, Prestashop, &#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je vous propose plusieurs billets, sur la conception logicielle de qualit\u00e9. Une bonne pratique, quand on veut faire du logiciel de qualit\u00e9, c&rsquo;est de s\u00e9parer les fonctions en \u00ab\u00a0couches\u00a0\u00bb. Ainsi, on a l&rsquo;habitude, pour un syst\u00e8me de publication web (e-commerce ou autre CMS) de s\u00e9parer les choses en trois couches : Couche Pr\u00e9sentation Couche \u00ab\u00a0applicative\u00a0\u00bb [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[2],"tags":[371,52,189],"class_list":["post-5017","post","type-post","status-publish","format-standard","hentry","category-e-commerce","tag-e-commerce","tag-programmation","tag-systeme-dinformation-e-commerce"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Conception Mod\u00e8le - Vue - Contr\u00f4leur - Ziserman.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Conception Mod\u00e8le - Vue - Contr\u00f4leur - Ziserman.com\" \/>\n<meta property=\"og:description\" content=\"Je vous propose plusieurs billets, sur la conception logicielle de qualit\u00e9. Une bonne pratique, quand on veut faire du logiciel de qualit\u00e9, c&rsquo;est de s\u00e9parer les fonctions en \u00ab\u00a0couches\u00a0\u00bb. Ainsi, on a l&rsquo;habitude, pour un syst\u00e8me de publication web (e-commerce ou autre CMS) de s\u00e9parer les choses en trois couches : Couche Pr\u00e9sentation Couche \u00ab\u00a0applicative\u00a0\u00bb [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/\" \/>\n<meta property=\"og:site_name\" content=\"Ziserman.com\" \/>\n<meta property=\"article:published_time\" content=\"2011-03-21T20:04:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-03-21T20:05:56+00:00\" \/>\n<meta name=\"author\" content=\"Fran\u00e7ois\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ziserman\" \/>\n<meta name=\"twitter:site\" content=\"@ziserman\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fran\u00e7ois\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/\"},\"author\":{\"name\":\"Fran\u00e7ois\",\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/#\\\/schema\\\/person\\\/f9bae013e59005579f4b86f162f89c72\"},\"headline\":\"Conception Mod\u00e8le &#8211; Vue &#8211; Contr\u00f4leur\",\"datePublished\":\"2011-03-21T20:04:40+00:00\",\"dateModified\":\"2011-03-21T20:05:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/\"},\"wordCount\":376,\"commentCount\":8,\"publisher\":{\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/#\\\/schema\\\/person\\\/f9bae013e59005579f4b86f162f89c72\"},\"keywords\":[\"e-commerce\",\"programmation\",\"Syst\u00e8me d'information e-commerce\"],\"articleSection\":[\"e-commerce\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/\",\"url\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/\",\"name\":\"Conception Mod\u00e8le - Vue - Contr\u00f4leur - Ziserman.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/#website\"},\"datePublished\":\"2011-03-21T20:04:40+00:00\",\"dateModified\":\"2011-03-21T20:05:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/2011\\\/03\\\/21\\\/conception-modele-vue-controleur\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Conception Mod\u00e8le &#8211; Vue &#8211; Contr\u00f4leur\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/\",\"name\":\"BLOG E-COMMERCE\",\"description\":\"Fran\u00e7ois Ziserman : entrepreneur, IA et \u00e9b\u00e9nisterie\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/#\\\/schema\\\/person\\\/f9bae013e59005579f4b86f162f89c72\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/#\\\/schema\\\/person\\\/f9bae013e59005579f4b86f162f89c72\",\"name\":\"Fran\u00e7ois\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ba23809fd4de9b5f86f21715fd23efa8331e766f2929dc11d3ae98539ba237b4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ba23809fd4de9b5f86f21715fd23efa8331e766f2929dc11d3ae98539ba237b4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ba23809fd4de9b5f86f21715fd23efa8331e766f2929dc11d3ae98539ba237b4?s=96&d=mm&r=g\",\"caption\":\"Fran\u00e7ois\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ba23809fd4de9b5f86f21715fd23efa8331e766f2929dc11d3ae98539ba237b4?s=96&d=mm&r=g\"},\"url\":\"https:\\\/\\\/www.ziserman.com\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Conception Mod\u00e8le - Vue - Contr\u00f4leur - Ziserman.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/","og_locale":"fr_FR","og_type":"article","og_title":"Conception Mod\u00e8le - Vue - Contr\u00f4leur - Ziserman.com","og_description":"Je vous propose plusieurs billets, sur la conception logicielle de qualit\u00e9. Une bonne pratique, quand on veut faire du logiciel de qualit\u00e9, c&rsquo;est de s\u00e9parer les fonctions en \u00ab\u00a0couches\u00a0\u00bb. Ainsi, on a l&rsquo;habitude, pour un syst\u00e8me de publication web (e-commerce ou autre CMS) de s\u00e9parer les choses en trois couches : Couche Pr\u00e9sentation Couche \u00ab\u00a0applicative\u00a0\u00bb [&hellip;]","og_url":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/","og_site_name":"Ziserman.com","article_published_time":"2011-03-21T20:04:40+00:00","article_modified_time":"2011-03-21T20:05:56+00:00","author":"Fran\u00e7ois","twitter_card":"summary_large_image","twitter_creator":"@ziserman","twitter_site":"@ziserman","twitter_misc":{"\u00c9crit par":"Fran\u00e7ois","Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/#article","isPartOf":{"@id":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/"},"author":{"name":"Fran\u00e7ois","@id":"https:\/\/www.ziserman.com\/blog\/#\/schema\/person\/f9bae013e59005579f4b86f162f89c72"},"headline":"Conception Mod\u00e8le &#8211; Vue &#8211; Contr\u00f4leur","datePublished":"2011-03-21T20:04:40+00:00","dateModified":"2011-03-21T20:05:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/"},"wordCount":376,"commentCount":8,"publisher":{"@id":"https:\/\/www.ziserman.com\/blog\/#\/schema\/person\/f9bae013e59005579f4b86f162f89c72"},"keywords":["e-commerce","programmation","Syst\u00e8me d'information e-commerce"],"articleSection":["e-commerce"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/","url":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/","name":"Conception Mod\u00e8le - Vue - Contr\u00f4leur - Ziserman.com","isPartOf":{"@id":"https:\/\/www.ziserman.com\/blog\/#website"},"datePublished":"2011-03-21T20:04:40+00:00","dateModified":"2011-03-21T20:05:56+00:00","breadcrumb":{"@id":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.ziserman.com\/blog\/2011\/03\/21\/conception-modele-vue-controleur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.ziserman.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Conception Mod\u00e8le &#8211; Vue &#8211; Contr\u00f4leur"}]},{"@type":"WebSite","@id":"https:\/\/www.ziserman.com\/blog\/#website","url":"https:\/\/www.ziserman.com\/blog\/","name":"BLOG E-COMMERCE","description":"Fran\u00e7ois Ziserman : entrepreneur, IA et \u00e9b\u00e9nisterie","publisher":{"@id":"https:\/\/www.ziserman.com\/blog\/#\/schema\/person\/f9bae013e59005579f4b86f162f89c72"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ziserman.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.ziserman.com\/blog\/#\/schema\/person\/f9bae013e59005579f4b86f162f89c72","name":"Fran\u00e7ois","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/ba23809fd4de9b5f86f21715fd23efa8331e766f2929dc11d3ae98539ba237b4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ba23809fd4de9b5f86f21715fd23efa8331e766f2929dc11d3ae98539ba237b4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ba23809fd4de9b5f86f21715fd23efa8331e766f2929dc11d3ae98539ba237b4?s=96&d=mm&r=g","caption":"Fran\u00e7ois"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ba23809fd4de9b5f86f21715fd23efa8331e766f2929dc11d3ae98539ba237b4?s=96&d=mm&r=g"},"url":"https:\/\/www.ziserman.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/posts\/5017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/comments?post=5017"}],"version-history":[{"count":0,"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/posts\/5017\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/media?parent=5017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/categories?post=5017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ziserman.com\/blog\/wp-json\/wp\/v2\/tags?post=5017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}