@UniverseElement

Какой должна быть архитектура веб-сервиса работающего одновременно с мобильным приложением и с браузером?

Имею опыт разработки монолитных сервисов на ASP.NET Core MVC (работающих с браузерными клиентами), но с разработкой приложений для смартфонов сталкиваться не приходилось. Знания WEB-API пока поверхностные, а микро-сервисы пилить не приходилось. Намечается проект, в котором потребуется еще и мобильное приложение (видимо на Xamarin), но оно не будет полностью дублировать функционал браузерного клиента.

Было бы замечательно услышать советы тех, кто реализовывал подобные проекты. Какой подход в таком случае использовали, смесь MVC + WEB-API в одном проекте или разделение на микро-сервисы?

Правильно ли я понимаю, что взаимодействие мобильного приложения и веб-сервиса осуществляется посредством обмена данными в JSON-формате через WEB API?

Авторизация на основе кукис в таком случае не годится и нужно использовать токены? Придётся использовать токен-авторизацию в рамках всего проекта или можно/лучше только для мобильной части?

В общем хотелось бы больше ясности на старте и подстелить соломку, чтобы потом кардинально всё не переделывать))
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 3
@mvv-rus
Настоящий админ AD и ненастоящий программист
1. Сразу насчет микросервисов: оно, конечно, стильно-модно-модожежно, но для начала ознакомьтесь со свежим переводом недавней статьи на Хабре "Смерть от тысячи микросервисов" и задумайтесь: а у вас там точно требуется такой уровень гибкости, масштабирования и т.п., что без микросервисов никак. Задуматься стоит IMHO - выбор неоднозначный, и за вас его никто не сделает.
2. Если вы знакомы с MVC и кго контроллерами, то вам будет несложно писать контролеры API на ASP.NET Core в старом добром стиле: традиционно они тоже базируются на инфраструктуре MVC. Там почти та же логика привязки параметров: ну, разве что, там стало автоматическим преобразование объектов на JSON из тела запроса в параметр-объект, но, вроде бы, можно использовать и старый стиль с несколькими параметрами с привязкой их одноименным свойствам объекта. Там используется та же самая маршрутизация по атрибутам - она должна быть вам знакома, если только вы не застряли в legacy времен MVC Framework 4, где была только центральная маршрутизация. Ну а возвращаемые объекты ASP.NET Core сам автоматически преобразует в JSON.
Правда, начиная с ASP.NET 6 появился (а начиная с ASP.NET 7 стал нормально документированым) альтернативный вариант создания API - Minimal API, но раз у вас есть опыт работы с MVC, то наверное, вам лучше остаться с этим старым добрым вариантом.
Насчет формата обмена - вызовов и результатов API - у вас полная свобода, но имейте в виду, что при использовании REST вы получите автоматизированню поддержку описания этих форматов через OpenAPI/Swagger: фронтовики с мобильщиками это оценят.
Делать ли генерацию HTML для браузера на веб-сервере через View по шаблонам Razor или же поручить эту работу фронтовикам, снабжая их данными через API - это предмет выбора, это зависит: как там у вас с квалификацией фронтовых разработчиков, как с требованиями к интерактивности страницы в браузере (MVC этому не способствует, костыли для подключения фронтовых фреймворков у MS, вроде как, есть, но я за них ничего не скажу - не пользовался), не придется ли по соображениям производительности переходить к Server Side Rendering (View - они как раз про это, а если изначально HTML генирился на фронте то перенести его в ASP.NET будет сложно) и т.п.
Авторизацация в ASP.NET Core есть из коробки, самых разных видов: часть уже встроена, для части придется подключать сторонние NuGet-пакеты, но подробности я вам тут не опишу.
А в общем совет у меня такой: собирайте информацию и думайте сами, а попытки копировать "как у других" - они могут привести к совершенно неожиданным результатам: каждая задача в чем-то уникальна.
Ответ написан
Комментировать
petermzg
@petermzg
Самый лучший программист
Rest API
Для авторизации можно как cookies, так и токен, особой разницы нет.
Ответ написан
Комментировать
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы