Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11



Podobne dokumenty
ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

ASP.NET MVC. Autor wykładu: Marek Wojciechowski

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Walidacja danych w ASP.NET MVC

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

WYKORZYSTANIE WZORCA MVC W ASP.NET

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Nowy projekt: - ASP.NET MVC 3 Web Application - [Other Languages] Visual C# Web ASP.NET MVC 3 Web Application - okno dialogowe:

ASP.NET MVC. Uwierzytelnianie i routing. Zaawansowane programowanie internetowe Instrukcja nr 6

Realizacja Aplikacji Internetowych 2012 laboratorium K. M. Ocetkiewicz

Microsoft.NET: ASP.NET MVC + Entity Framework (Model First)

Programowanie zorientowane obiektowo. Mateusz Kołecki

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Technologie internetowe ASP.NET Core. Paweł Rajba

Realizacja Aplikacji Internetowych 2013 laboratorium K. M. Ocetkiewicz

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Laboratorium nr 3 Podstawy Ruby on Rails

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

4 AS SP.NET MVC. Widok. Zaawansowane programowanie internetowe Instrukcja nr 4

Programowanie w Ruby

MVC w praktyce tworzymy system artykułów. cz. 1

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Programowanie w Ruby

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Walidacja po stronie serwera Walidacja po stronie klienta:

Różne podejścia do projektowania aplikacji internetowych

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2017

VISUAL STUDIO 2008 I.NET 3.5 NOWOŚCI. Bartłomiej Filipek

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Programowanie obiektowe

Specyfikacja implementacyjna aplikacji serwerowej

Zaawansowane aplikacje internetowe laboratorium REST

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Systemy internetowe ASP.NET mgr inż. Andrzej Sobecki

Integracja Comarch e-sprawozdania

Wstęp. Ale po co? Implementacja

CouchDB. Michał Nowikowski


Wzorce logiki dziedziny

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

Tworzenie aplikacji internetowych w technologii ASP.NET MVC i JavaSerwer Faces

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Programowanie w Ruby

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Ruby i Ruby on Rails. Mateusz Drożdżyński

Projekt: Mikro zaprogramowane na sukces!

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Kurs rozszerzony języka Python

Programowanie obiektowe

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

JAVA NA SERWERZE SPRING. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Wzorce prezentacji internetowych

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Platforma.NET Wykład 12 Model widok i kontroler Model View Controller

Platforma.NET Wykład 12 Model widok i kontroler Model View Controller. Spis treści. Plan wykładu spotkania tydzień po tygodniu

PHP: bazy danych, SQL, AJAX i JSON

Leszek Stasiak Zastosowanie technologii LINQ w

REFERAT O PRACY DYPLOMOWEJ

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Laboratorium 6 Tworzenie bloga w Zend Framework

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Jak widzisz w powyższym przykładzie, mimo że operacja nie powiodła się (otrzymaliśmy status Błąd ), serwer zwrócił nam kod 200 OK.

Podstawy i języki programowania

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Przewodnik krok po kroku:

REFERAT O PRACY DYPLOMOWEJ

5 AS SP.NET MVC. Walidacja danych. Zaawansowane programowanie internetowe Instrukcja nr 5

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

Studia podyplomowe. Programowanie na platformie Microsoft Visual Studio.NET

KARTA PRZEDMIOTU. Warsztaty z Ruby on Rails. Ruby on Rails Workshop

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi.

Wybrane działy Informatyki Stosowanej

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Instrukcja laboratoryjna

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

akademia androida Składowanie danych część VI

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

Transkrypt:

Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11

Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2

Czym jest ASP.NET MVC? 3

ASP.NET MVC Framework do pisania aplikacji WWW C# lub Visual Basic po stronie serwera HTML & JavaScript po stronie klienta Wzorzec MVC i routing Wydajne pisanie (Visual Studio + ReSharper) Szybkie dodawanie komponentów za pomocą NuGeta 4

Wzorzec MVC 5

Dlaczego MVC? Oddziela logikę biznesową od warstwy prezentacji Pozwala na łatwe mapowanie adresów URL na elementy aplikacji 6

Komunikacja między warstwami Aplikacja WWW 7

[Authorize] public class EventsController : Controller { private readonly DatabaseEntities db = DatabaseProvider.Context; Kontroler Kontroler } [HttpGet] [AllowAnonymous] public ActionResult Details(int id = 0) { var @event = Event.Get(id); return View(@event); } Akcja 8

public static void RegisterRoutes(RouteCollection routes) { routes.ignoreroute("{resource}.axd/{*pathinfo}"); routes.maproute( name: "Users", url: "Users/{login}", defaults: new { controller = "Users", action = "Show" }, constraints: new { httpmethod = new HttpMethodConstraint("Get") } ); Router App_Data/RouteConfig.cs routes.maproute( name: "Details", url: "{controller}/{id}", defaults: new { controller = "Events", action = "Details", id = UrlParameter.Optional }, constraints: new { httpmethod = new HttpMethodConstraint("Get"), id = @"\d+" } ); } routes.maproute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, constraints: new { httpmethod = new HttpMethodConstraint("Get"), id = @"\d+" } ); http://eventscentre.apphb.com/events/details/blabla http://eventscentre.apphb.com/users/keraxel http://eventscentre.apphb.com/events/1 http://eventscentre.apphb.com/events/details/1 9

