Чудех се дали някой е внедрил приложение от 3 нива, използвайки MVC и WCF като средно ниво? Имаше ли някакви проблеми/недостатъци с производителността вместо внедряване на типично средно ниво с помощта на .dll. Представях си средно ниво на WCF, което ще има достъп до DAL (linq към SQL), всякакви съвети/връзки са високо оценени!
Най-добри практики за включване на WCF в средно ниво на MVC
Отговори (2)
Приложение от 3 нива с MVC и WCF обикновено означава:
- ASP.NET MVC в края на шрифта, където в най-простия сценарий контролерът извиква проксита на WCF услуги.
- WCF от бек-енд/средно ниво, разкриващ вашата бизнес логика/достъп до данни
- Сървър на база данни, хостващ вашата база данни
Къде трябва да използвате това? Само когато наистина трябва - имате строги изисквания за че. Това разбира се има огромно въздействие върху производителността, тъй като предният край използва дистанционно повикване за всяка бизнес операция. Отдалеченото повикване може да бъде между процеси на една и съща машина, но най-често към процеса на друг сървър (в друга мрежа). Освен това изисква по-добър дизайн на взаимодействията за намаляване на броя на повикванията до минимум, както и използване на асинхронна комуникация за извикване на множество повиквания едновременно, ако е необходимо.
Ако разработвате уеб сайт, който интензивно използва 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 имат много възможности за кеширане, които можете да използвате при поискване.