Mám možnosť sa hrať s WCF službami v ASP.NET MVC projekte. Z MVC som mal po pár projektov v práci zimomriavky na chrbte a Web Forms zostávali u mňa tým skvelým prostriedkom, ako spraviť webovú aplikáciu bez toho, aby som šiel na psychiatriu pre programátorov kvôli neustálemu implementovaniu nejakých rozhraní cez 7 vrstiev enterprise aplikácie.
Musím povedať že ASP.NET MVC vo verzii RC1 je skvelý framework, ktorý umožňuje nevídané testovanie kódu (pri štýle vývoja pre Web Forms to je snáď nemožné).
Píšem si teda projektík, kde je web robený pomocou MVC modelu, vrstvy pre služby a dáta sú definované pomocou rozhraní a využívajú Dependency Injection v podobe Unity Application Block. API webovej aplikácie je dostupné vďaka WCF službe s podporou pre Json formát.
ASP.NET MVC je priamo pripravený na to, že sa v ňom bude používať Dependency Injection. Horšie je to s WCF. Je potrebné si napísať vlastný IInstanceProvider pre konkrétny DI framework. Ja som využil tento návod: Using Unity with a WCF Service, ktorý vychádza z ukážky pre Spring.NET: WCF Service Dependency Injection. Kód sa trochu zväčší, ale môžeme si užívať výhody DI, testovania a pri návrhu API pre Ajax službu nemusíme rozmýšlať nad tým, ako bude vyzerať prístup do databázy. Keď je API vyladené, stačí zmeniť objekty v DI nastaveniach a služba môže fičať s databázou.