Создание отдельных проектов для каждого клиента будет проблематичным в обслуживании, в то время как один проект для всех клиентов может быть сложно настроить. Это тонкая грань, и ваши потребности будут определять, как вы строите свое решение.
Один из моих недавних проектов, в которых мы выполняем SAS (Программное обеспечение как услуга), мы смогли создать наше приложение MVC, используя архитектуру плагинов, так что каждый клиент МОЖЕТ иметь свою собственную DLL, развернутую в BIN, которая позволит настраивать только этот клиент (для представлений, активов или даже контроллеров). Мы можем использовать единую кодовую базу и иметь много клиентов, большинство из которых не имеют настроек, а некоторые имеют незначительные или тяжелые настройки.
У каждого клиента есть уникальный URL для своего «портала», и чаще всего у него есть частные домены, поэтому http://app.mycompany.com или http://mycompanyapp.com, а некоторые даже размещены на нашем собственном сайте, http://hostingcompany.com/client/.
Создавая приложение, которое может определять, на каком клиенте оно основано на URL-адресе, мы смогли с легкостью обработать все эти случаи. При развертывании у нас есть единая база кода (развернутая ОДИН РАЗ в одной папке), и все сайты используют одно и то же развертывание кода.
Мы запустили веб-ферму, где у нас есть много веб-серверов .NET, и у нас есть настройка балансировки нагрузки, и у всех сайтов есть ping-страницы, с которыми наши балансировщики нагрузки взаимодействуют, чтобы определить их работоспособность.
Как я уже сказал, ваши потребности определят, какое для вас наилучшее решение.