{"id":612,"date":"2014-05-24T00:25:50","date_gmt":"2014-05-23T22:25:50","guid":{"rendered":"http:\/\/dev.bratched.fr\/fr\/?p=612"},"modified":"2014-05-24T00:25:50","modified_gmt":"2014-05-23T22:25:50","slug":"mutualisation-du-code-source-dans-les-projets-windows-et-windows-phone","status":"publish","type":"post","link":"https:\/\/bratched.com\/fr\/2014\/05\/24\/mutualisation-du-code-source-dans-les-projets-windows-et-windows-phone\/","title":{"rendered":"Mutualisation du code source dans les projets Windows et Windows Phone"},"content":{"rendered":"<h1>La Portable Class Library (PCL)<\/h1>\n<p>La portable Class library (PCL) va nous permettre de mutualiser une grande partie du code \u00e0 travers projets.<\/p>\n<p>Il est possible depuis quelques ann\u00e9es de\u00a0partager du code PCL entre diff\u00e9rents projets (Sliverlight, WPF, Windows Phone, Windows 8,\u2026).<br \/>\nPlus les projets sont diff\u00e9rents, plus le nombre de classes mutualis\u00e9es diminue.<\/p>\n<p>Il est important de voir que cette Library ne pourra \u00eatre utilis\u00e9e que pour des projets compatibles avec les options choisies.<\/p>\n<p>A noter \u00e9galement que les versions Express de visual studio ne permettent pas de cr\u00e9er une PCL, mais accepte en revanche leur utilisation dans un projet.<\/p>\n<p>Cette Library ne pourra pas non plus utiliser une library qui n\u2019aurait pas \u00e0 minima les m\u00eames options s\u00e9lectionn\u00e9es.<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL_WindowsMenu.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-613\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL_WindowsMenu.png\" alt=\"PCL_WindowsMenu\" width=\"385\" height=\"374\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL_WindowsMenu.png 385w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL_WindowsMenu-300x291.png 300w\" sizes=\"(max-width: 385px) 100vw, 385px\" \/><\/a><\/p>\n<h1>Exemple d\u2019un projet Windows 8 et windows Phone.<\/h1>\n<p>Pour simplifier notre probl\u00e9matique nous allons parler uniquement des 2 plateformes Windows 8 et Windows Phone. Dans cet exemple nous souhaitons mutualiser le code entre ces multiples plateformes (Windows Phone 7, 8, 8.1, Windows 8,&#8230;).<\/p>\n<p><!--more--><\/p>\n<p>Dans une premi\u00e8re approche, un projet utilisant une PCL qui voudrait cibler tous les devices pourrait \u00eatre d\u00e9coup\u00e9 de cette fa\u00e7on<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Sumary.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-616\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Sumary.png\" alt=\"PCL-Sumary\" width=\"1024\" height=\"768\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Sumary.png 1024w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Sumary-300x225.png 300w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Sumary-768x576.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h1>Que peut-on mutualiser\u00a0?<\/h1>\n<ul>\n<li>Les objets (model) et les view-models (dans un projet architectur\u00e9 en M-V-VM)<\/li>\n<li>Les acc\u00e8s aux donn\u00e9es<\/li>\n<li>La partie navigation utilis\u00e9e dans le MVVM<\/li>\n<li>Les ressources\u00a0de type string! Tr\u00e8s utiles dans les projets multilingues!<\/li>\n<\/ul>\n<p>Le retour d\u2019exp\u00e9rience sur un projet de ce type est le suivant. Les pourcentages indiqu\u00e9s repr\u00e9sentent la quantit\u00e9 de travail fourni.<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-614\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP.png\" alt=\"PCL-Project_WP\" width=\"1024\" height=\"768\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP.png 1024w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP-300x225.png 300w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP-768x576.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h1>Mutualisons encore un peu plus !<\/h1>\n<p>Entre plusieurs projets, beaucoup d\u2019\u00e9l\u00e9ments se r\u00e9p\u00e8tent : La gestion d\u2019image en cache, le syst\u00e8me de navigation, des boites de dialogues, la connexion http \/ Json, la bo\u00eete de dialogue A Propos, \u2026<\/p>\n<p>Au fur et \u00e0 mesure de mes d\u00e9veloppements j\u2019ai constitu\u00e9 une biblioth\u00e8que commune entre mes projets et qui s\u2019enrichie \u00e0 chaque nouveau projet. Cette biblioth\u00e8que permet d\u2019\u00e9viter de r\u00e9\u00e9crire du code d\u00e9j\u00e0 \u00e9crit mais surtout fiabilise le nouveau projet avec l\u2019utilisation de code \u00e9prouv\u00e9.<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP_Common.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-615\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP_Common.png\" alt=\"PCL-Project_WP_Common\" width=\"1024\" height=\"768\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP_Common.png 1024w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP_Common-300x225.png 300w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/PCL-Project_WP_Common-768x576.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>La PCL Partag\u00e9e en haut poss\u00e8de \u00e9galement les impl\u00e9mentations pour les plateformes Windows et Windows Phone<\/p>\n<p>Voici par exemple la structure de 2 de mes projets : le projet\u00a0Snowtify et le projet\u00a0Armada (WP).<\/p>\n<p>BratchedTools dans chacun de ces projets correspond \u00e0 la biblioth\u00e8que mutualis\u00e9e.<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/VisualStudioProjects.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-617\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/VisualStudioProjects.png\" alt=\"VisualStudioProjects\" width=\"1200\" height=\"669\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/VisualStudioProjects.png 1200w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/VisualStudioProjects-300x167.png 300w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/VisualStudioProjects-768x428.png 768w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/VisualStudioProjects-1024x571.png 1024w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<p>En mutualisant le code entre projets et entre les diff\u00e9rentes plateformes, vous pouvez ainsi esp\u00e9rer\u00a0r\u00e9duire le temps de votre nouveau\u00a0d\u00e9veloppement d\u2019environ 40% ! et la migration vers une autre plateforme ne vous\u00a0coutera que\u00a030% suppl\u00e9mentaires.<\/p>\n<p>Les Universals Apps, introduit avec Windows Phone 8.1\u00a0vont aller encore plus loin en nous proposant de partager l&rsquo;interface entre Windows 8 et Windows Phone&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La Portable Class Library (PCL) La portable Class library (PCL) va nous permettre de mutualiser une grande partie du code \u00e0 travers projets. Il est possible depuis quelques ann\u00e9es de\u00a0partager du code PCL entre diff\u00e9rents projets (Sliverlight, WPF, Windows Phone, Windows 8,\u2026). Plus les projets sont diff\u00e9rents, plus le nombre de classes mutualis\u00e9es diminue. Il [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63],"tags":[64,65,57,66,60],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/612"}],"collection":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/comments?post=612"}],"version-history":[{"count":0,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/612\/revisions"}],"wp:attachment":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/media?parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/categories?post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/tags?post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}