Я создал уже 3 приложения с использованием ASP.NET MVC и Polymer, но я всегда получаю ту же архитектурную проблему.Архитектор ASP.NET MVC с полимером
На данный момент, если я хочу, чтобы отделили MVC Просмотров от веб-компоненты Polymer я в конечном итоге со структурой, как этот:
- wwwroot
- bower_components (polymer)
- elements (my components)
- View (my views)
- Controllers (my controllers)
Тогда, если я должен разрешить конкретный вид, для пример: http://mydomain/home/index я в конечном итоге что-то вроде:
- Controller > Home
- Action > Index
- View > Index.cshtml
- Element > paper-page-index.html
и от моего Index.cshtml
<!-- import the element -->
<link rel="import" href=".../paper-page-index.html" />
<!-- render the element and pass properties -->
<paper-page-index first-name="@Model.FirstName"></paper-page-index>
Проблема в том, что я должен передать каждое отдельное свойство моего ViewModel в пользовательский элемент, который становится очень многословным и иногда даже скучным. Каким должен быть правильный путь? Каждое представление .cshtml должно рассматриваться как веб-компонент и перестать создавать веб-компоненты как таковые и включать их в мои .cshtml-страницы? Или у меня есть два метода GET, как Мартин Фаулер говорит:
- один GET, чтобы получить мой взгляд (Controller/Action/.cshtml страница)
- один GET для извлечения ViewModel из MVC
Также моя логика представления должна быть только в мои элементы Полимера или также в мои C# ViewModels?
Любой ключ?
Возможно, вам нужно просто свернуть MVC и использовать Polymer в качестве слоя с вашим приложением SPA. C# для внешнего интерфейса, Polymer для интерфейса. Это будет более чистая и еще более удобная архитектура. Я бы даже предложил хранить код в виде двух разных репозиториев (frontend, api). – sed
На самом деле это уже так, что вы подразумеваете под API - это интерфейс (api), API, используемый для создания модели представления, а не для модели данных. Но я все еще хочу использовать некоторые функции ASP.NET MVC, такие как идентификатор ASP.NET, маршрутизация. Вот почему я смешиваю двух ребят вместе – Raffaeu
В основном, что я говорю, это: Отметьте представления из MVC, используйте его как чистый API. Удалите все папки wwwroot и Views. На самом деле - запуск проекта только по API. Или даже лучше, используйте .NET Core. – sed