Asp net mvc4_no_sql

Post on 27-Jan-2015

119 views 4 download

Tags:

description

Min presentation från Sogeti Inspiration Day gällande ASP.NET MVC4 och RavenDb

transcript

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;    }}

//prodvar repos = new UserRepos("ConStr");var service = new UserService(repos);var user =service.Create("Jonas", "Gauffin");

//testvar repos = Mock.Create<IUserRepos>()                      .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ågoroch 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<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." }]}]

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

ModelMetadataProvider

ModelValidatorProvider

ActionFilterControllerActivator

ActionResult

Routing

VirtualPathProvider

AreasException

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 MVCo Egen vy-wizard anpassad efter företags designo Controllers som följer företagets mallo Domänmodel/Vymodell utan mappningsverktyg

• En mer lättviktig integration i Visual Studioo Skapa GUI wizardso Wrappar vanliga VStudio SDKn

Anpassning för mobiler

• Specifika vyer/layouter för mobilero Kan anpassa per mobil (User-Agent)o Letar automatiskt efter korrekt vyo (_layout.Mobile.cshtml / Index.Mobile.cshtml)

• Kan toggle renderingsläge• jQuery mobile

K O D

Tack!

Jonas GauffinSogeti

jonas.gauffin@sogeti.sehttp://blog.gauffin.org

Länkar

RavenDBhttp://ravendb.net

ASP.NET MVC4http://bit.ly/tXk6bR 

Document Design (NoSQL)http://bit.ly/tn32IU 

Griffin.MvcContribhttp://bit.ly/tv6o6J