2012-08-31 12 views
5

Pracuję nad aplikacją internetową, a później planujemy rozwijać i udostępniać jej aplikacje mobilne. Nie jestem bardzo doświadczony, ale tylko na podstawie mojego zrozumienia planuje mieć tę architekturę:Architektura aplikacji z MVC, WCF, EF

  1. MVC przód Project Web, która będzie bezpośrednio komunikować się WCF usług.
  2. Walidacje po stronie serwera zostaną wykonane na modelu MVC przy użyciu adnotacji danych, a następnie dane zostaną przekazane do warstwy WCF. Bezpieczeństwo za pomocą dostawcy członkostwa klienta zostanie również zaimplementowane w MVC.
  3. Warstwa WCF działa również jako warstwa biznesowa. W razie potrzeby komunikuje się z DAL, który jest biblioteką klas.
  4. DAL korzystając EF będą komunikować się z SQL Server *

pytań proszę

  1. jest to Architektura dobry?
  2. czy warto używać WCF jako warstwy biznesowej i warstwy usług?
  3. na której warstwie powinniśmy zaimplementować który pattens?
  4. dla sprawdzania poprawności danych i bezpieczeństwa jest poprawne miejsce MVC?

Dzięki

Edit 5. Czy to dobry dotyczące testowania jednostkowej? czy dla lepszego testowania powinienem wprowadzić pewne zmiany?

Odpowiedz

4

To, co opisujesz, to całkiem nowoczesny i dobry stos serwerów Microsoft.

ASP.net MVC to dobry sposób na to, że jesteś interfejsem WWW. Jeśli zamierzasz korzystać z asp.net MVC, powinieneś również zajrzeć do asp.net webapi (new) dla warstwy biznesowej.

http://www.asp.net/web-api

http://weblogs.asp.net/scottgu/archive/2012/02/23/asp-net-web-api-part-1.aspx

SQL Server i EF są dość standardowe. Inną opcją jest czysty T-SQL, jeśli potrzebujesz najwyższej kontroli i są wygodne z prostym sql.

Jedną z korzyści, którą można uzyskać po oddzieleniu interfejsu WWW (MVC) od warstwy biznesowej (web-api), jest możliwość oddzielenia ról i skalowania niezależnie, nawet jeśli początkowo znajdują się one na tej samej roli/komputerze. Ponadto, kod html/javascript po stronie klienta mógłby wykonywać połączenia w stylu ajaxowym do interfejsu web-api. Z tego powodu chciałbyś "zarejestrować" (config) punkt końcowy serwera web-api. Jeśli przeskalujesz/przesunąłeś to później, nie ma żadnych zmian kodu - kodujesz z czystym rozdziałem od pierwszego dnia.

Urządzenia mobilne (jeśli grube aplikacje) mogą bezpośrednio korzystać z web-api. O ile aplikacja mobilna nie jest hybrydową aplikacją mobilną korzystającą z wbudowanego rozwiązania brower/javascript, to jest to tylko niewielka obudowa dla użytkownika MVC Web UI.

Do testowania można samodzielnie hostować api-api w swoim procesie wiersza poleceń i wyłudzić dane, jeśli jest to wykonalne. Umożliwiłoby to sprawdzenie poprawności interfejsu WWW bez zaplecza.Posiadając warstwę biznesową (wyeksponowaną przez api web), możesz również zweryfikować logikę & (powinna to być większość twojej logiki) niezależnie od interfejsu użytkownika.

+0

Dzięki @byanmac, nie wiedziałem o interfejsie WWW. czy mógłbyś poprowadzić mnie w moim projekcie, gdzie będzie on wyposażony i co będzie zastępował? Proszę, jeśli to możliwe, odpowiedz również na moje inne ponumerowane pytania. – user576510

+1

Zastąpi warstwę środkową WCF. Byłby to punkt końcowy usługi REST, aby można było korzystać z funkcji interfejsu użytkownika interfejsu sieciowego. – bryanmac

+0

dzięki. W jaki sposób będę mógł uzyskać do niego dostęp bezpośrednio dla innych klientów, takich jak aplikacje mobilne, które nie są opracowywane w MVC? Na przykład, czy jest to aplikacja dla andoidów nie w językach macierzystej przeglądarki, takich jak html czy html5? – user576510

Powiązane problemy