Your SlideShare is downloading. ×
0
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Web dev   open door
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Web dev open door

565

Published on

nouveautés ASP.Net 4.5, MVC, WCF Web API, Entity Framework Code First, Nuget

nouveautés ASP.Net 4.5, MVC, WCF Web API, Entity Framework Code First, Nuget

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
565
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/
  • Transcript

    • 1. MVC & nouveautés ASP.NET
    • 2. Où en sommes-nous ? Framework .NET (4.5) ASP.NET Présentation WebForms Dynamic MVC 4 Ajax Web Pages 2 4.5 ? Data
    • 3. Une intro rapide à ASP.Net MVC En WebFoms, la page est le point de départ de votre applicaton En MVC, le code est le point de départ de votre application Quel code ? On reprend les principes REST : L’URL représente ce qu’on veut faire Par exemple /Clients/Affiche/Dupont .. Démo ?
    • 4. Du neuf à tous les étages Dans ASP.NET Core Dans ASP.NET WebForms Dans ASP.NET MVC …
    • 5. ASP.NET CORE
    • 6. Minification et bundles <script src=“Scripts/js"></script> Packaging des scripts <link href="styles/css" rel="stylesheet" /> Packaging des css Ordre : alphabétique + bon sens(js connus placés en tête, ainsi quereset.css et normalize.css)
    • 7. Validation des requêtes La validation des requêtes change dans ASP.Net 4.5 <httpRuntime requestValidationMode="4.5" ... /> Les champs ne sont validés qu’à la première utilisation var s = context.Request.Unvalidated.Form["forum_post"]; Et on peut choisir de ne pas les valider.
    • 8. jQuery, on continue ! Source : trends.builtwith.com
    • 9. ASP.NET WebForms
    • 10. Eval et Bind<ul><asp:Repeater runat="server" ID="clients"><ItemTemplate><li>Nom: <%# Eval("Nom") %><br />Prenom: <%# Eval("Prenom") %><br /></li></ItemTemplate></asp:Repeater></ul><asp:FormView runat="server" ID="editClient"><EditItemTemplate><div><asp:Label runat="server" AssociatedControlID="prenom">Prenom :</asp:Label><asp:TextBox ID="prenom" runat="server" Text=<%# Bind("Prenom") %> /></div><div><asp:Label runat="server" AssociatedControlID="nom">Nom :</asp:Label><asp:TextBox ID="nom" runat="server" Text=<%# Bind("Nom") %> /></div><asp:Button runat="server" CommandName="Update" /></EditItemTemplate></asp:FormView>
    • 11. Item et BindItem<asp:FormView runat="server" ID="editClient" ModelType="ASPNETvNextTest.Model.Client"><EditItemTemplate><div><asp:Label runat="server" AssociatedControlID="prenom">Prenom :</asp:Label><asp:TextBox ID="prenom" runat="server" Text=<%# BindItem.Prenom %> /></div><div><asp:Label runat="server" AssociatedControlID="nom">Nom :</asp:Label><asp:TextBox ID="nom" runat="server" Text=<%# BindItem.Nom %> /></div><asp:Button runat="server" CommandName="Update" /></EditItemTemplate></asp:FormView>
    • 12. Typage des contrôles de binding<asp:GridView ID="categoriesGrid" runat="server"ModelType="WebApplication1.Model.Category" AutoGenerateColumns="false"><Columns><asp:BoundField DataField="CategoryID" HeaderText="ID" /><asp:BoundField DataField="CategoryName" HeaderText="Name" /><asp:BoundField DataField="Description" HeaderText="Description" /><asp:TemplateField HeaderText="# of Products"><ItemTemplate> <%# Item.Products.Count %> </ItemTemplate></asp:TemplateField></Columns></asp:GridView>
    • 13. Datasource : selectMethod<asp:GridView ID="categoriesGrid" runat="server"ModelType="WebApplication1.Model.Category"SelectMethod="GetCategories" AutoGenerateColumns="false"><Columns><asp:BoundField DataField="CategoryID" HeaderText="ID" /><asp:BoundField DataField="CategoryName" HeaderText="Name" /><asp:BoundField DataField="Description" HeaderText="Description" /><asp:TemplateField HeaderText="# of Products"><ItemTemplate> <%# Item.Products.Count %> </ItemTemplate></asp:TemplateField></Columns></asp:GridView>public IQueryable<Category> GetCategories(){var db = new Northwind();return db.Categories.Include(c => c.Products);}
    • 14. Passage de paramètres public IQueryable<Product> GetProducts([QueryString]string keyword) { IQueryable<Product> query = _db.Products; if (!String.IsNullOrWhiteSpace(keyword)) { query = query.Where(p => p.ProductName.Contains(keyword)); } return query; }
    • 15. En vrac… Encodage<asp:TemplateField HeaderText="Name"><ItemTemplate><% #:Item.Products.Name %></ItemTemplate></asp:TemplateField> Unobtrusive Javascript<add name="ValidationSettings:UnobtrusiveValidationMode"value="WebForms" /> AntiXSS<httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4….
    • 16. Extensions
    • 17. WCF Web API[ServiceContract] public class ContactsApi { [WebGet(UriTemplate = "")] public IQueryable<Contact> Get() { var contacts = new List<Contact>() { new Contact {ContactId = 1, Name = "Phil Haack"}, new Contact {ContactId = 2, Name = "HongMei Ge"}, new Contact {ContactId = 3, Name = "Glenn Block"}, new Contact {ContactId = 4, Name = "Howard Dierking"}, new Contact {ContactId = 5, Name = "Jeff Handley"}, new Contact {ContactId = 6, Name = "Yavor Georgiev"} }; return contacts.AsQueryable(); } } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.Add(new ServiceRoute("api/contacts", new HttpServiceHostFactory(), typeof(ContactsApi)));
    • 18. WCF Web API IQueryable permet de passer des requêtes LINQ L’API renvoie au choix XML ou JSON (entête http Accept:) Un client de test est disponiblevar config = new HttpConfiguration() { EnableTestClient = true }; routes.Add(new ServiceRoute("api/contacts", new HttpServiceHostFactory() { Configuration = config}, typeof(ContactsApi)));
    • 19. NuGet
    • 20. Entity Framework « Code First »
    • 21. Allons un peu plus loin ?
    • 22. Scaffolders MVC
    • 23. ASP.NET MVC 4
    • 24. Arrivée des rendus mobiles Trois grandes façons de procéder CSS media queries Vues spécialisées Projets dédiés
    • 25. « adaptive rendering » E.g., on s’appuie sur les CSS Media Queries Pour Optimisé pour le type de navigateur Pas de duplication Contre On ne peut pas vraiment spécialiser la version mobile vs. Desktop Utilisation excessive de la bande passante
    • 26. Rendu côté serveur E.g. les vues sont différentes en fonction du client Pour Flexibilité maximale Efficacité en bande passante Contre On peut avoir de la répétition La détection fine des devices n’est pas triviale
    • 27. Next steps ?
    • 28. En conclusion Microsoft a réussi à décorréler les évolutions d’ASP.Net et de VS Proprement et par projet, grâce à NuGet MVC prend du galon Nettement plus productif tous les ans Doté d’un arsenal pour le dev mobile Epaulé par NuGet / EF / Scaffolders / etc Il y a sur Internet 30 fois plus de WebForms que de MVC Les proportions sont meilleures en entreprise L’investissement de Microsoft dans WebForms est important Adaptation de toutes les nouveautés intéressantes Alors, MVC ou WebForms ? Il est temps de prendre des compétences MVC, même si le cœur de votre activité reste WebForms
    • 29. MERCI !

    ×