ASP.NET MVC4 + NoSQL = Major Awesomness
IoC Container
Vad menas egentligen? public class UserService { UserRepository _repos; public UserService() { _repos = new UserRepository("myConString"); } Går icke att testa eller byta beroende 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 ().When(m => m.GetUser).Return(new User("Pelle")); var service = new UserService(repos);
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 Dina klasser ÄR databasen = all tid läggs på utveckling ps: dokument = tabell KeyValue / Document / Graph
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 Comments { get; set; } }
Bloggexempel - json blogs = [{ "Id": "blogs/1", "Author": "Jonas Gauffin", "Title": "jgauffin's coding den", "Url": " }]; 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." }]
Sharding
RavenDb.ToCode()
ASP.NET MVC4 I detta seminarie: Stöd för mobiler Recepies Bundles Annat nytt: AsyncControllers + Task Senaste Azure SDKn (sep.) Async (ASP.NET 4.5) WebSockets Prestandaförbättringar
ASP.NET MVC Dependency- Resolver ModelMetadata Provider ModelValidator Provider ActionFilter Controller Activator ActionResult Routing VirtualPath Provider Areas Exception Filter
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 o Egen vy-wizard anpassad efter företags design o Controllers som följer företagets mall o Domänmodel/Vymodell utan mappningsverktyg En mer lättviktig integration i Visual Studio o Skapa GUI wizards o Wrappar vanliga VStudio SDKn
Anpassning för mobiler Specifika vyer/layouter för mobiler o Kan anpassa per mobil (User-Agent) o Letar automatiskt efter korrekt vy o (_layout.Mobile.cshtml / Index.Mobile.cshtml) Kan toggle renderingsläge jQuery mobile
K O D
Tack! Jonas Gauffin Sogeti
Länkar RavenDB ASP.NET MVC4 Document Design (NoSQL) Griffin.MvcContrib