190 likes | 325 Views
ASP.NET MVC4 + NoSQL. = Major Awesomness. IoC Container. Vad menas egentligen?. public class UserService { IUserRepository _repos; public UserService(IUserRepos repos) { _repos = repos; } } //prod var repos = new UserRepos("ConStr");
E N D
ASP.NET MVC4 + NoSQL = Major Awesomness
Vad menas egentligen? public class UserService { IUserRepository _repos; public UserService(IUserRepos repos) { _repos = repos; } } //prod var repos = new UserRepos("ConStr"); var service = new UserService(repos); var user =service.Create("Jonas", "Gauffin"); //test var repos = Mock.Create<IUserRepos>() .When(m => m.GetUser) .Return(new User("Pelle")); var service = new UserService(repos); public class UserService { UserRepository _repos; public UserService() { _repos = new UserRepository("myConString"); } } Går icke att testa eller byta beroende
ADO.NET • 99% runtime fel • DataSets & DataTables • Databas-specifik kod (både SQL + drivers) Stor del av tiden läggs på SQL-frågor och komma ihåg vad DataSets innehåller
ORM-lager • 99% kompileringsfel • Mycket "magiskt" • Tydliga fel är mycket viktigt Stor del av tiden läggs på mappningarna och tyda felmeddelanden
NoSQL KeyValue / Document / Graph Dina klasser ÄR databasen = all tid läggs på utveckling ps: dokument = tabell
NoSQL - RavenDB • Utvecklad av nhibernate-skaparen • Använder som standard Esent • BSON för lagring • Embedded eller standalone • Sharding • Inbyggd fritextsökning (Lucene.NET) • Transaktioner • Replikering
Bloggexempel - klasser class Blog { public string Id { get; set; } public string Author { get; set; } public string Title { get; set; } public string Url { get; set; } } public class Post { public string Id { get; set; } public Blog Blog { get; set; } public string Title { get; set; } public string[] Tags { get; set; } public List<Comment> Comments { get; set; } }
Bloggexempel - json blogs = [{ "Id": "blogs/1", "Author": "Jonas Gauffin", "Title": "jgauffin's coding den", "Url": "http://blog.gauffin.org" }]; posts = [{ "Id": "posts/1", "BlogId": "blogs/1", "Title": "First post", "Tags": ["code quality", "architecture", "asp.net-mvc"], "Comments": [{ "Title": "Your blog is awsome!", "Comment": "Thank you Jonas! Your blog is my favorite." }] }]
ASP.NET MVC4 • Annat nytt: • AsyncControllers + Task • Senaste Azure SDKn (sep.) • Async (ASP.NET 4.5) • WebSockets • Prestandaförbättringar I detta seminarie: • Stöd för mobiler • Recepies • Bundles
ASP.NET MVC ModelValidator Provider ModelMetadata Provider ActionResult VirtualPath Provider Dependency-Resolver Areas Exception Filter Controller Activator ActionFilter Routing
Bundles För styleheets och scripts • Slår ihop (javascript1.js + .. + javascript32.js = bigfat.js) • Minifierar (STOR blir liten) • Cachar ("cache is king")
Recipies • Förenkla vanligt förekommande uppgifter i MVC • Egen vy-wizard anpassad efter företags design • Controllers som följer företagets mall • Domänmodel/Vymodell utan mappningsverktyg • En mer lättviktig integration i Visual Studio • Skapa GUI wizards • Wrappar vanliga VStudio SDKn
Anpassning för mobiler • Specifika vyer/layouter för mobiler • Kan anpassa per mobil (User-Agent) • Letar automatiskt efter korrekt vy • (_layout.Mobile.cshtml / Index.Mobile.cshtml) • Kan toggle renderingsläge • jQuery mobile
Tack! Jonas Gauffin Sogeti jonas.gauffin@sogeti.se http://blog.gauffin.org
Länkar RavenDB http://ravendb.net ASP.NET MVC4 http://bit.ly/tXk6bR Document Design (NoSQL)http://bit.ly/tn32IU Griffin.MvcContrib http://bit.ly/tv6o6J