Является ли это лучшей практикой для размещения WebApi в качестве отдельного проекта

Я работаю над одностраничным приложением с Web Api и Angular JS. Я хочу взять на себя все лучшие практики для великолепных спа-приложений.

Я хочу знать, что это лучшая практика для размещения проекта Web Api в качестве отдельного проекта или просто включения в один проект вместе с вашим спа.

Спасибо

Ответ 1

Я считаю, что лучше всего иметь SPA в отдельный проект и даже лучше другой репозиторий, поскольку он более гибкий и поддерживает множество различных сценариев разработки/развертывания, особенно по мере увеличения вашего проекта.

Я лично начал с подхода к смешанным файлам и перешел на отдельный подход Репо за несколько дней после того, как проект вышел за рамки примеров Todos.

Некоторые из плюсов отдельных проектов/репозиций:

  • лучший контекст поиска для поиска/замены или goto file/class.
  • меньше файлов на проект/решение, поэтому визуальная студия не сканирует его колени.
  • вы можете использовать разные редакторы, что проще, для вашего проекта в спа-центре, если вы получите лучшую поддержку javascript/ typescript, чем в VS (например, webstorm). Структура файла
  • более читаема в окне проводника небольших решений, так как существует меньше вложенности
  • разные люди могут работать независимо от интерфейса/бэкэнд
  • ваш SPA может иметь собственное управление версиями, и вы можете смешивать и соответствовать версиям FE/BE по мере необходимости
  • более простая непрерывная интеграция, поскольку вы не смешиваете интерфейс/бэкэнд выполнить шаги
  • вы можете решить во время развертывания, если они будут размещены на
    один и тот же хост или разные машины (после включения поддержки CORS)
  • Наконец, это делает ваш SPA первоклассным гражданином, а не просто вложенной папкой вашего веб-сайта.

На противоположной стороне я не могу думать о преимуществах использования SPA в качестве подпапки к WebApi, кроме, может быть, для очень маленьких проектов, которые вы хотите свести к минимуму сложности.

Ответ 2

Мне проще включить SPA в проект WebAPI. Я всегда добавляю код SPA в отдельную папку (я всегда называю это "приложением" ) и сообщаю WebAPI загружать файл "index.html" в эту папку, когда вы нажимаете на корневой URL вашего сайта WebAPI. Для обслуживания статических файлов я использую OWIN с плагинами FileSystems и StaticFiles.

Я знаю, вопрос не был "как" реализовать его, но это может быть полезно для вас, если вы решите использовать OWIN. Этот фрагмент кода сообщает OWIN (таким образом, WebAPI), где искать "index.html" и статические (CSS, JS...) файлы)

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")
});