Система управления данными на базе ASP.NET Dynamic Data

OSzone.net » Microsoft » Разработка приложений » .NET Framework » Система управления данными на базе ASP.NET Dynamic Data
Автор: Андрей Губский
Иcточник: MSDN
Опубликована: 16.10.2013
Я работаю с ASP.NET достаточно давно. При разработке многих проектов я часто сталкивался с тем, что однотипные операции по управлению данными занимают слишком много времени. Естественно для сайтов существуют CMS системы, а для более сложных систем различные генераторы шаблонных страниц, которые создают заготовки для форм редактирования и просмотра информации. Но мне хотелось получить более универсальный инструмент, который в тоже время не накладывал бы ограничений на процесс построения архитектуры приложения.

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

Исследовав то, что существовало на тот момент для .NET платформы я остановил свой выбор системе ASP.NET Dynamic Data. Она и стала ядром системы Data Management System. Основная идея этой системы — полное разделение управления данными (backend) и систем взаимодействующих с конечными пользователями (frontend). Причем во многих моих проектах в качестве frontend систем выступают не только веб-приложения, но и десктопные приложения, мобильные приложения и приложения клиентская часть которых реализована не на .NET платформе.

Это достигается за счет того, что интеграция происходит на уровне СУБД, а не на уровне модулей системы:

*

Такой подход позволяет достаточно быстро получить готовый инструментарий для управления данными и при этом не накладыват архитектурных ограничений на основное приложение. Что в свою очередь помогает сосредоточить усилия на построении приложения.

Технологии и компоненты использующиеся в проекте

Инструмент генерации метаданных


*

Инструмент генерации метаданных позволяет автоматизировать процесс создания partial-классов для классов сгенерированных Entity Frameowrk.
Partial-классы помещаются в отдельную директорию и содержат метаданные для каждого из плей.
Часть полей автоматически помечается соответствующими метаданными, например поле содержащее «Content» в своем названии автоматически получит такие атрибуты как [Browsable(false)] и [UIHint(Control.Html)]. То есть поле не будет отображаться в списках и таблицах, а в качестве редактора для него будет создан wysiwyg-редактор CKEditor (Тут хочу сделать небольшое отступление, и сказать, что так как мне не удалось найти в NuGet каталоге актуальной 4 версии CKEditor, то я создал свой пакет, в котором планирую поддерживать актуальные версии редактора. Пакет находится тут: nuget.org/packages/xckeditor/) После того, как будут сгенерировны файлы с partial-классами, метаданные в них можно будет подправить вручную и добавить в проект содержащий модель базы данных.

Первичная конфигурация системы

Для конфигурации системы необходимо в файле web.cofig указать значение таких полей как:


Также необходимо добавить в файл конфигурации строку подключения к базе из основного веб-приложения.

Пример файла конфигурации (web.config)



После того, как система будет сконфигурирована вам сразу будет доступен интерфейс подобный том что вы можете увидеть на иллюстрации:
*
Увеличить

Загрузка файлов


Изначально предполагалось, что система управления и веб-приложение будут находится на одном сервере, и поэтому загрузка файлов поддерживалась только для напрямую в директорию веб-приложения.
В новой версии такого ограничения нет — теперь система управления и веб-приложение могут находится на разных хостингах.
Всего поддерживается три варианта взаимодействия с файловым хранилищем веб-приложения:

  1. Файловая система
  2. FTP
  3. Облачное хранилище Windows Azure Blob Storage

Система управления и веб-приложение находятся на одном сервере


В этом случае в параметры WebsiteUrlWebsiteStorageConnectionStringFileStorageUrl и FileStorageConnectionStringнеобходимо прописать пути к соответствующим директориям веб приложения.

Система управления и веб-приложение находятся на разных серверах сервере (через FTP)


В это случае в WebsiteStorageConnectionString и FileStorageConnectionString заполняются строкой подключения к FTP вида:

Автор статьи: Павел Ревенков.

ftp://user:password@example.com/wwwroot/site/
и ftp://user:password@example.com/wwwroot/site/static

Веб-приложение развернуто в Windows Azure (через Cloud Storage)

Данный вариант доступа кроме заполнения параметров WebsiteStorageConnectionString и FileStorageConnectionStringпредполагает так же указание названия контейнера в хранилище Windows Azure: BlobContainerName

Отличия от оригинальной версии Dynamic Data

Присоединяйтесь


*
Все желающие могут ознакомится с системой.
Исходные коды проекта доступны на GitHub.


Ссылка: http://www.oszone.net/22360/Dynamic_Data