| Гость |
|
|---|---|
| Неактивированный пользователь | Имеет профиль. Может заходить на сайт и редактировать профиль. Остальные права "гостя". |
| Кататель |
|
| Сусанин |
|
| Администратор |
|
понедельник, 30 июня 2008 г.
Функции сайта
Роли сайта
В качетсве упрощения безопасности сайта, выделены 4 роли пользователей.
Все последующие роли имеют права предыдущих. Если отбросить Гостя, который не имеет почти никаких прав и Администратора, который имеет все права, мы получаем 2 вида обычных пользователей на сайте.
Так же были придуманы, но заброшены следующие роли:
Отличие только в возможности создания новых и редактирования старых маршрутов.
| Роль | Описание |
|---|---|
| Гость | Неавторизованный пользователь. |
| Неактивизированный пользователь | Отличие от Гостя - может входить на сайт с правами гостя и изменять свой профиль. |
| Кататель | Зарегестрированный и Авторизованный пользователь |
| Сусанин | Зарегестрированный пользователь, который может создавать маршруты. |
| Администратор | Имеет все привелегии на сайт. |
Все последующие роли имеют права предыдущих. Если отбросить Гостя, который не имеет почти никаких прав и Администратора, который имеет все права, мы получаем 2 вида обычных пользователей на сайте.
Так же были придуманы, но заброшены следующие роли:
Отличие только в возможности создания новых и редактирования старых маршрутов.
| Роль | Описание |
|---|---|
| Блокированный кататель | Пользователь имеет профайл, может его изменять, но ен может создавать "покатушки", не может оставлять комменты и т.д. Необходим, когда надо заставить пользователя исправить свой профиль. Других назначений этой роли, вроде, не предусматривается... Но надо думать... |
| Модератор | Сусанин, который может удалять комменты и фото не только со "своего" маршрута, но и с других... Нужен ли? |
пятница, 27 июня 2008 г.
Техническая реализация.
Сервер
Язык разработки: C#.
Платформа: ASP.NET.
Модель обработки данных: MS MVC. Реализация концепции Model-View-Controller от MS для ASP. На начало проекта есть только Preview 3.
База данных:MySql.
ORM: NHibernate.
Аспектное программирование.PostSharp.
Клиент
В качестве клиента выступает браузер Mozilla Firefox и Internet Explorer. Какие версии - не знаю. Должно работать на моих версиях :)))
Клиентский код пишется на JavaScript.
В браузере должны быть включены JavaScript и Cookie. С отключенными JavaScript и Cookie сайт работать не обязан (да и не будет, наверное).
API работы с картографической информацией - API от Google.
В качестве упрощения написания кросс-браузерности и, вообще, упрощения написания скриптов на уровне клиента, используется jQuery.
Прочие "штуки".
В качестве среды разработки - VisualStudio 2008 Pro (у меня лицензионная версия! Мне ее на выставке подарили :))) Надо будет еще узнать что там за лицензия и могу ли я использовать ее в качестве среды разработки :)
В качестве вспомогательных утилит - Шаблонизатор (TemplateGenerator). Автор: Дорош Влад. Почту не знаю, ничего не знаю и вообще он скрытный человек :)
Некоторые разъяснения:
Требования к языку: Жесткий, типизированный язык. Большая часть ошибок должны определяться на этапе компиляции. Удобный в использовании. И вообще, был выбран C# потому что он мне нравиться и удовлетворяет этим требованиям. Соответственно, в качестве платформы идет ASP.NET 3.5.
В качестве шаблона взаимодействия клиента с сайтом был выбран подход MVC (Model View Controller).
Данная модель позволяет легко декомпозировать взаимодействие с пользователем, сервером, базой. Легко позволяет разделить обработку запросов от клиентов, представлением данных и хранением данных.
Дальше, база данных определяется хостингом. Можно было писать на MSSQL, но нормальных дешевых хостингов с базой я не нашел... А с mysql нашел. Да и потом модель перегнать на другую базу, надеюсь, больших проблем не будет.
Применение и выбор ORM... Ну... банально.... свой "велосипед" писать не захотел. а других популярных ORM'ов не знаю :) Да и широкоиспользуемые компоненты посмотреть стоит :)
Ща рисунок нарисую, что получается. Напишу сразу все в кучу, потому что, (кто меня знает подтвердят) я - ленив!

