Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Retours d'expérience : Passage à ASP.net 2

128 views

Published on

Microsoft Open Days 2005 : Retours d'expériences sur ASP.net 2

Published in: Software
  • Be the first to comment

  • Be the first to like this

Retours d'expérience : Passage à ASP.net 2

  1. 1. ASP.net V2 Patrice LamarchePatrice Lamarche http://blogs.labo-dotnet.com/patrice/http://blogs.labo-dotnet.com/patrice/ Retours d’expérience sur la prochaine version d’ASP.net, de VS 2005, C# 2 et VB.net 2
  2. 2. Patrice Lamarche Formateur Labo.net SUPINFOFormateur Labo.net SUPINFO MCAD.netMCAD.net Administrateur CodeS-SourceSAdministrateur CodeS-SourceS Travaille avec Whidbey depuis décembreTravaille avec Whidbey depuis décembre 2003 (participation au programme Alpha2003 (participation au programme Alpha puis Beta)puis Beta)
  3. 3. Abstract Présentation des nouveautés apportéesPrésentation des nouveautés apportées par ASP.net 2 vues avec un œil critiquepar ASP.net 2 vues avec un œil critique Mise en avant des avantages etMise en avant des avantages et inconvénients à prendre en compte avantinconvénients à prendre en compte avant de migrerde migrer
  4. 4. Framework de Pages
  5. 5. Master Page « Template » permettant de définir un« Template » permettant de définir un gabarit graphique à appliquer aux pagesgabarit graphique à appliquer aux pages Attribution statique (Attribut MasterPage,Attribution statique (Attribut MasterPage, web.config)web.config) Attribution dynamique (Evènement OnPreInit)Attribution dynamique (Evènement OnPreInit) <img src=«chemin»<img src=«chemin» runat=«server»runat=«server» />/>
  6. 6. Master Page Permet également de définir des gabaritsPermet également de définir des gabarits en fonction du clienten fonction du client Selon navigateurSelon navigateur Selon périphériqueSelon périphérique
  7. 7. Thèmes, Skins Possibilité de définir des thèmes et desPossibilité de définir des thèmes et des skins pour les sitesskins pour les sites Permet d’appliquer facilement un look auxPermet d’appliquer facilement un look aux contrôles serveurcontrôles serveur Pour bien avoir une séparation de laPour bien avoir une séparation de la présentation et du contenu,présentation et du contenu, privilégier l’utilisation de CSS dansprivilégier l’utilisation de CSS dans un thème par rapport à un skinun thème par rapport à un skin
  8. 8. Localisation Générateur de ressourcesGénérateur de ressources Culture autoCulture auto <asp:localize></asp:localize><asp:localize></asp:localize>
  9. 9. Localisation Web Application ResourcesWeb Application Resources Database ContentDatabase Content GlobalWeb.dllGlobalWeb.dllGlobalWeb.dllGlobalWeb.dll ProductsProducts Products_en-CAProducts_en-CA Products_esProducts_es GlobalWebGlobalWeb binbin Global.asaxGlobal.asax Web.configWeb.config logo.giflogo.gif logo.en-CA.giflogo.en-CA.gif logo.es.giflogo.es.gif Satellite AssembliesSatellite Assemblies enen en-CAen-CA eses GlobalWeb.en.dllGlobalWeb.en.dllGlobalWeb.en.dllGlobalWeb.en.dll GlobalWeb.en-CA.dllGlobalWeb.en-CA.dllGlobalWeb.en-CA.dllGlobalWeb.en-CA.dll GlobalWeb.es.dllGlobalWeb.es.dllGlobalWeb.es.dllGlobalWeb.es.dll list.en-CA.xmllist.en-CA.xml list.es.xmllist.es.xml resourcesresources resourcesresources resourcesresources resourcesresources translatedtranslated filefile contentcontent
  10. 10. Accès aux données
  11. 11. Nouveau DataBinding Basé sur les Data Source Objects (DSO)Basé sur les Data Source Objects (DSO) ObjectDataSourceObjectDataSource XmlDataSourceXmlDataSource SqlDataSource (non limité à SQL Serveur)SqlDataSource (non limité à SQL Serveur) SiteMapDataSourceSiteMapDataSource => Classes qui implémente IDataSource=> Classes qui implémente IDataSource Permet d’avoir un Binding bi-directionnelPermet d’avoir un Binding bi-directionnel
  12. 12. D’une architecture orientée données…
  13. 13. Accès aux données Services IHM Dataset Dataset
  14. 14. SQLDataSource Permet de créer rapidement desPermet de créer rapidement des applications orientées donnéesapplications orientées données Suppression de la DAL ?Suppression de la DAL ? A débattre :A débattre : http://weblogs.asp.net/bleroy/archive/2004/07/http://weblogs.asp.net/bleroy/archive/2004/07/ 12/180921.aspx12/180921.aspx http://pluralsight.com/blogs/fritz/archive/2005/0http://pluralsight.com/blogs/fritz/archive/2005/0 4/05/7204.aspx4/05/7204.aspx
  15. 15. Vers une architecture orientée objets…
  16. 16. ObjectDataSource Accès aux données Services IHM DTO
  17. 17. ObjectDataSource DTO namespace SupinfoProjects.Domain { public class Ecole { private string m_name; private int m_id; public string Name { get { return m_name; } set { m_name = value; }} public int Id { get { return m_id; } set { m_id = value; }} //Obligatoire pour l'ObjectDataSource public Ecole() {} public Ecole(int id, string name) { m_name = name; m_id = id;} } }
  18. 18. Accès aux données espace SupinfoProjects.DAL ublic class EcolesDAO{ public static IList<Ecole> GetAllEcoles(){ List<Ecole> m_schools = new List<Ecole>(); try{ GenericCommand cmdGetEcoles = new GenericCommand(); cmdGetEcoles.CommandText = "getAllEcoles"; SqlDataReader rdEcoles = cmdGetEcoles.ExecuteReader(); if (rdEcoles.HasRows) while (rdEcoles.Read()) m_schools.Add(new Ecole((int)rdEcoles[0], rdEcoles[1].ToString())); rdEcoles.Close(); cmdGetEcoles.Dispose(); } catch (SqlException sqlex) { throw new Exceptions.DataAccessException("ca a plante", sqlex); } catch (Exception){ throw; } return m_schools;
  19. 19. Services namespace SupinfoProjects.BLL public class EcoleFactory { public static IList<Ecole> GetEcoles() { try { return DAL.EcolesDAO.GetAllEcoles(); } catch (DAL.Exceptions.DataAccessException dae) { throw new ServiceException("monmsg", dae); } }
  20. 20. <asp:ObjectDataSource ID="ObjectDataSource2" runat="server"<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" TypeName="SupinfoProjects.BLL.Admin.EcoleFactory" SelectMethod="GetEcoles"TypeName="SupinfoProjects.BLL.Admin.EcoleFactory" SelectMethod="GetEcoles" DataObjectTypeName="SupinfoProjects.Domain.Ecole" >DataObjectTypeName="SupinfoProjects.Domain.Ecole" > <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource2"<asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource2" AutoGenerateColumns="False">AutoGenerateColumns="False"> <Columns><Columns> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /><asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" Visible="False"<asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" Visible="False" />/> <asp:BoundField DataField="Name" HeaderText="Nom de l'école"<asp:BoundField DataField="Name" HeaderText="Nom de l'école" SortExpression="Name" />SortExpression="Name" /> </Columns></Columns> </asp:GridView></asp:GridView> IHM
  21. 21. XMLDataSource Permet de binder des contrôles à partirPermet de binder des contrôles à partir d’un flux XMLd’un flux XML Fichiers XMLFichiers XML Flux RSSFlux RSS Services WebServices Web
  22. 22. Nouveautés d’ASP.net (en vrac)
  23. 23. Cross Page Posting Permet d’effectuer un postback vers unePermet d’effectuer un postback vers une autre pageautre page ASP.net 1.x Postback ASP.net 2 Cross Page Postback
  24. 24. Cross Page Posting Nouvelles problématiques au niveauNouvelles problématiques au niveau de la validation des pagesde la validation des pages
  25. 25. Post-backs Click Submit Init Load State POST Request ResponseProcess Postback DataIPostBackDataHandler, IPostBackEventHandler Load Postback Events Save State PreRender Render Unload
  26. 26. Client CallBack Click Init Load State Process Postback Data Load Callback Event ICallbackEventHandler Script Event Handler Script Callback Trigger Async Request Return result of Callback Unload
  27. 27. Client CallBack 2 possibilités d’utilisation2 possibilités d’utilisation Évènements gérés par le frameworkÉvènements gérés par le framework Gestion manuelle en implémentantGestion manuelle en implémentant ICallbackEventHandlerICallbackEventHandler
  28. 28. Client CallBack Le bouton Précédent ne fonctionne plusLe bouton Précédent ne fonctionne plus Idem pour FavorisIdem pour Favoris Idem ActualiserIdem Actualiser
  29. 29. Le Viewstate Permet de gérer l’ état des pagesPermet de gérer l’ état des pages Pratique et facile à mettre en oeuvrePratique et facile à mettre en oeuvre
  30. 30. ViewState <input type="hidden" name="__VIEWSTATE"<input type="hidden" name="__VIEWSTATE" value="dDwtNjI1NDA1MzYxOztsPF9jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmvalue="dDwtNjI1NDA1MzYxOztsPF9jdGwwOl9jdGwxOkNvbnRlbnQ6TGVm dENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrV2Vla2x5O19jdGwwOl9jddENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrV2Vla2x5O19jdGwwOl9jd GwxOkNvbnRlbnQ6TGGVmdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6YGwxOkNvbnRlbnQ6TGGVmdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y 2hrV2Vla2x5O19jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmdENvbHVtbjpFbWF2hrV2Vla2x5O19jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmdENvbHVtbjpFbWF pbFN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N0bDE6Q29udVmdEpbFN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N0bDE6Q29udVmdE NvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N0GNvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N0G VmdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrV2Vla2x5O19jdGwwOlVmdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrV2Vla2x5O19jdGwwOl 9jdGwxOkNvbnRlbnGVmdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hr9jdGwxOkNvbnRlbnGVmdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hr V2Vla2x5O19jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmdENvbHVtbjpFbWFpbFV2Vla2x5O19jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmdENvbHVtbjpFbWFpbF N1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N0bDE6Q29udQ6TGVmN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N0bDE6Q29udQ6TGVm dENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2NdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N 0bDE6Q29udbDE6Q29udGVmdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE0bDE6Q29udbDE6Q29udGVmdENvbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE 6Y2hrV2Vla2x5O19jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmdENvbHVtbjpFb6Y2hrV2Vla2x5O19jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmdENvbHVtbjpFb WFpbFN1YnNjcmlwdGlvbjE6Y2hrRGlGVmdENvbHVtbjpFbWFpbFN1YnNjcWFpbFN1YnNjcmlwdGlvbjE6Y2hrRGlGVmdENvbHVtbjpFbWFpbFN1YnNjc mlwdGlvbjE6Y2hrV2Vla2x5O19jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmdENvmlwdGlvbjE6Y2hrV2Vla2x5O19jdGwwOl9jdGwxOkNvbnRlbnQ6TGVmdENv bHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N0bDEbHVtbjpFbWFpbFN1YnNjcmlwdGlvbjE6Y2hrRGlhbHk7X2N0bDA6X2N0bDE 6Q29udhbHk7X2N0bDA6X2N0bDE6Q29udGVudDpMZWZ0Q29sdW1uOkV6Q29udhbHk7X2N0bDA6X2N0bDE6Q29udGVudDpMZWZ0Q29sdW1uOkV tYWlsU3Vic2NyaXB0aW9uMTpyYkh0bWw7X2N0bDA6X2N0bDE6Q29udGtYWlsU3Vic2NyaXB0aW9uMTpyYkh0bWw7X2N0bDA6X2N0bDE6Q29udG VudDpMZWZ0Q29sdW1uOkVtYWlsU3Vic2NyaXB0aW9uMTpyYlRleHQ7PjVudDpMZWZ0Q29sdW1uOkVtYWlsU3Vic2NyaXB0aW9uMTpyYlRleHQ7Pj 7H0qER7l4xvHck9nCVEmiS2w2diA==" />7H0qER7l4xvHck9nCVEmiS2w2diA==" />
  31. 31. ControlState Permet d’optimiser le ViewState enPermet d’optimiser le ViewState en affinant le niveau de persistance au niveauaffinant le niveau de persistance au niveau des contrôlesdes contrôles Stocké dans le champ __ViewstateStocké dans le champ __Viewstate
  32. 32. Nouveautés de l’IDE
  33. 33. Diagramme de classes Permet de définir les classes via desPermet de définir les classes via des diagrammesdiagrammes =>Ne permettent pas de concevoir une=>Ne permettent pas de concevoir une applicationapplication =>Ne remplace pas UML=>Ne remplace pas UML =>Nécessite des allers-retours vers le=>Nécessite des allers-retours vers le codecode
  34. 34. Les langages
  35. 35. C# 2 Amélioration des fonctionnalités objetsAmélioration des fonctionnalités objets GeneriquesGeneriques Types nullablesTypes nullables Modification visibilité des accesseurs desModification visibilité des accesseurs des propriétéspropriétés Classes partiellesClasses partielles
  36. 36. VB.net 2 Génériques partiellement supportésGénériques partiellement supportés Types nullables partiellement supportésTypes nullables partiellement supportés Classes partiellesClasses partielles Namespace MyNamespace My Beaucoup de problèmes de stabilité (betaBeaucoup de problèmes de stabilité (beta 2)…2)…
  37. 37. Travailler avec des betas, CTP, etc…
  38. 38. Précautions à prendre Ne pas les installer sur vos machines !Ne pas les installer sur vos machines ! VPCVPC Dual bootDual boot
  39. 39. Problèmes de compatibilité Au niveau du framework .netAu niveau du framework .net VS 2005VS 2005 SQL Server 2005SQL Server 2005 WinFXWinFX Une solution :Une solution : http://channel9.msdn.com/ctpmadness/http://channel9.msdn.com/ctpmadness/
  40. 40. Suggestions, bugs MSDN Product Feedback CenterMSDN Product Feedback Center http://lab.msdn.microsoft.com/productfhttp://lab.msdn.microsoft.com/productf eedback/eedback/
  41. 41. En conclusion Beaucoup de nouveautésBeaucoup de nouveautés Architecture orientée données OUArchitecture orientée données OU Architecture orientée objetsArchitecture orientée objets Beaucoup d’autres choses à découvrir :Beaucoup d’autres choses à découvrir : pages asynchrones, VirtualPathProvider,pages asynchrones, VirtualPathProvider, compilation, personnalisation, webparts,compilation, personnalisation, webparts, fonctionnalités de Team System, etc…fonctionnalités de Team System, etc…
  42. 42. Questions ? Slides sur http://blogs.labo-dotnet.com/patrice/http://blogs.labo-dotnet.com/patrice/

×