ja zawsze podzielić API i front-end do oddzielnych projektów z kilku powodów:
Front-end Zależności (jQuery, knockout, kątowe ....) sprawiają, że api cięższe niż to konieczne. Przesiewanie kodu dla typu "Inny" może spowolnić rozwój.
Kontrola źródła może stać się nieco myląca podczas realizacji dwóch funkcjonalnie oddzielnych projektów w ramach jednego projektu. Jeśli zmienisz zarówno interfejs API, jak i witrynę w ramach jednego zatwierdzenia, ale potem chcesz przywrócić jeden z nich do starszej chwili (lub promować je osobno), stanie się to problemem.
Łącząc projekty, należy zaktualizować współdzielone współdzielenia jednocześnie (zaktualizować do nowej wersji .NET?). JEŚLI twój kod interfejsu API ma zależności od zamortyzowanego kodu, uaktualnienie może być trudne, a aktualizacja witryny może zostać wstrzymana (lub odwrotnie).
Jeśli są w ramach tego samego projektu, nie można łatwo opublikować tylko interfejsu API lub interfejsu użytkownika. Normalnie API zostanie zakończone i stabilne na długo przed zakończeniem pracy z wizualnymi aspektami witryny. Nie będziesz chciał wstrzymywać się od ponownego publikowania interfejsu API za każdym razem, gdy wprowadzisz niewielką zmianę witryny.
Posiadanie obu elementów jako tego samego projektu wymagałoby uruchomienia zarówno na tym samym serwerze internetowym (jak iw tej samej puli aplikacji!). Jeśli zamierzasz korzystać z wielu źródeł interfejsu API (zwykle z punktu widzenia API), to nie chcesz, aby API uległo degradacji z powodu żądań do witryny. Dzieje się to w obie strony, jeśli twój interfejs API jest mocno uderzony, nie chcesz, aby Twoja strona przestała reagować.
Ponieważ byłyby one uruchomione w tej samej puli aplikacji, również byłyby uruchamiane jako ten sam użytkownik. Ze względów bezpieczeństwa możesz chcieć, aby pula aplikacji API działała jako oddzielne konto usługi, które ma zintegrowany autowy dostęp do źródła danych. Następnie możesz zablokować konto użytkownika strony internetowej i uniemożliwić dostęp do zasobów zewnętrznych.
Ponieważ szablon webapi MVC zapewnia wszystkie zależności i konfiguracje dla interfejsu użytkownika, logiczne może być ich łączenie, ale tylko dlatego, że ułatwiły to, nie oznacza, że powinno to być zrobione w ten sposób. Zwykle usuwam front-end udostępniony w tym szablonie i przekształcam go w prostą stronę opisującą sposób korzystania z interfejsu API.
W końcu sama MVC koncentruje się na oddzieleniu obaw i czystym rozwoju. Powiedziałbym, że oddzielenie typów projektów jest zgodne z tą logiką.
Dzięki za to. Więc przypuszczam, że ból głowy z różnych punktów końcowych zarówno hostowanych, jak i lokalnych (localhost: 2020 i localhost: 2021) i CORS jest warte oddzielenia obaw, według ciebie? – SB2055
Tak, absolutnie. W miarę wzrostu projektu separacja szybko się opłaci. Dodatkowo, z różnymi punktami końcowymi, twoi konsumenci mogą wybrać, aby przejść bezpośrednio do tego, co chcą (API lub Front-end) bez znajomości drugiego punktu końcowego. – vesuvious
Ponadto, mimo że CORS zawsze jest bólem głowy, pisanie handler'a w webapi jest całkiem proste. Istnieje mnóstwo dokumentacji online do pisania programów obsługi CORS, które umożliwiają określenie dostępu dla niektórych hostów, wszystkich hostów itp. – vesuvious