ASP.NET MVC 4 Danijel Malik Artifis Danijel Malik s.p. Twitter: @DanijelMalik Email: danijel@artifis.si Nivo 300
About me • Developer • Developer • Developer • Tech Lead • Developer • Architect…who you? No you’re not!!! • Developer • Developer • Tech Lead…come on…stop it already…you’re a developer!!!! Nivo 300
New features • Bundling/Minification Support • Database Migrations • Mobile Web • Web APIs • Real Time Communication • Asynchronous Support • Works with VS 2010/.NET 4 and built-into VS11 Nivo 300
Bundling and Minification • Improve loading performance of JavaScript and CSS • Reduce # and size of HTTP requests • Works by convention (no configuration required) • Fully customizable and extensible Nivo 300
DEMO Bundling & minification Nivo 300
Razor improvements • Razor now resolves ~/ within all standard HTML attributes • From this: <script src=”@Url.Content(“~/Scripts/Site.js”)”></script> • To this: <script src=”~/Scripts/Site.js”></script> @ Nivo 300
Conditional Attribute Enhancements • From this: @{ string myClass = null; if (someCondition) { myClass = ”shinyFancy”; } } <div @{if (myClass != null) { <text>class=”@myClass”</text> } }>Content</div> Nivo 300
Conditional Attribute Enhancements • To this: @{ string myClass = null; if (someCondition) { myClass = ”shinyFancy”; } } • Will automatically omit attribute name if value is null <div class=”@myClass”>Content</div> Nivo 300
Database Migrations • EF Code First provides a convention-over-configuration based development approach • Migrations == code-oriented approach to evolve DB schema • Code focused • Developer friendly • Can be used to generate SQL change scripts to pass off to a DBA Nivo 300
DEMO Database Migrations Nivo 300
Mobile Web • Adaptive Rendering • Use of CSS Media Queries within default project templates • Display Modes • Selectively adapt views based on devices • Mobile Optimized Templates • jQuery Mobile Nivo 300
Mobile Web Development – A Spectrum Adaptive Display Mobile Rendering Modes Template Nivo 300
DEMO Mobile Web Nivo 300
DEMO Web API Nivo 300
Web API Hosting • Multiple ways to host and expose Web APIs: • Within ASP.NET applications inside IIS, IIS Express, VS Web Server • Self hosted within any custom app (console, Windows Service, etc) • Same programming model • Maximum flexibility Nivo 300
DEMO Web API hosting Nivo 300
Asynchronous Support • Why use async on a server? • Enables more efficient use of threads and server resources • How does it work? • Your controller class yields to ASP.NET when calling a remote resource, allowing the server thread to be re-used while you wait • When remote call returns, controller is re-scheduled to complete • Reduces # of threads running -> increases scalability • Use of async on server is not exposed to browsers/clients • http://myserver.com/products -> same URL can be implemented in ASP.NET using either a synchronous or async controller Nivo 300
Async in MVC Today public class Products : AsyncController { public void IndexAsync() { WebClient wc1 = new WebClient(); AsyncManager.OutstandingOperations.Increment(); wc1.DownloadStringCompleted += (sender, e) => { AsyncManager.Parameters[“result"] = e.Result; AsyncManager.OutstandingOperations.Decrement(); }; wc1.DownloadStringAsync(new Uri("http://www.bing.com/")); } public ActionResult IndexCompleted(string result) { return View(); } } Nivo 300
Async in MVC with VS 11 public class Products : Controller { public async Task<ActionResult> IndexAsync() { WebClient web = new WebClient(); string result = await web.DownloadStringAsync("www.bing.com/"); return View(); } } Nivo 300
VPRAŠANJA? Po zaključku predavanja, prosimo, izpolnite vprašalnik. Vprašalniki bodo poslani na vaš e-naslov, dostopni pa bodo tudi preko profila na spletnem portalu konference www.ntk.si. Najlepša hvala! Nivo 300

ASP.NET MVC 4

  • 1.
    ASP.NET MVC 4 DanijelMalik Artifis Danijel Malik s.p. Twitter: @DanijelMalik Email: danijel@artifis.si Nivo 300
  • 2.
    About me • Developer • Developer • Developer • Tech Lead • Developer • Architect…who you? No you’re not!!! • Developer • Developer • Tech Lead…come on…stop it already…you’re a developer!!!! Nivo 300
  • 3.
    New features • Bundling/Minification Support • Database Migrations • Mobile Web • Web APIs • Real Time Communication • Asynchronous Support • Works with VS 2010/.NET 4 and built-into VS11 Nivo 300
  • 4.
    Bundling and Minification •Improve loading performance of JavaScript and CSS • Reduce # and size of HTTP requests • Works by convention (no configuration required) • Fully customizable and extensible Nivo 300
  • 5.
  • 6.
    Razor improvements • Razornow resolves ~/ within all standard HTML attributes • From this: <script src=”@Url.Content(“~/Scripts/Site.js”)”></script> • To this: <script src=”~/Scripts/Site.js”></script> @ Nivo 300
  • 7.
    Conditional Attribute Enhancements •From this: @{ string myClass = null; if (someCondition) { myClass = ”shinyFancy”; } } <div @{if (myClass != null) { <text>class=”@myClass”</text> } }>Content</div> Nivo 300
  • 8.
    Conditional Attribute Enhancements •To this: @{ string myClass = null; if (someCondition) { myClass = ”shinyFancy”; } } • Will automatically omit attribute name if value is null <div class=”@myClass”>Content</div> Nivo 300
  • 9.
    Database Migrations • EFCode First provides a convention-over-configuration based development approach • Migrations == code-oriented approach to evolve DB schema • Code focused • Developer friendly • Can be used to generate SQL change scripts to pass off to a DBA Nivo 300
  • 10.
  • 11.
    Mobile Web • AdaptiveRendering • Use of CSS Media Queries within default project templates • Display Modes • Selectively adapt views based on devices • Mobile Optimized Templates • jQuery Mobile Nivo 300
  • 12.
    Mobile Web Development– A Spectrum Adaptive Display Mobile Rendering Modes Template Nivo 300
  • 13.
  • 14.
    DEMO Web API Nivo 300
  • 15.
    Web API Hosting •Multiple ways to host and expose Web APIs: • Within ASP.NET applications inside IIS, IIS Express, VS Web Server • Self hosted within any custom app (console, Windows Service, etc) • Same programming model • Maximum flexibility Nivo 300
  • 16.
  • 17.
    Asynchronous Support • Whyuse async on a server? • Enables more efficient use of threads and server resources • How does it work? • Your controller class yields to ASP.NET when calling a remote resource, allowing the server thread to be re-used while you wait • When remote call returns, controller is re-scheduled to complete • Reduces # of threads running -> increases scalability • Use of async on server is not exposed to browsers/clients • http://myserver.com/products -> same URL can be implemented in ASP.NET using either a synchronous or async controller Nivo 300
  • 18.
    Async in MVCToday public class Products : AsyncController { public void IndexAsync() { WebClient wc1 = new WebClient(); AsyncManager.OutstandingOperations.Increment(); wc1.DownloadStringCompleted += (sender, e) => { AsyncManager.Parameters[“result"] = e.Result; AsyncManager.OutstandingOperations.Decrement(); }; wc1.DownloadStringAsync(new Uri("http://www.bing.com/")); } public ActionResult IndexCompleted(string result) { return View(); } } Nivo 300
  • 19.
    Async in MVCwith VS 11 public class Products : Controller { public async Task<ActionResult> IndexAsync() { WebClient web = new WebClient(); string result = await web.DownloadStringAsync("www.bing.com/"); return View(); } } Nivo 300
  • 20.
    VPRAŠANJA? Po zaključku predavanja,prosimo, izpolnite vprašalnik. Vprašalniki bodo poslani na vaš e-naslov, dostopni pa bodo tudi preko profila na spletnem portalu konference www.ntk.si. Najlepša hvala! Nivo 300