Jump to content

Программная архитектура для сайта (теория).


Recommended Posts

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

Итак, начнем.

Для того чтобы не разговаривать ?на пальцах? нарисовал небольшую пояснительную картинку:

architecture.jpg

Итак, как мы видим ? у нас есть 5 основных компонент сайта:

ЯДРО

Пожалуй самым простейшим определением ядра станет ?транспорт для данных?. Так и есть ? ядро должно обеспечивать связь между остальными 4мя компонентами. Через него должны проходить практически все обработки на сайте. В общем ядро пишется для того чтоб облегчить жизнь программисту ? можно написать для ядра класс, выполняющий множество различных операций, а после этого одной функцией подключать его.

База данных

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

Классы

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

Страница сайта

Собственно то что мы видим в Интернете. Конечно для пользователя это просто набор тегов, стилей, JS и даже аякса, но с точки зрения это совокупность более мелких модулей. Причина такого модульного построения сайта базируется на гибкости страниц ? можно свободно перемещать, добавлять и удалять какие-то части страницы или заменять на более подходящие, а так же улучшать без необходимости копаться во ВСЕМ коде сайта.

Модули

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

Итак, что нам дает данное описание 5и основных компонент сайта? А то что модульное программирование обеспечивает гибкость сайта и облегчает его редактирование для программиста. Это та основа которую следует запомнить раз и навсегда, если она не очевидна для вас, потому как если вы будите делать ?все-в-одном ? ? быстро устанете и возможно даже бросите начатый проект.

А как оно работает?

Пора задать этот важный вопрос. Давайте разберем пример: пользователь открывает некую страницу сайта.

1) Страница подключает ядро. Оно выполняет для себя ряд обязательных действий ? подключить стандартные, классы как правило.

2) Ядро определяет что же хочет от нас хочет данная страница (как вариант страница может сама сказать что она хочет получить)

3) Ядро подключает требуемые модули.

4) Модули говорят что они хотят от ядра в свою очередь.

5) Ядро составляет html на основе полученных данных и отдает на вывод нашей странице.

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

А как бы сделал я?

Конечно же не мог не описать свой метод решения.

1) Страница на сайте всего одна. Используется ЧПУ (Человеко-Понятный УРЛ) вида www.moi-sait.com/razdel/parametr1/parametr2/....

2) Страница подключает ядро.

3) Ядро определяет по URL а где оно и что от него хотят. Исходя из полученных данных оно лезет в базу и узнает какие модули необходимы для составления страницы, а попутно и адрес исходного шаблона для данной страницы.

4) Требуемые модули поочередно вызываются, получают из базы через ядро данные (а если надо и записывают), парсятся в шаблоны (уже свои) опять же через ядро и отдают ему готовый html код.

5) Ядро получает эти все данные и парсит на их основе шаблон данной страницы.

6) Все ? страница получает свой html код и отдает его браузеру. Пользователь счастлив.

Вы, конечно, можете сказать что это тоже самое что я писал выше, но прошу заметить, что в моей реализации намного больше конкретики.

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

Статью у себя размещу чуть позже - как сайт перестройку переживет:)

© Иван Шумов http://9lap.ru/

Link to comment
Share on other sites

Я неплохо проектирую юзабельные интерфейсы... Дело в том, что у меня возникает много вопросов при создании CMS(А удобно ли будет пользовать этот класс? В этом духе). В общем, не с кем советоваться... Девятилап, как насчет объеденения? Выложим под OpenSource пока, а потом как покатит. Я уверен, что мы бы могли написать очень хороший продукт!

В личку? Кусок рабочего интерфейса

Link to comment
Share on other sites

могу выложить некторые фрагменты, на которых организуется довольно простой сайт с модульным расширением.

это дикая смесь принципов программирования из punbb и binn, в общем недостаток - неудобство глобальных изменений. после обновления движка форума можно будет файлы аттачить - тогда и выложу, напомните только

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy