Совет: Плагины MVC / отдельная архитектура виджетов

Я создаю проект с одним основным веб-проектом, который действует как основной пользовательский интерфейс, и несколькими другими веб-проектами, которые действуют как плагины/виджеты для просмотра на основном веб-сайте (часто как часть большей страницы на основном веб-сайте).

Я в основном ищу совета о том, как лучше всего это спроектировать.

Я до сих пор пробовал следующее:

1) один основной веб-проект и отдельный проект для каждого плагина, каждый с отдельным доменом. Затем плагины будут вставлены на основной веб-сайт с помощью iFrame. Проблема, с которой я столкнулся, была с аутентификацией. У меня есть аутентификация с помощью форм в основном проекте, и я не могу заставить плагины читать из одного и того же файла cookie для входа, что означает, что каждый из них требует входа в систему, прежде чем они будут работать. См. этот вопрос, который я задал: Аутентификация в нескольких проектах

Мне также не нравится использовать iFrames.

2) Я пытался использовать RazorGenerator для встраивания представлений, и таким образом они становились частью проекта, поэтому мне не нужно было использовать iFrame или беспокоиться об аутентификации нескольких проектов.

Это казалось хорошим решением, но я не мог найти статический контент.

Я нашел это, которое кажется немного хакерский и это который не работал в различных ситуациях.

Может ли кто-нибудь посоветовать мне, как вы это сделаете, или есть ли способ заставить работать одно из двух вышеупомянутых решений?


person Lex Eichner    schedule 07.05.2017    source источник
comment
Нам действительно нужно больше подробностей о каждой проблеме :( Не могли бы вы поподробнее рассказать о а) вашем коде, б) варианте использования и в) точной ошибке?   -  person paulsm4    schedule 08.05.2017
comment
Я не уверен, какие еще подробности предоставить? Ошибка для статического контента заключается в том, что я понятия не имею, как получить к нему доступ из моего основного проекта. Я могу получить файлы cshtml в свой основной проект с помощью RazorGenerator, но не файлы css или js. Вариант использования?   -  person Lex Eichner    schedule 08.05.2017


Ответы (1)


С вашей точки зрения, я уверен, что вы совершенно ясны. К сожалению, хотя я "концептуально" понимаю, что вы пытаетесь сделать ... я действительно понятия не имею, о каких "технических деталях" я вас не спрашиваю, не говоря уже о том, "что именно идет не так" .

Так что мы в каком-то тупике. Ирония заключается в том, что если бы вы объяснили с тем уровнем детализации, о котором я прошу ... вы, вероятно, сами поняли бы проблему, и вам не нужно было бы спрашивать в первую очередь :(

ПРЕДЛОЖЕНИЯ:

  1. Нет абсолютно ничего плохого в том, чтобы разбить ваше решение на отдельные проекты. На самом деле, это абсолютно ПРАВИЛЬНО - это на самом деле "лучшая практика".

  2. Нет абсолютно ничего плохого в использовании «компонентов» (я использую это слово в «общем» смысле), реализация которых находится за пределами вашего проекта. Это тоже "лучшая практика".

  3. Я склонен помещать все, что связано с пользовательским интерфейсом, в один и тот же проект. Другие подпроекты разделяют приложение на другие функциональные части. Например, для приложения «ABC» у меня есть одно решение и семь проектов:

ABC .sln + CodeGen.EF + ABC.BLL + ABC.DAL + ABC.DB + ABC.Entity + ABC.Web <= "Scripts/", and all my Views, Controllers and View-related Models are here + ABC.Common <= Application-independent stuff goes here

«Надеюсь, это поможет… хотя бы немного…

person paulsm4    schedule 08.05.2017
comment
Итак, в настоящее время я использую RazorGenerator, чтобы сделать два веб-проекта доступными для моего основного веб-проекта. Каждый отдельный модуль (веб-проект) имеет контроллеры, вспомогательные классы, представления, файлы Javascript и таблицы стилей. Используя Razor Generator, у меня есть доступ к представлениям (включая макеты), и, ссылаясь на модули, у меня есть доступ к материалам на стороне сервера. Моя проблема в том, что я не знаю, как получить доступ к CSS и Javascript. - person Lex Eichner; 08.05.2017
comment
Э-э, поместите *.js в /Scripts вашего проекта, ваш *.css в ваш проект Content/ и включите их в свой .cshtml? PS: вы используете MVC 4.x или 5 с IIS... или какую-то другую версию? А вы используете MSVS для своих сборок... или занимаетесь чем-то другим? Если вы просто используете стандартный инструментарий MSVS стандартным образом ... все должно просто работать. - person paulsm4; 09.05.2017