Т.е. запрос от клиента попадает в контроллер, контроллер принимает решение о дальнейшей обработке (проверяет безопасность, осуществляет редирект и т.д.). При необходимости использует объектную модель системы. После обработки, передает данные на формирование ответа пользователю (представление). Этот блок осуществляет форматирование данных и отправку пользователю. Там нет логики. Единственная часть логики, которая ушла в этот блок, это решение о "вставлять или нет кусок страницы, в зависимости от безопасности". Так же может использует модель в качестве источника данных.
При формировании модели, она должна где-то храниться. Это - уровень БД.
Для отображения данных объектной модели на БД, использовался NHibernate.
НО я уже слышал несколько не очень лестных отзывов о нем, поэтому выделил в отдельный уровень (практически DAL). Все обращение к БД идет через этот DAL.
И уровень БД - mysql. Постараюсь сделать базы заменяемыми.
Дальше, самая загадочная штука. Аспектное программирование. Я использовал PostSharp.
На аспектах попытаюсь организовать основную часть security.
Аспекнтное программирование в C# подразумевает, что при помощи атрибута метода, мы можем вклиниться в выполнение этого метода.
Таким образом, я навесил на все методы, которые требуют обработку безопасности, этими атрибутами и, если безопасность не проходит, я перекидываю пользователя на ошибку.
Это позволяет единообразно обрабатывать обращения пользователя и не загромождает код.
Использование "шаблонизатора". Вообще, код модели и Nhibernate-proxy очень похож (в рамках свойств и некоторых методов). Поэтому, что б не копировать по 10 раз код, были написаны некоторые шаблончики, которые позволяют один раз описать объект. Затем, по описанию, сформировать несколько файлов.
На данный момент, для описания сущности, мне надо сформировать следующие файлы:
C#-класс модели
C#-класс-прокси для Nhibernate
xml-описание меппинга таблиц БД на класс-прокси Nhibernate
Думаю над тем, что б написать генерацию некого "стандартного" представления... т.е. asp.net-html странички... но это пока все только мысли...
Возможно, пойду по еще одному пути... напишу некий свой кодегенератор в качестве плагина для VS. Но это - тоже просто мысли... ленив я :)
Все. Мне надоело на сегодня писать. Ждите user-story в моем понимании! :)
Язык разработки: C#.
Платформа: ASP.NET.
Модель обработки данных: MS MVC. Реализация концепции Model-View-Controller от MS для ASP. На начало проекта есть только Preview 3.
База данных:MySql.
ORM: NHibernate.
Аспектное программирование.PostSharp.
Клиент
В качестве клиента выступает браузер Mozilla Firefox и Internet Explorer. Какие версии - не знаю. Должно работать на моих версиях :)))
Клиентский код пишется на JavaScript.
В браузере должны быть включены JavaScript и Cookie. С отключенными JavaScript и Cookie сайт работать не обязан (да и не будет, наверное).
API работы с картографической информацией - API от Google.
В качестве упрощения написания кросс-браузерности и, вообще, упрощения написания скриптов на уровне клиента, используется jQuery.
Прочие "штуки".
В качестве среды разработки - VisualStudio 2008 Pro (у меня лицензионная версия! Мне ее на выставке подарили :))) Надо будет еще узнать что там за лицензия и могу ли я использовать ее в качестве среды разработки :)
В качестве вспомогательных утилит - Шаблонизатор (TemplateGenerator). Автор: Дорош Влад. Почту не знаю, ничего не знаю и вообще он скрытный человек :)
Некоторые разъяснения:
Требования к языку: Жесткий, типизированный язык. Большая часть ошибок должны определяться на этапе компиляции. Удобный в использовании. И вообще, был выбран C# потому что он мне нравиться и удовлетворяет этим требованиям. Соответственно, в качестве платформы идет ASP.NET 3.5.
В качестве шаблона взаимодействия клиента с сайтом был выбран подход MVC (Model View Controller).
Данная модель позволяет легко декомпозировать взаимодействие с пользователем, сервером, базой. Легко позволяет разделить обработку запросов от клиентов, представлением данных и хранением данных.
Дальше, база данных определяется хостингом. Можно было писать на MSSQL, но нормальных дешевых хостингов с базой я не нашел... А с mysql нашел. Да и потом модель перегнать на другую базу, надеюсь, больших проблем не будет.
Применение и выбор ORM... Ну... банально.... свой "велосипед" писать не захотел. а других популярных ORM'ов не знаю :) Да и широкоиспользуемые компоненты посмотреть стоит :)
Ща рисунок нарисую, что получается. Напишу сразу все в кучу, потому что, (кто меня знает подтвердят) я - ленив!