public partial class Event { public int Id { get; set; } public int UserId { get; set; } public string Content { get; set; } public System.DateTime CreatedAt { get; set; } public Nullable<System.DateTime> ModifiedAt { get; set; } public bool Deleted { get; set; } Model } public virtual IEnumerable<EventComment> EventComments { get; set; } public virtual User User { get; set; } public static Event Get(int id) { Event @event = db.events.find(id); if (@event == null) { throw new HttpException(404, "NotFound"); } return @event; } 10

Widok Łączenie kodu HTML z danymi z modelu Łączenie wielu widoków w jeden dokument HTML: Layout Widok standardowy Widok częściowy (partial) Przekazywanie sekcji pomiędzy widokami Razor vs ASPX 11

@model EventsCentre.ViewModels.Shared.CommentDetailsViewModel Model Widok <div class="well clearfix"> <div class="avatar img-polaroid"> <img src="http://s.gravatar.com/avatar/@model.avatar?d=http://media.tumblr.com/tumblr_lak5phfexz1qzqij q.png" width="80" height="80" alt="avatar"/> </div> <div class="comment"> @Html.DisplayFor(model => model.createdat) @Html.ActionLink(Model.UserName, "Show", "Users", new { login = Model.UserLogin }, null) @if (Model.ModifiedAt!= null) { } <text> Last time modified at </text> Html.DisplayTextFor(model => model.modifiedat); <div class="comment-content"> @Html.DisplayFor(model => model.content) </div> </div> </div> 12

Layout: @RenderSection("scripts", required: false) Widok sekcje Widok potrzebujący dodatkowych skryptów: @section Scripts { @Scripts.Render("~/bundles/jqueryval") @Scripts.Render("~/bundles/jqueryui") @Scripts.Render("~/bundles/datetimepickers") } 13

Dlaczego ASP.NET MVC? Krótkie zestawienie z Ruby on Rails i Zend Framework 14

Porównanie Kryterium ASP.NET MVC Ruby on Rails Zend Framework Język ORM Zapytania do list obiektów C# lub VB (statyczny, silny) Tak, możliwość wyboru Ruby (dynamiczny, silny) Tak, brak wyboru (Active Record) LINQ brak brak Widoki section, partial partial partial Akcje Czytelne Szukanie parametrów za pomocą if PHP (dynamiczny, słaby) Tak, możliwość wyboru Czytelne IDE Visual Studio Aptana? Sublime? NetBeans? Koszt Bezpłatne Visual Studio Express Bezpłatne? Bezpłatne? 15

Baza danych Podstawa aplikacji web 2.0 16

ORM: Mapowanie relacji na obiekty Łączenie danych z wielu tabel w jeden obiekt Operacje CRUD 17

Współpraca z bazami danych ADO.NET Entity Framework: MS SQL Z dodatkowymi konektorami praktycznie każdy RDBMS NHibernate: większość systemów bazodanowych (out-of-box) 18

LINQ to Entities Zapytania LINQ do zmapowanych obiektów Składnia podobna do języka SQL Kompilowane w trakcie pierwszego wykonania 19

private readonly EventsCentreEntities _context = DatabaseProvider.Context; ( ) public void Update(Event model) { if (model == null) { throw new ArgumentNullException("model"); } LINQ to Entities var @event = _context.events.where(e => e.deleted == false).single(e => e.id == model.id); if (@event == null) throw new InvalidOperationException("Event is null value!"); @event.modifiedat = DateTime.Now; @event.deleted = model.deleted; @event.eventtypeid = model.eventtypeid; @event.serieid = model.serieid; @event.name = model.name; @event.description = model.description; @event.address = model.address; } _context.savechanges(); 20

Code First Napisz model i wygeneruj z niego bazę! Kod w całości pisany przez Ciebie Mniejsza kontrola nad bazą danych Doskonałe do szybkiego pisania aplikacji 21

Database First Wygeneruj modele z bazy danych! Wygenerowany kod jest usuwany przy odświeżaniu bazy na szczęście są to klasy partial Osobna kontrola nad bazą danych większa niezawodność Dobre dla systemów o wymaganej dużej niezawodności 22

Jak zacząć? 23

Jak zacząć? Tutoriale: Programowanie na żywo ASP.NET MVC 2: http://channel9.msdn.com/blogs/matthijs/aspnet-mvc-2-basics- Introduction-by-Scott-Hanselman Nowy projekt krok po kroku: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnetmvc4/intro-to-aspnet-mvc-4 Przykładowy projekt ASP.NET MVC: http://nerddinner.codeplex.com/ Hosting: http://studentlive.pl/ http://appharbor.com/ 24

Q&A 25

Kamil Cieślak kamil.cieslak@outlook.com 26