Conheça oASP.NET MVC 2<br />Daniel Ferreira<br />MSP | MCP | MCTS | MCPD<br />C.E.S.A.R<br />@dfsdaniel<br />
Agenda<br /><ul><li>Resumo
Slide do obrigado!</li></li></ul><li>Háalgum tempo atrás…<br />ASP.NET<br />Caching<br />Modules<br />Globalization<br />P...
O ASP.NET Hoje!<br />ASP.NET<br />Dynamic Data<br />Presentation<br />ASP.NET<br />WebForms<br />ASP.NET<br />MVC<br />ASP...
WebFormsis great, but options are good…<br />
Master Page<br />Control<br />Control<br />UI<br />Presentation Logic<br />Business Logic<br />Data Access<br />Control<br...
Abstração de controlespodenãoseruma boa idéia…<br />
Controller<br />(Input)<br />Model<br />(Logic)<br />View<br />(Presentation)<br />Separação de interesses!<br />O Padrão ...
Controller<br />Controller<br />Handles input<br />(HTTP requests)<br />Request<br />View<br />View<br />Visually represen...
O ASP.NET MVC Framework<br />Namespace: System.Web.Mvc<br />Um novo template de projeto no Visual Studio<br />Uma nova man...
O ASP.NET MVC Framework<br />Roadmap:<br />Prédaversão 1 VS 2008 (dez/07 a mar/09)<br />Versão 1.0 VS 2008 (mar/09)<br />V...
ASP.NET MVC 2.0<br />
Novidadesda versão 2.0<br />Agrupamentoporáreas in-the-box<br />Data Annotations Validation<br />Templates Helpers HTML<br...
Áreas – Preview 1<br />Partição e agrupamento de funcionalidadesporáreas;<br />Permitemaiormodularidade e separação.<br />...
Áreas – Preview 2<br />Suporte “in-the-box” semnecessidade de múltiplosprojetos<br />“AddArea” Dialog<br />Registro de rot...
Áreas<br />
HTML Helpers<br />Uso de expressões lambda fortemente tipadas por padrão;<br />Visualização do erro em tempo de compilação...
HTML Helpers<br />ou<br />Antes<br />Agora<br />
Templates<br />Permite customizar a exibição dos itens do EditorFor()<br />Não precisa colocar o ID<br />Uso do atributo U...
Templates<br />
DataAnnotationsHTMLHelpers<br />
Validação<br />Suporte nativo para validação através de DataAnnotation<br />Declaração de regras nos ObjectModels<br />Nam...
Classes de Validação<br />
Validação com DataAnnotations<br />public classCustomer<br />{<br />[Required]<br />public stringName{get; set; }<br />[Ra...
Client-side validation<br />Também é possível fazer a validação do lado do cliente de forma mais direta;<br />Intregação d...
HttpPostAttribute<br />Antes:<br />Agora:<br />[AcceptVerbs(HttpVerbs.Post)] <br />publicActionResult Create(Post post) <b...
DefaultValueAttribute<br />Agora as ações podem ter valores default, o que antes só era possível com a implementação de di...
RequireHttpsAttribute<br />Por padrão, as requisições são realizadas com chamadas non-SSL (HTTP)<br />Novo atributo de cla...
Providers<br />ModelMetadata e ModelMetadataProvider<br />A classe ModelMetadataProvider é uma abstração para obter todos ...
Providers<br />ModelValidator Providers<br />Também é possível criar seus próprios providers de validação com mapeamentos ...
Extensibilidade<br />Action<br />Filters<br />Model <br />Binders<br />Controller<br />Builder<br />Controller<br />Factor...
http://www.asp.net/mvc<br />
Open<br />Source!<br />
http://codeplex.com/aspnet<br />
Mindset<br /><ul><li>Nósprecisamos de um controle Repeater!
Nósjá o temos, se chama: laço de foreach.</li></ul>Conversa entre desenvolvedoresda<br />Microsoft, segundorelatadopor Sco...
<ul><li>O ASP.NET MVC é uma nova opçãoparadesenvolvimento web
Upcoming SlideShare
Loading in …5
×

[CLPE] Novidades do Asp.net mvc 2

1,561 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
1,561
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Estimated Time: 2 minutesFor the entire life of ASP.NET it has been seen as a single framework that included both runtime and presentational aspects. This includes core features such as roles and globalization, as well as WebForms features such as master pages and user controls.
  • Estimated Time: 2 minutesWith the release of .NET Framework 3.5 SP1, ASP.NET started being seen as more modular. ASP.NET Core now represents just the runtime aspects of ASP.NET, and ASP.NET WebForms is simply a presentation option that sits on top of that runtime. With this, it becomes possible to introduce other presentation layer implementations on top of ASP.NET, such as the new ASP.NET MVC framework.While many who are beginning to investigate into ASP.NET MVC think that it is the replacement for WebForms, as you can see, it is simply another option for developing web applications using the ASP.NET runtime.
  • Estimated Time: 1 minuteWebForms has been the only option on the ASP.NET stack and provides a mature product that has proven successful for lots of developers. But it does have some weaknesses.
  • Estimated Time: 2 minutesThe level of abstraction that WebForms provides has a lot of benefits to it, but it doesn’t provide any framework-level guidance in terms of what should do what and when. Between your pages, master pages, user controls, server controls, and custom controls, you can end up with a mixture of HTML, data access code, and business logic.There are certainly methodologies/practices that can be employed with WebForms that can remedy that, but it becomes an implementation task of the developer, since the framework doesn’t provide any of that separation/guidance.
  • Estimated Time: 2 minutesThe control abstractions that WebForms provides are very powerful in that they neatly contain all of the UI and business logic needed so you can just place them within a page and go. The adverse side of that is that it can end up hiding complexity that you’d rather have control over. A common problem is viewstate[Advance Animation]. It isn’t viewstate’s fault that things like this can happen, but it can be very easy to consume a control that could end up hurting the performance of your application.In addition, many times the markup rendered by server controls aren’t always ideal and there is little control over that without having to redo its rendering completely.
  • Estimated Time: 2 minutesMVC is a design pattern that stands for Model-View-Controller. What is strives to do is separate the concerns of an application’s presentation layer by assigning specific roles to the three different components.The Controller is responsible for handling all user input. Once input has been received, the Controller will perform any operations/actions it needs to, which might include interacting with the Model.The Model represents the core concern/logic of the application. Once the Controller retrieves some model data and performs any work with the model/etc it needs to it constructs a presentation model that describes the model in terms the View can understand.The View is the visual representation of the model. It presents the model data to the actual user in a way that is meaningful. In a web application, this would typically be HTML.With these three pieces in place, your presentation layer becomes cleanly separated in such a way that each component can be developed/tested independently.
  • [CLPE] Novidades do Asp.net mvc 2

    1. 1. Conheça oASP.NET MVC 2<br />Daniel Ferreira<br />MSP | MCP | MCTS | MCPD<br />C.E.S.A.R<br />@dfsdaniel<br />
    2. 2. Agenda<br /><ul><li>Resumo
    3. 3. Slide do obrigado!</li></li></ul><li>Háalgum tempo atrás…<br />ASP.NET<br />Caching<br />Modules<br />Globalization<br />Pages<br />Controls<br />Master Pages<br />Profile<br />Roles<br />Membership<br />Intrinsics<br />Handlers<br />Etc.<br />Um único framework para<br />desenvolvimento web<br />
    4. 4. O ASP.NET Hoje!<br />ASP.NET<br />Dynamic Data<br />Presentation<br />ASP.NET<br />WebForms<br />ASP.NET<br />MVC<br />ASP.NET<br />Core<br />Runtime<br />
    5. 5. WebFormsis great, but options are good…<br />
    6. 6. Master Page<br />Control<br />Control<br />UI<br />Presentation Logic<br />Business Logic<br />Data Access<br />Control<br />Control<br />Page<br />Control<br />Control<br />Control<br />Control<br />Quemfaz o que?<br />Como e quando?<br />Semdivisão de responsabilidades<br />
    7. 7. Abstração de controlespodenãoseruma boa idéia…<br />
    8. 8. Controller<br />(Input)<br />Model<br />(Logic)<br />View<br />(Presentation)<br />Separação de interesses!<br />O Padrão MVC<br />
    9. 9. Controller<br />Controller<br />Handles input<br />(HTTP requests)<br />Request<br />View<br />View<br />Visually represents<br />the model<br />Response<br />Por outro ângulo…<br />
    10. 10. O ASP.NET MVC Framework<br />Namespace: System.Web.Mvc<br />Um novo template de projeto no Visual Studio<br />Uma nova maneira de desenvolver com ASP.NET<br />Não é uma nova versão dos webforms<br />Foco na arquitetura do projeto<br />
    11. 11. O ASP.NET MVC Framework<br />Roadmap:<br />Prédaversão 1 VS 2008 (dez/07 a mar/09)<br />Versão 1.0 VS 2008 (mar/09)<br />Versão 1.1 VS 2010 beta 1 (jun/09)<br />Prédaversão 2 VS 2008 e VS 2010 (jul/09)<br />Versão 2 VS 2008 e VS 2010 (primeirotrimestre de 2010)<br />
    12. 12. ASP.NET MVC 2.0<br />
    13. 13. Novidadesda versão 2.0<br />Agrupamentoporáreas in-the-box<br />Data Annotations Validation<br />Templates Helpers HTML<br />HttpPostAttribute<br />Adição do DefaultValueAttribute<br />Client-side validation<br />RequireHttpsAttribute<br />Model Validation Providers<br />Metadata Providers<br />
    14. 14. Áreas – Preview 1<br />Partição e agrupamento de funcionalidadesporáreas;<br />Permitemaiormodularidade e separação.<br />Suporte nativo a URLs mais simpáticas:<br />“/Area1/Controlador1” ou“/Area2/Controlador1”<br />14<br />
    15. 15. Áreas – Preview 2<br />Suporte “in-the-box” semnecessidade de múltiplosprojetos<br />“AddArea” Dialog<br />Registro de rota dinamicamente (AreaRegistration.cs)<br />15<br />
    16. 16. Áreas<br />
    17. 17. HTML Helpers<br />Uso de expressões lambda fortemente tipadas por padrão;<br />Visualização do erro em tempo de compilação;<br />Melhor suporte ao intellisense dentro das views.<br />Preview 1: <br />Html.EditorFor(), Html.LabelFor() e Html.DisplayFor() <br />Preview 2:<br />Html.TextBoxFor(), Html.TextAreaFor(), Html.DropDownListFor(), Html.HiddenFor(), e Html.ValidationMessageFor()<br />
    18. 18. HTML Helpers<br />ou<br />Antes<br />Agora<br />
    19. 19. Templates<br />Permite customizar a exibição dos itens do EditorFor()<br />Não precisa colocar o ID<br />Uso do atributo UIHint no objectmodel<br />Reaproveitamento de código<br />
    20. 20. Templates<br />
    21. 21. DataAnnotationsHTMLHelpers<br />
    22. 22. Validação<br />Suporte nativo para validação através de DataAnnotation<br />Declaração de regras nos ObjectModels<br />Namespace System.ComponentModel.DataAnnotations<br />ValidationAttribute como classe base para criação de atributos de validação personalizados<br />Suporte a outras validações como o CastleValidator, EntLibValidation, etc)<br />
    23. 23. Classes de Validação<br />
    24. 24. Validação com DataAnnotations<br />public classCustomer<br />{<br />[Required]<br />public stringName{get; set; }<br />[Range(1, 120, ErrorMessage="Invalid age")]<br />public intAge{ get; set; }<br />[RegularExpression(@"^(([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5}){1,25})+)*$", ErrorMessage="Invalid email")]<br />public string Email{get; set; }<br />[UIHint("CountryDropDown")]<br />public string Country {get; set;}<br />[DisplayName("Is Active Customer:")]<br />public bool IsActive{get; set; }<br />}<br />
    25. 25. Client-side validation<br />Também é possível fazer a validação do lado do cliente de forma mais direta;<br />Intregação do xVal + DataAnnotations + JQuery<br />Já incluso os plugins de validação do JQuery 1.3.2<br />
    26. 26. HttpPostAttribute<br />Antes:<br />Agora:<br />[AcceptVerbs(HttpVerbs.Post)] <br />publicActionResult Create(Post post) <br />[HttpPost]<br />publicActionResultCreate(Postpost) <br />
    27. 27. DefaultValueAttribute<br />Agora as ações podem ter valores default, o que antes só era possível com a implementação de diferentes rotas:<br />Agora basta declarar antes do atributo<br />routes.MapRoute(<br />"Default", <br />"{controller}/{action}/{id}", <br />new { controller = "Home", action = "Index", id = "" }<br />);<br />publicActionResultCreate([DefaultValueAttribute(5)] int pagina)<br />
    28. 28. RequireHttpsAttribute<br />Por padrão, as requisições são realizadas com chamadas non-SSL (HTTP)<br />Novo atributo de classe RequireHttpsAttributeque permite direcionar as ações dos controllers para requisições HTTP seguras (SSL-Enabled – HTTPS)<br />28<br />
    29. 29. Providers<br />ModelMetadata e ModelMetadataProvider<br />A classe ModelMetadataProvider é uma abstração para obter todos os metadados dentro de uma View. <br />Além do provider padrão do MVC para extrair DataAnnotations, é possível criar seus próprios Metadataproviders.<br />
    30. 30. Providers<br />ModelValidator Providers<br />Também é possível criar seus próprios providers de validação com mapeamentos e regras personalizadas<br />O padrão do MVC também é usando o DataAnnotations.<br />
    31. 31. Extensibilidade<br />Action<br />Filters<br />Model <br />Binders<br />Controller<br />Builder<br />Controller<br />Factory<br />Controller<br />Controller<br />Action<br />Invoker<br />View<br />Engine<br />View<br />Action<br />Result<br />Qualquer parte podesertrocada!<br />
    32. 32. http://www.asp.net/mvc<br />
    33. 33. Open<br />Source!<br />
    34. 34. http://codeplex.com/aspnet<br />
    35. 35. Mindset<br /><ul><li>Nósprecisamos de um controle Repeater!
    36. 36. Nósjá o temos, se chama: laço de foreach.</li></ul>Conversa entre desenvolvedoresda<br />Microsoft, segundorelatadopor Scott<br />Hanselman, do time do MVC.<br />
    37. 37. <ul><li>O ASP.NET MVC é uma nova opçãoparadesenvolvimento web
    38. 38. Estáevoluíndorápido
    39. 39. Separação de responsabilidades
    40. 40. Muitoscontrolesemsuasmãos, use com moderação! </li></ul>Resumindo<br />
    41. 41. Daniel Ferreira<br />dfsdaniel@msn.com<br />

    ×