Т.е. запрос от клиента попадает в контроллер, контроллер принимает решение о дальнейшей обработке (проверяет безопасность, осуществляет редирект и т.д.). При необходимости использует объектную модель системы. После обработки, передает данные на формирование ответа пользователю (представление). Этот блок осуществляет форматирование данных и отправку пользователю. Там нет логики. Единственная часть логики, которая ушла в этот блок, это решение о "вставлять или нет кусок страницы, в зависимости от безопасности". Так же может использует модель в качестве источника данных.
При формировании модели, она должна где-то храниться. Это - уровень БД.
Для отображения данных объектной модели на БД, использовался NHibernate.
НО я уже слышал несколько не очень лестных отзывов о нем, поэтому выделил в отдельный уровень (практически DAL). Все обращение к БД идет через этот DAL.
И уровень БД - mysql. Постараюсь сделать базы заменяемыми.
Дальше, самая загадочная штука. Аспектное программирование. Я использовал PostSharp.
На аспектах попытаюсь организовать основную часть security.
Аспекнтное программирование в C# подразумевает, что при помощи атрибута метода, мы можем вклиниться в выполнение этого метода.
Таким образом, я навесил на все методы, которые требуют обработку безопасности, этими атрибутами и, если безопасность не проходит, я перекидываю пользователя на ошибку.
Это позволяет единообразно обрабатывать обращения пользователя и не загромождает код.
Использование "шаблонизатора". Вообще, код модели и Nhibernate-proxy очень похож (в рамках свойств и некоторых методов). Поэтому, что б не копировать по 10 раз код, были написаны некоторые шаблончики, которые позволяют один раз описать объект. Затем, по описанию, сформировать несколько файлов.
На данный момент, для описания сущности, мне надо сформировать следующие файлы:
Думаю над тем, что б написать генерацию некого "стандартного" представления... т.е. asp.net-html странички... но это пока все только мысли...
Возможно, пойду по еще одному пути... напишу некий свой кодегенератор в качестве плагина для VS. Но это - тоже просто мысли... ленив я :)
Все. Мне надоело на сегодня писать. Ждите user-story в моем понимании! :)
Назначение сайта
Целевая аудитория разрабатываемого сайта.
Люди, любящие покататься на велосипеде.
В основном, не совсем новички. Люди которые могут проехать в день 50-60 км.
Новичкам тоже будет интересно на сайте, но в значительной меньшей степени.
В целом, буду стараться сделать сайт для велотуристов.
Ну... и наконец, сайт пишется ДЛЯ МЕНЯ что бы по этому поводу я не говорил :)
Основной функционал сайта:
Планирование маршрутов на один два дня.
Обоснование: мне так удобно :)) Вне отпуска далеко кататься не получается. Так что предполагаемые маршруты будут на 50-150 км по расстоянию и на 1-2 дня по времени.
Планирование "больших" покатушек по маршрутам.
Собственно на основе маршрута планируются "большие" покатушки или "прохождение маршрута".
Планирование "малых" покатушек.
"Малые покатушки" представляют собой "вечерние покатушки" на пару-тройку часиков вечерком. Расстояние до 50 км. "Малые покатушки" не имеют маршрута (описываются словами), возможно, не будут иметь описания (еще не решил).
Публикование отчетов по покатушкам.
Необходимо для выбора маршрута по которому еще не катался
Комментирование маршрута.
Полноценного форума, пока, не предусматривается. Если он и будет, то, на 99% он будет "сторонним" хотя... никогда не говори никогда :)
Люди, любящие покататься на велосипеде.
В основном, не совсем новички. Люди которые могут проехать в день 50-60 км.
Новичкам тоже будет интересно на сайте, но в значительной меньшей степени.
В целом, буду стараться сделать сайт для велотуристов.
Ну... и наконец, сайт пишется ДЛЯ МЕНЯ что бы по этому поводу я не говорил :)
Основной функционал сайта:
Обоснование: мне так удобно :)) Вне отпуска далеко кататься не получается. Так что предполагаемые маршруты будут на 50-150 км по расстоянию и на 1-2 дня по времени.
Собственно на основе маршрута планируются "большие" покатушки или "прохождение маршрута".
"Малые покатушки" представляют собой "вечерние покатушки" на пару-тройку часиков вечерком. Расстояние до 50 км. "Малые покатушки" не имеют маршрута (описываются словами), возможно, не будут иметь описания (еще не решил).
Необходимо для выбора маршрута по которому еще не катался
Полноценного форума, пока, не предусматривается. Если он и будет, то, на 99% он будет "сторонним" хотя... никогда не говори никогда :)
О ведении блога
Итак, в блог я буду писать а-ля техническое задание.
Модные нынче user-story. Писать я их не умею... но что могу.
Так же буду описывать технические решения... для чего?.. я не знал ни одной технологии из используемых. Так что, надеюсь, смогу понять, что я хочу, как я хочу их использовать и нужно ли их использовать.
Если вы случайно попали на этот сайт - милости прошу.
Но таковых, думаю, не будет.
Если будут замечания предложения - оставляйте в комментах, и, если я не брошу этот блог и проект, я постараюсь их учесть.
Модные нынче user-story. Писать я их не умею... но что могу.
Так же буду описывать технические решения... для чего?.. я не знал ни одной технологии из используемых. Так что, надеюсь, смогу понять, что я хочу, как я хочу их использовать и нужно ли их использовать.
Если вы случайно попали на этот сайт - милости прошу.
Но таковых, думаю, не будет.
Если будут замечания предложения - оставляйте в комментах, и, если я не брошу этот блог и проект, я постараюсь их учесть.
Веложизнь!
Создал блог.
Постараюсь вести его по созданию проекта.
Попробую описать и технологию и идеи, которые я хочу воплотить в проекте.
Целевая аудитория - люди, которые хотят помочь мне его создать :))
Ну... или не хотят, но которых я могу упросить :))))
И, наконец, самый главный человек, ради которого ведется этот блог, это - я! :))))))))))))))
Надеюсь это поможет более детально организовать себя.
Постараюсь вести его по созданию проекта.
Попробую описать и технологию и идеи, которые я хочу воплотить в проекте.
Целевая аудитория - люди, которые хотят помочь мне его создать :))
Ну... или не хотят, но которых я могу упросить :))))
И, наконец, самый главный человек, ради которого ведется этот блог, это - я! :))))))))))))))
Надеюсь это поможет более детально организовать себя.
Подписаться на:
Сообщения (Atom)