Най-добри практики за включване на WCF в средно ниво на MVC

Чудех се дали някой е внедрил приложение от 3 нива, използвайки MVC и WCF като средно ниво? Имаше ли някакви проблеми/недостатъци с производителността вместо внедряване на типично средно ниво с помощта на .dll. Представях си средно ниво на WCF, което ще има достъп до DAL (linq към SQL), всякакви съвети/връзки са високо оценени!


person user701236    schedule 03.05.2011    source източник
comment
Средно ниво? Мисля, че може да бъркате MVC с нещо друго.   -  person Etienne de Martel    schedule 03.05.2011


Отговори (2)


Приложение от 3 нива с MVC и WCF обикновено означава:

  • ASP.NET MVC в края на шрифта, където в най-простия сценарий контролерът извиква проксита на WCF услуги.
  • WCF от бек-енд/средно ниво, разкриващ вашата бизнес логика/достъп до данни
  • Сървър на база данни, хостващ вашата база данни

Къде трябва да използвате това? Само когато наистина трябва - имате строги изисквания за че. Това разбира се има огромно въздействие върху производителността, тъй като предният край използва дистанционно повикване за всяка бизнес операция. Отдалеченото повикване може да бъде между процеси на една и съща машина, но най-често към процеса на друг сървър (в друга мрежа). Освен това изисква по-добър дизайн на взаимодействията за намаляване на броя на повикванията до минимум, както и използване на асинхронна комуникация за извикване на множество повиквания едновременно, ако е необходимо.

person Ladislav Mrnka    schedule 03.05.2011

Ако разработвате уеб сайт, който интензивно използва AJAX (на jQuery.ajax например), можете да го внедрите по следния начин:

  • Front-end може да бъде направен по отношение на ASP.NET MVC. Данните за съответните изгледи ще бъдат поискани за AJAX.
  • WCF, публикуван на същия сайт като ASP.NET MVC (вижте тук пример) може да предостави JSON данни за всички AJAX заявки. WCF може да се разглежда като компонент от средно ниво, който реализира бизнес логиката и получава необходимите данни от сървъра на базата данни.

При такава архитектура на приложението ASP.NET MVC ще бъде намален до V (Views) с помощта на главни страници. Могат да се генерират различни изгледи в зависимост от потребителските роли. Моделът и повечето действия на контролера ще бъдат преместени в WCF. Методите на WFC могат да бъдат тествани с модулни тестове, точно толкова добри, колкото действията на контролера. Ако имате нужда от някои други данни като динамично генерирани картини (диаграми например) или динамично генерирани Excel или WinWord файлове, можете да върнете всички данни от методите на WFC точно толкова лесно, колкото можете да направите това от действията на MVC контролера.

При такъв дизайн на вашето приложение не виждам производителност или други недостатъци. И двата изгледа на ASP.NET MVC и WFC имат много възможности за кеширане, които можете да използвате при поискване.

person Oleg    schedule 05.05.2011
comment
Благодаря Олег, това е, което търсих. Казвате, че контролерът ще бъде преместен в WCF. Би ли имало повече смисъл контролерът да изпълнява WCF методите или просто да изпълнява WCF методите? - person user701236; 12.05.2011
comment
@user701236: Извикването на ajax от клиента (JavaScript в уеб браузъра) може директно да извика WCF метод. Струва ми се по-ясно и това е, което използвам самият аз. - person Oleg; 12.05.2011