У меня есть вопрос о дизайне кода, который мучил меня некоторое время. Видите ли, я занимаюсь рефакторингом своего веб-сайта Cosplay Denmark, сайта, на котором косплееры могут загружать свои изображения в своих костюмах. Оригинальный сайт был сделан на php, Zend MVC, но мой рефакторинг выполняется в ASP.NET MVC 2.
Если взять сайт http://www.cosplaydanmark.dk/Costumes/ (можно переключить на английский в левой колонке (Sprog))
Здесь вы видите список всех аниме, которые есть у нас на сайте с изображениями, мы показываем название, сколько разных персонажей и сколько изображений есть под этим аниме.
http://www.cosplaydanmark.dk/Costumes/Bleach
Если вы нажмете на аниме, вы получите список персонажей в данном аниме, в которых у нас есть изображения, здесь мы показываем имя персонажа, сколько галерей и сколько изображений.
http://www.cosplaydanmark.dk/Costumes/Bleach/Ichigo_Kurosaki/
Если вы нажмете на имя персонажа, вы получите список галерей под данным персонажем в данном аниме. Здесь у нас есть некоторая информация о галерее, например количество изображений.
http://www.cosplaydanmark.dk/Costumes/Bleach/Ichigo_Kurosaki/Admi/< /а>
Если вы нажмете на галерею, вы получите список изображений в галерее.
На данный момент моя база данных выглядит так.
http://sogaard.us/uploades/dbdesign.jpg
Как вы можете себе представить, существует множество разных запросов для создания сайта, на первом сайте мне нужно сделать выборку в таблице «аниме», и для каждого результата мне нужно сделать подсчет выбора символов и галереи.
Мой план по его созданию будет одним из следующих
http://sogaard.us/uploades/objectsetup.jpg
Где IList будет списком ленивой загрузки.
Но я не могу решить, какое решение было бы лучшим для этого, а также есть ли лучший способ сделать это. Мой приоритет — иметь хорошую производительность с минимальной потерей функций и поддержкой кода.
Я использую шаблон обслуживания с репозиторием linq to sql.
Мой дизайн не абсолютен, я готов изменить его, если это может повысить производительность :D
Я надеюсь, что описал свой вопрос достаточно хорошо, чтобы вы поняли, что я имею в виду, но спрашивайте, если я что-то упустил.