Вопросы о передовых архитектурных решениях с использованием Knockout, Upshot и Entity Framework 4.3

Вопрос

Каковы лучшие практики для разработки приложений с использованием Knockout 2.0.1, Upshot.js и Entity Framework 4.3?

Технологический стек

Наш технологический стек в настоящее время выглядит примерно так:

• SQL Server 2008 R2 • ASP.NET MVC3 (с использованием C#) с Entity Framework 4.3 (с использованием Code-First) • jQuery 1.7.2 • jQuery-UI 1.8.2 • Knockout 2.0.1 • Upshot.js beta

Предыстория (Многие другие разработчики могли бы заменить наш собственный проект на наш.)

Мы разрабатываем новое веб-приложение, в котором пользовательский опыт чрезвычайно важен. Приложение включает в себя много тесно связанных между собой лиц. По разным причинам очень желательно, чтобы многие или большинство из этих объектов находились в одном общем визуальном контексте (и, скорее всего, на одной и той же "странице"). Кроме того, некоторые элементы страницы требуют частой связи с сервером.

Хотя изначально мы планировали использовать ASP.NET MVC4 для нашего уровня представления, мы быстро решили, что это может быть не лучшим подходом. Поработав над тем, чтобы заставить MVC делать то, что мы хотели, мы в основном пришли к выводу, что нашим лучшим подходом будет перенести практически всю логику пользовательского интерфейса на клиент и просто передавать данные JSON взад и вперед на сервер. Одностраничное приложение хорошо подходит для нужд нашего клиента.

Мы оценивали Knockout, но не были полностью "проданы" на нем из-за объема работы, необходимой для сопоставления сущностей (в JavaScript), предоставляемых нашим ASP.NET MVC Controller (с использованием методов JSON Action). С более чем 100 различными объектами это ручное отображение было бы чрезвычайно болезненным!

Увидев удивительную презентацию Стива Сандерсона "Приложения на одну страницу" от TechDays Netherlands (http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Net Netherlands/2159), мы подумали, что Рождество наступило рано. Knockout + Upshot казался идеальным решением. Не тратя времени на обдумывание, мы немедленно сообщили нашему клиенту, что будем вносить некоторые изменения в наш набор инструментов для пользовательского интерфейса.

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

Мы собрали ряд сложных архитектурных вопросов, требующих ответов. Мы очень благодарны за любые идеи или решения, которые вы можете предложить.

Каков наилучший механизм связи между upshot и.NET?

По словам Денвера разработчика в своем блоге под названием "Копание в Upshot.js" (http://denverdeveloper.wordpress.com/2012/03/07/digging-into-upshot-js/), есть три поставщика данных, представленные Upshot.js. Это:

• "по умолчанию DataProvider() и использует метод /Submit и предоставленную вами операцию для получения данных с использованием метода $.ajax jQuery. • следующим является riaDataProvider() - аналогично первому, но он использует метод /json/SubmitChanges и /json/{your opertion} для получения данных; • наконец, у нас также есть odataDataProvider() - этот метод совершенно другой, потому что он делает в настоящее время не поддерживается обновление данных - это только для чтения ".

Какой поставщик данных лучше - поставщик данных по умолчанию или поставщик данных RIA? Какой из них рекомендуется?

Как настроить контроллеры для управления входящими и исходящими данными?

Мы понимаем, что контроллеры WebAPI могут иметь только один метод "Get". Если у нас есть, возможно, пара сотен различных запросов (не включая варианты фильтров), которые будут выполняться к серверу, означает ли это, что нам потребуется 200 различных классов контроллеров? Если это так, говорит ли это об использовании поставщика данных, отличного от riaDataProvider() upshot?

Как получить доступ и связать метаданные, доступные для Upshot?

Одним из предполагаемых преимуществ Upshot является его способность запрашивать метаданные, предоставляемые посредством аннотаций данных. (По крайней мере, это наше текущее понимание.) Как можно получить доступ к метаданным для свойств сущности для длины строки, значений по умолчанию, отображаемого имени, информации описания и требуется ли поле?

Какую библиотеку проверки на стороне клиента следует использовать с Knockout и Upshot?

Предположительно, использование стандартной проверки jQuery требует привязки "uniqueName" во всех полях ввода формы. Похоже, что использование jQuery Validation не рекомендуется. На странице плагинов Knockout (https://github.com/SteveSanderson/knockout/wiki/Plugins) перечислены два подключаемых модуля проверки - "Knockout.Validation" и "Проверка Knock-Knock". Для общего использования, какой инструмент или плагин рекомендуется для проверки с помощью Knockout?

Как Upshot справляется с созданием и обновлением объектов в иерархии?

Когда upshot записывает данные обратно на сервер, будет ли он автоматически обрабатывать одновременное добавление родителей и их детей, как это уже может быть сделано в Entity Framework? Мы предполагаем, что ответ - да, но это еще не то, что мы еще тестировали.

1 ответ

Решение

Как и предполагалось, я делю этот пост на несколько небольших вопросов.

Другие вопросы по тегам