Przejście z ASP.NET MVC na SPA+Angular

0

Witam, mam napisaną aplikację w ASP.NET MVC i chciałbym skorzystać z dobrodziejstw jakie daje framework AngularJS, czyli przerobić mojego CRUD'A na SPA(Single Page Application).
Tutaj jawi się pytanie czy moja wizja/idea tego jest poprawna. Pooglądałem trochę tutoriali/webcastów z podstawami Angulara.

Struktrurę takiej aplikacji widzę tak, że jest jakiś widok , np. "Home",w nim mam podefiniowane style i podpinam tam tylko controller z Angulara i inne dyrektywy typu ng-repeat, ng-click=function().. itp
Funkcje które wywołuje są w kontrolerze/rach Angulara w pliku js, mam też servisy(factory),w których obsługuję sobie żądania http. Np pobieranie/zapis danych do bazy przez użycie ApiControlerów (WebAPI).

Na tym etapie w zasadzie mam funkcjonalności takie jakie miałem w zwykłym ASP.NET MVC, w moim CRUDZ'ie - jednym słowem zajebiscie - wszystko to samo umiem już zrobić przy użyciu samego angulara+WebApi. Jednak robiąc coś pierwszy raz i jak na to patrze mam kilka wątpliwości, mianowicie:

  1. Jak działa kwestia widoków, bo na razie moja aplikacja oparta jest na jednym widoku (home/index.html) i tam mam dyrektywy, które podmieniają dane, są przyciski, ale gdy np. chcę mieć przycisk, który przekieruje mnie do strony o całkowicie innym układzie, np z jakiejs listy itemów, do formularza dodawania itemu, co wtedy?? Skoro to ma być SPA, to musi się jakoś dynamicznie przeładować, czyli PartialView odpada? Bo zmienia się cała strona, tak?
    Z tego co widziałem na poluralsight koleś miał jeden wielki widok .cshtml ponad 200 linii kodu(1plik), a w nim układ dla listy itemów, strony dodawania przedmiotu, i inne.. Jak to ma działać? Np. chce mieć button, którzy przekieruje mnie gdzie indziej, to jakoś przez routing się domyślam, ze mogę się przekierować do innego kontrolera wtedy, ale co z widokiem??

  2. Mam mój kontroler WebAPi, z którego pobieram dane z bazy. Normalnie tworzyłem w ASP.NET aplikacje z 3 wartsw( kontrolery,serwisy, repo). Czy tutaj z poziomu ApiController'a, mogę skorzystać z normalnych serwisów, w których mam jakąś logikę biznesową? No bo powiedzmy, ze chce zbudować ViewModel i sprawdzić jakiś warunek - czyli logika biznesowa. Czy to ma być tutaj, czy idea jest taka, że z WebAPi mam zwrócić surowe dane z bazy, i w serwisie angularowym budować viewModel i logikę? Jaka jest poprawna metodyka tutaj?

Może pytania brzmią idiotycznie, ale dopiero się uczę, więc opisałem to łopatologicznie, ale tak by każdy mnie zrozumiał.

1

Ad 1 - przy takim połączeniu za widoki odpowiada Angular, nie robisz żadnych partiali ani w ogóle HTML po stronie serwera. Po prostu aplikacja w Angularze pyta backendu w ASP.NET (konkretnie kontrolerów) o dane.

Ad 2 - jeśli WebAPI zwracałoby tylko dane z bazy, to jaki w ogóle byłby sens jego istnienia? WebAPI opakowuje logikę biznesową i wystawia ją na świat w postaci API, z którego możesz korzystać w różnego rodzaju aplikacjach klienckich niezależnie od ich technologii, np. webowej w Angularze czy mobilnej na iOS.

1 użytkowników online, w tym zalogowanych: 0, gości: 1