Как я могу структурировать проект ASP.NET для повторного использования - PullRequest
2 голосов
/ 20 ноября 2010

Я нахожусь в процессе разработки веб-приложения, которое будет иметь несколько устанавливаемых модулей, которые предоставляют различные функциональные возможности. Здесь происходит много общего, и у меня есть 3 библиотеки классов C #, которые, как я знаю, будут удобны в разных проектах.

Бит, на котором я застрял, - это сам сайт. В идеале я хотел бы создать библиотеку страниц ASP.NET , которую можно повторно использовать в нескольких проектах, но я понимаю, что это невозможно.

Как вы, ребята, структурируете свои проекты веб-сайтов, чтобы страницы можно было повторно использовать в нескольких проектах? Пока единственное решение, которое я нашел, - это создать репозиторий в SVN и ссылаться на него в свойствах svn:externals основного проекта. Это позволяет мне добавлять в этот каталог страницы, которые являются общими для всех веб-сайтов, и я знаю, что смогу использовать это для проверки их в других проектах. Тем не менее, я чувствую, что это немного неуклюже и вызовет проблемы при создании новых проектов (было бы предпринято несколько шагов для создания нового решения, обеспечивающего правильные внешние компоненты).

Есть ли лучшее решение? Как лучше всего использовать общие файлы ASPX для нескольких клиентских проектов? Как вы управляете изменениями против них?

Заранее спасибо!

EDIT:

Большое спасибо Дэвиду за его ответ. Я больше думал об этом и решил перечислить некоторые из моих более конкретных идей / проблем. Во-первых, немного больше о проекте (ах). В первую очередь это 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 Ответ

1 голос
/ 20 ноября 2010

Фактический код достаточно легко вставить в другие сборки и наследовать от него, но файлы ASPX - это определенно другая история.Как насчет общей библиотеки пользовательских элементов управления, которая содержит большую часть отображаемого содержимого, и каждый проект будет иметь свои собственные страницы, которые в основном просто обрамляют пользовательские элементы управления?Я никогда не пробовал, так что может быть какая-то "ошибка", которую я сейчас просто не представляю.

...