Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
Aml Pages - это электронная записная книжка, оперативный блокнот на все случаи жизни, каталогизатор документов. Позволяе...
McAfee Stinger - это бесплатный, не требующий установки антивирус, для обнаружения и удаления с компьютера известных вир...
Удобная программа для работы с музыкальными коллекциями. Она понимает самые распространенные виды музыкальных форматов, ...
Программа для управления драйверами, которая позволяет полностью удалить драйвер из системы. Driver Fusion позволяет уда...
Программа для видеочатов высокого качества, обмена сообщениями и дешевыми звонками на телефоны в любую страну....
OSzone.net Microsoft Разработка приложений .NET Framework Система управления данными на базе ASP.NET Dynamic Data RSS

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

Текущий рейтинг: 5 (проголосовало 1)
 Посетителей: 388 | Просмотров: 525 (сегодня 0)  Шрифт: - +
Я работаю с ASP.NET достаточно давно. При разработке многих проектов я часто сталкивался с тем, что однотипные операции по управлению данными занимают слишком много времени. Естественно для сайтов существуют CMS системы, а для более сложных систем различные генераторы шаблонных страниц, которые создают заготовки для форм редактирования и просмотра информации. Но мне хотелось получить более универсальный инструмент, который в тоже время не накладывал бы ограничений на процесс построения архитектуры приложения.

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

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

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

*

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

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

  • ASP.NET Dynamic Data — веб-приложение использующее технологию скаффолдинга для построения интерфейса доступа к данным и редактирования. Информация для построения интерфейса берется из метаданных классов. Процессом рендеринга можно управлять с помощью настраиваемых шаблонов.
  • Twitter Bootstrap — свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML и CSS шаблоны оформления для типографики, веб-форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейсов, включая JavaScript расширения.
  • jQuery — популярная javascript библиотека.
  • Windows Azure SDK — набор библиотек для работы с Windows Azure
  • Entity Framework — ORM система для .NET Framework
  • Choosen — javascript плагин позволяющий добавить фильтрацию к выпадающим спискам
  • jQuery UI — библиотека JavaScript с открытым исходным кодом для создания насыщенного пользовательского интерфейса в веб-приложениях, часть проекта jQuery
  • CKEditor — свободный WYSIWYG-редактор для веба

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


*

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

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

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

  • Title — название проекта
  • RootLogin — логин пользователя системы
  • RootPassword — пароль пользователя системы
  • WebsiteUrl — адрес веб-приложения
  • WebsiteStorageConnectionString — строка подключения к хранилищу в котором находится веб-приложение
  • FileStorageUrl — корневой url хранилища загружаемых файлов
  • FileStorageConnectionString — строка подключения к хранилищу в котором находятся загружаемые файлы
  • DataContextAssemblyLocation — путь к сборке содержащей классы модели. (сгенерированые EntityFrameowrk)
  • BlobContainerName — используется в случае, если файлы рапослаются в облачном хранилище Windows Azure


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

Пример файла конфигурации (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

  • Добавлена поддержка Entity Framework 5.0
  • Переработан визуальный интерфейс (в основе лежит Twitter Bootstrap, добавлена совместимость с мобильными устройствами)
  • Добавлен функционал загрузки файлов в веб-приложение
  • Добавлены такие редакторы полей как html-редактор (CKEditor), карта (Google Map), календарь, и другие
  • Исправлена некорректная работа отношения многие ко многим
  • Добавлена возможность просмотра информации о конфигурации сервера
  • Добавлена возможность авторизации в систему
  • и многое другое

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


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

Автор: Андрей Губский  •  Иcточник: MSDN  •  Опубликована: 16.10.2013
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:   Dynamic Data.


Оценить статью:
Вверх
Комментарии посетителей RSS

Чтобы оставить комментарий, зарегистрируйтесь или войдите с учетной записью социальной сети.