2015-05-21 17 views
10

Pracuję nad aplikacją Single Page z Web Api i Angular JS. Chcę pobrać najlepsze praktyki dla wspaniałych aplikacji spa.Czy to najlepsza praktyka hostowania WebApi jako osobnego projektu

Chcę wiedzieć, że jest to najlepsza praktyka do obsługi projektu Web Api jako oddzielnego projektu lub po prostu dołącz w jednym projekcie wraz ze spa.

Dzięki

+1

Technicznie nie potrzebuje nawet projektu. Wolę używać sublime zamiast Visual Studio for Angular. –

Odpowiedz

10

wierzę, najlepiej jest mieć w SPA Oddzielny projekt, a jeszcze lepiej inne repozytorium, ponieważ jest bardziej elastyczny i obsługuje wiele różnych scenariuszy rozwoju/wdrażania, szczególnie gdy twój projekt powiększa się.

Osobiście zacząłem od podejścia opartego na mieszanych plikach i przeniosłem się do osobnego podejścia do Repos zaledwie kilka dni po tym, jak projekt przekroczył rozmiary przykładów Todos.

Niektóre z zalet posiadania oddzielnych projektów/repo to:

  • lepszy kontekst wyszukiwania dla wyszukiwania/zamiany lub pliku goto/klasie.
  • mniej plików na projekt/rozwiązanie, więc studio graficzne nie indeksuje się na kolanach pod kątem .
  • możesz użyć różnych edytorów, łatwiej, do twojego projektu spa, jeśli uzyskasz lepszą obsługę skryptów javascript/maszynopisów niż w VS (np. Webstorm).
  • struktura plików jest bardziej czytelny w małym oknie Solution Explorer, ponieważ jest mniej zagnieżdżanie
  • różni ludzie mogą pracować niezależnie od frontend/backend
  • Twój SPA może mieć własne wersjonowanie i można mieszać i dopasowywać Fe/BE wersje jak wymaganej
  • prostsze ciągłej integracji, ponieważ nie mieszać frontend/backend build kroki
  • można zdecydować w momencie wdrażania jeśli mają zamiar być utrzymywana na
    tego samego hosta lub różnych maszyn (po włączeniu Wsparcie CORS)
  • Wreszcie czyni twoje SPA pierwszym obywatelem, a nie tylko podfolderem twojego web api.

Po przeciwnej stronie nie mogę wymyślić żadnej korzyści z posiadania SPA jako podfolderu WebApi z wyjątkiem może dla bardzo małych projektów, które chcesz zachować złożoność do minimum.

+4

+1. Aby dodać jeszcze jeden, w miarę rozwoju możesz mieć więcej klientów do swojego API, a SPA będzie tylko jednym z nich.Tak więc, jak zachować kod iphone/android do oddzielnego kodu, to samo odnosi się do SPA. –

+0

Żałuję, że mam je w tym samym projekcie. Jeśli użyjesz CI/CD do wdrożenia, zacznie się robić bałagan. Powiedzenie projektu, aby używał folderu/app dla deweloperów, a następnie katalogu głównego do przemieszczania/produkcji działa, ale szybko się komplikuje. Przenoszę SPA do własnego projektu. Mogę teraz usunąć wszystkie oprogramowanie pośredniczące OWIN i pozwolić mojemu projektowi WebApi wykonać to, do czego jest on przeznaczony. – trevorc

0

Ułatwiam włączenie SPA do projektu WebAPI. Zawsze umieszczam kod SPA w oddzielnym folderze (zawsze nazywam go "aplikacją") i powiadamam WebAPI, aby załadował plik "index.html" w tym folderze po kliknięciu głównego adresu URL witryny WebAPI. Do obsługi plików statycznych używam OWIN z wtyczkami FileSystems i StaticFiles.

Wiem, pytanie nie było "jak" je wdrożyć, ale może ci się przydać, jeśli zdecydujesz się na użycie OWIN. Kod ten fragment mówi OWIN (zatem WebAPI) gdzie szukać „index.html”, a statyczne (CSS, JS ...) plików)

builder.UseDefaultFiles(new DefaultFilesOptions() 
{ 
    RequestPath = new PathString(), 
    DefaultFileNames = new List<string>() { "index.html" }, 
    FileSystem = new PhysicalFileSystem(@".\app") 
}); 

builder.UseStaticFiles(new StaticFileOptions() 
{ 
    RequestPath = new PathString(), 
    FileSystem = new PhysicalFileSystem(@".\app") 
});