Как я могу структурировать проект ASP.NET для повторного использования
-
26-09-2019 - |
Вопрос
Я нахожусь в процессе разработки веб-приложения, который будет иметь несколько установочных модулей, которые обеспечивают различные функциональные возможности. Здесь есть много общих вещей, и у меня есть 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
моя единственная надежда.
Решение
Фактический код достаточно прост, чтобы поставить в другие сборки и наследовать, но файлы ASPX определенно являются другой историей. Как насчет общей библиотеки пользовательских элементов управления, чтобы содержать большую часть содержимого дисплея, и каждый проект будет иметь свои собственные страницы, которые в основном просто имеют элементы управления пользователями? Я никогда не пробовал, поэтому может быть какая-то «чта», что я просто не изображаю прямо сейчас.