В текущем проекте, над которым я работаю, мы разрабатываем продукт, который в конечном итоге будет использоваться на различных клиентских сайтах.На данный момент все сделано так, что весь код для всех клиентов включен в одно решение, в настоящее время существует всего около 5 клиентов, так что его можно контролировать, но я бы хотел реорганизовать это, чтобы мы могли убрать эти битык конкретным областям клиента.
Что касается фактических сборок для различных клиентов, я думаю, что мы можем легко добиться чего-то гибкого, используя MEF или IOC.
Область, в которой я не уверен, это веб-сторонавещи.Каждый текущий клиент имеет свою собственную главную страницу, и эти главные страницы довольно радикально отличаются, за исключением того, что они имеют одинаковые области содержимого, и, вероятно, настройка не может быть просто достигнута простым CSS.
Есть ли способ иметь "базовую" мастер-страницу, которая обычно используется, и затем, если мы хотим развернуть ее на клиенте А, мы можем просто каким-то образом внедрить клиент как главную страницу.В настоящее время это обрабатывается всеми страницами содержимого, ссылающимися на Master.master как их главную страницу, и затем существует универсальный Master.master, при развертывании на клиенте A мы переименовываем Master.master во что-то и переименовываем специально настроенную главную страницу для клиентаA (ClientA.master) для Master.master и развертывания.
Недостатком всего этого является то, что все главные страницы хранятся в одном веб-проекте, что выглядит немного неправильно, если мы пытаемсяперейдите в главную ветвь, независимую от клиента, и если другие главные страницы не будут удалены как часть развертывания, клиент получит их копию на своем сервере, даже если они не используются, и желательно, чтобы у нас не было одного клиентавозможность переключиться на просмотр других клиентов и т. д. (не то чтобы это обеспечило безопасность)