Spędziłem więc ostatnie godziny, przeglądając wszystkie naprawdę fantastyczne porady dotyczące wersji Web API. Niektóre z moich ulubionych, dla tych, którzy mają tak dobrze jak ja, w przypadkowej kolejności:Strukturyzacja stosu interfejsu Web API dla wersji
Best practices for API versioning?
Versioning REST API of an ASP.NET MVC application
http://www.troyhunt.com/2014/02/your-api-versioning-is-wrong-which-is.html
http://www.pluralsight.com/courses/web-api-design
http://www.pluralsight.com/courses/implementing-restful-aspdotnet-web-api
Tak cała ta rada była bardzo pomocna w projektowaniu co jest zasadniczo "interfejsem" API. Możemy wykonać wywołania API ... Teraz jestem na trudnej stronie.
Jest to aplikacja silnie sterowana danymi, dla firmy z kilkoma produktami (jest to nowa), które wykonują miesięczne wydania. Niektórzy wielcy klienci, którzy będą chcieli długoterminowej obsługi wywołań API, niektórzy mniejsi klienci będą chcieli najnowszych wersji. Możemy sobie z tym poradzić z czymś podobnym do wydań przełomowych/długoterminowych API. Wspaniały.
Ale w praktyce stanie się bardzo brudny, naprawdę szybki. Ciężko pracowaliśmy, aby oddzielić warstwy naszej własnej strony internetowej, beta wewnętrznych/zewnętrznych interfejsów API, warstw repozytorium, a nawet zestawu SDK do rozruchu. Oddzielamy każde wydanie na osobne gałęzie, ale to SAAS - przechowujemy bazę danych. Tak więc nie będziemy w stanie odtwarzać wywołań interfejsu API - ale wszystko poniżej. Logika biznesowa, repozytorium i baza danych. Nie zaczynajmy nawet od testów urządzeń/integracji.
Tak więc, próba i prawdopodobnie niepowodzenie tylko zadać jedno pytanie tutaj.
Czy istnieje przyzwoity wzorzec dla strukturyzowanej, opartej na danych aplikacji .NET do obsługi wielu wersji?
W szczególności, w jaki sposób baza danych ulegnie zmianie i jak można ułożyć ogólny stos do wersji. Kilka pomysłów mam to:
- Aktualizacja stare gałęzie kontrolne źródło stosu i wdrażania te
- utrzymując wszystko w tym samym projekcie, ale korzystać z folderów/przestrzeni nazw całą drogę w dół
- podział projektów kolejnych - więc rozwiązanie API ma wiele projektów "Controller", z podobnymi koncepcjami dla warstw logiki/repo
Mamy sporej ilości programistów i bez względu na to, jak dużo dokumentacji piszę, realistycznie będzie to tylko czytaj, gdy coś nie działa . Idealnym rozwiązaniem dla deweloperów musi być możliwie jak najbardziej oczywiste.