Как я могу структурировать проект ASP.NET для повторного использования
Я нахожусь в процессе разработки веб-приложения, которое будет иметь несколько устанавливаемых модулей, которые обеспечивают различные функциональные возможности. Здесь происходит много общего, и у меня есть 3 библиотеки классов C#, которые, как я знаю, будут удобны в разных проектах.
То, на чем я застрял, - это сам сайт. В идеале я хотел бы создать библиотеку страниц ASP.NET, которую можно повторно использовать в нескольких проектах, но я понимаю, что это невозможно.
Как вы, ребята, структурируете свои проекты веб-сайтов, чтобы страницы можно было повторно использовать в нескольких проектах? Пока единственное решение, которое я нашел, - это создать репозиторий в SVN и ссылаться на него в svn:externals
свойства основного проекта. Это позволяет мне добавлять в этот каталог страницы, которые являются общими для всех веб-сайтов, и я знаю, что смогу использовать это для проверки их в других проектах. Тем не менее, я чувствую, что это немного неуклюже и вызовет проблемы при создании новых проектов (было бы предпринято несколько шагов для создания нового решения, обеспечивающего правильные внешние компоненты).
Есть ли лучшее решение? Как лучше всего использовать общие файлы ASPX для нескольких клиентских проектов? Как вы управляете изменениями против них?
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Большое спасибо Дэвиду за его ответ. Я больше думал об этом и думал, что перечислю некоторые из моих более конкретных идей / проблем. Во-первых, немного больше о проекте (ах). В первую очередь это CMS. Тем не менее, у нас также есть клиенты, которым нужна CRM, и есть также клиенты, которые не хотят ни того, ни другого и хотят создать целую систему с нуля.
В моем оригинальном посте выше я говорил о наличии подкаталогов основного корня (например, cms
), с помощью svn:externals
чтобы облегчить повторный обмен веб-страницами в нескольких проектах. Я начинаю думать, что это единственный способ сделать это. Одна вещь, которая беспокоила меня, была, если URL клиента был:
http://www.shotgunanddribble.com/cms/content.aspx
Тем не менее, я думаю, что я могу использовать Application_BeginRequest
чтобы смягчить ужасные URL-адреса, переписав их в соответствии с конфигурацией сайта клиента. Например, если бы клиент был просто CMS, я мог бы переписать его домен верхнего уровня в /cms/
, То же самое, если бы они были CRM. Если бы они были оба:
http://www.shotgunanddribble.com/
-> /cms/
http://crm.shotgunanddribble.com/
-> /crm/
Есть ли какие-либо недостатки в использовании таких переписываний? Я думаю, что, если у кого-то нет волшебных идей, svn:externals
моя единственная надежда
1 ответ
Фактический код достаточно прост для вставки в другие сборки и наследования от него, но файлы ASPX - это определенно другая история. Как насчет общей библиотеки пользовательских элементов управления, которая содержит большую часть отображаемого содержимого, и каждый проект будет иметь свои собственные страницы, которые в основном просто обрамляют пользовательские элементы управления? Я никогда не пробовал, так что может быть какая-то "ошибка", которую я сейчас просто не представляю.