Материал: Разработка архитектуры веб-сервиса закрытой социальной сети с использованием фреймворка Django

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Разработка архитектуры веб-сервиса закрытой социальной сети с использованием фреймворка Django

Федеральное агентство по образованию Российской Федерации

Государственное образовательное учреждение

высшего профессионального образования

"КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ"

Кафедра математического моделирования






КУРСОВАЯ РАБОТА

Разработка архитектуры веб-сервиса закрытой социальной сети с использованием фреймворка Django





Работу выполнила студентка 4-го курса

Михно В.Д.

Краснодар - 2013

Научный руководитель,

Доцент, к. ф-м. н.

С.Е. Рубцов

Содержание

Введение

1. Анализ закрытых социальных сетей

2. Структура Web-приложения

2.1 База данных и административная часть

2.2 Логическая часть приложения и отображение данных на страницах

Заключение

Список использованных источников

Приложение А

Приложение В

Введение


В настоящее время количество социальных сетей в Интернете и численность их участников растет с невероятной быстротой. Социальные сети уже сегодня посещает более чем две трети онлайн-аудитории во всем мире, и это четвертая по популярности онлайн-категория после поисковых порталов, информационных порталов и программного обеспечения, которая опережает даже электронную почту (по данным компании Nielsen Online, исследующей онлайн поведение в 9 странах). По данным той же компании, использование онлайн-сообществ сегодня растет вдвое более быстрыми темпами, чем любой из четырех других секторов сети Интернета и в три раза быстрее, чем пользование Интернетом в целом. Социальные сети (social networks) привлекают людей, преследующих различные цели: поддержание контакта со старыми знакомыми и поиск новых, в т. ч. обустройство личной жизни; поиск работы, продвижение своего бизнеса, профессиональное общение; обмен информацией и медиаконтентом с другими пользователями. В России социальные сети развиваются с недавнего времени, но, не смотря на свою молодость многие сети, приобрели уже огромную популярность.

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

Интеграция обычных сайтов с внешними социальными сетями уже довольно активно вошла в нашу жизнь. Многие миллионы сайтов тесно интегрировались с самыми популярными сетями, и почти все новые проекты сегодня создаются с интеграцией по умолчанию. Это может быть в виде ссылок на официальные сообщества поклонников сайта в социальных сетях, могут быть кнопки отправки информации в социальные сети, кнопки "мне нравится", интеграция интернет-магазинов для продажи товаров, специальные приложения для работы с сетями, инструменты комментирования через социальные сети и многое другое. Следующим шагом будет создание специализированных платформ для интеграции, которые позволят создавать "социальную" экосистему внутри сайтов, и пользователи, будучи залогиненными в Facebook или VK, смогут получать все то же, что и в самой социальной сети, только при этом будучи на стороннем сайте. Тот же процесс можно будет сделать и в обратном направлении: пользователи смогут, не выходя из социальной сети, получать нужную им информацию со сторонних сайтов. В свою очередь, внешние сайты с удовольствием принимают инструменты интеграции, потому что это дополнительный приток посетителей из сетей, а значит, и дополнительная прибыль. Так социальные сети концентрируют в руках власть, можно сказать "подсаживают сайты на интеграцию".

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

Некоторые работодатели запрещают пользоваться социальными сетями - не только ради экономии, но и чтобы воспрепятствовать утечке информации.

закрытая социальная сеть фреймворк

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

1. Анализ закрытых социальных сетей


Кроме общедоступных "В Контакте" и Facebook, существуют закрытые частные социальные сети, членство в которых доступно только для избранных или для людей с определенной профессией. Рассмотрим некоторые из них.Одна из самых первых эксклюзивных европейских социальных сетей, принимающая только "людей из мира высокого искусства, которые определяются по трем параметрам". Вы должны быть приглашены кем-то из существующих членов данной сети, но даже в этом случае нет никакой гарантии, что вас примут. Руководит сетью 25−летний швейцарец Патрик Лиотард-Войт (Patrick Liotard-Vogt).

Рисунок 1 - Социальная сеть ASmallWorld

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

Создатели сети описывают ее как "оазис вдохновения и развлечений" для "космополитичного, независимого, значимого, толерантного, либерального нонконформиста".

Рисунок 2 - Decayenne

.ru

Evrika.ru - закрытая социальная сеть для российских врачей. Принадлежит медиа - группе "MedInform Healthcare Communications". Все страницы сайта, кроме главной, не индексируются поисковиками и доступны только зарегистрированным пользователям. Для получения доступа нужно быть действующим врачом, способным подтвердить свои профессиональные знания и факт работы в медицинском учреждении.

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

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

Социальная сеть для адвокатов.

Недавно созданная закрытая социальная сеть адвокатов набирает обороты. Адвокатское сообщество России включает примерно 65000 человек.65000 человек профессиональных юристов, объединенных Федеральным Законом "Об адвокатской деятельности и адвокатуре в Российской Федерации", кодексом профессиональной этики адвоката. Каждый адвокат, пришедший в сеть, чувствует родную среду, плечо коллеги, единство интересов и профессионализм.

Структура закрытой социальной сети адвокатов синхронна существующей в России структуре адвокатского сообщества. Адвокаты объединены в группы адвокатских Палат регионов.

В сети нет ников, каждый знает с кем общается, ведь адвокат - открытая профессия.

В сети нет места бюрократии, рекламе и платным услугам. Сеть создана адвокатами и для адвокатов.

Закрытость проекта обусловлена не тайнами и интригами, а особым языком и наречием. Темы и вопросы, обсуждаемые адвокатами, связаны именно с профессией. Информационная площадка, объединяющая всех адвокатов России от Республики Адыгея до республики Саха, дает возможность профессионального общения и установления горизонтальных связей.

Разрозненная информация из адвокатских Палат регионов и адвокатских образований собирается в одном месте и становится доступной каждому адвокату.

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

Постановка задачи

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

Первое что необходимо сделать, это подключить модуль регистрации django-registration и систему идентификации пользователей, предоставляющую работу с пользователями, группами пользователей, правами и сессиями пользователей, работающими через cookies. Эта система представляется приложением django. contrib. auth., обеспечивающее доступ к модели User, которая будет отвечать за базу данных, в которую будут заноситься все регистрируемые пользователи. Без регистрации доступ к страницам будет ограничен.

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

Каждое приложение будет состоять из двух частей:

·        Общедоступная часть, которая дает людям возможность управлять своим профилем.

·        Административная часть, которая позволит администратору редактировать базу данных сайта.

Эти две части будут реализовываться следуя шаблону Модель-Представление-Контроллер (Model-View-Controller, MVC). Примем, что MVC определяет способ разработки программного обеспечения при котором код для определения и доступа к данным (модель, файл models. py) отделен от логики приложения (управление, файл views. py), которая в свою очередь отделена от интерфейса пользователя (представление, файл html).

2. Структура Web-приложения


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

Основой проекта будут manage. py, __init__. py, settings. py, urls. py, wsgi. py.

·        manage. py скрипт, который позволяет вам взаимодействовать с проектом Django.

·        __init__. py пустой файл, который указывает Python, что текущий каталог является пакетом Python.

·        settings. py настройки/конфигурация проекта.

·        urls. py конфигурация URL-ов для вашего проекта Django. Это "содержимое” всех Django-сайтов.

·        wsgi. py точки входа для WSGI-совместимый веб-серверов.

Содержимое этих файлов представлено в ПРИЛОЖЕНИИ А.

Скачав и подключив модуль django-registration, и установив приложение django. contrib. auth., можем переходить к той части проекта, которая будет отвечать за функционал нашего сайта.

2.1 База данных и административная часть


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

Класс Profile будет содержать поля типа AutoOneToOneField, ImageField, TextField, CharField и ManyToManyField.- связь один-к-одному, в отличие от связи многие-ко-многим возвращает один объект. Указывает на модель User и осуществляет доступ к объекту данной модели.

Поле ImageField - предназначено для загрузки изображения.

Рисунок 3 - Поле User типа AutoOneToOneField и поле Иконка типа ImageField

Поле TextField - большое текстовое поле. Интерфейс администратора отображает поле как <textarea>.- Строковое поле для хранения коротких или длинных строк. Интерфейс администратора отображает поле как <input type="text">.- Связь многое-ко-многому. Принимает позиционный аргумент: класс связанной модели. В нашем случае мы используем это поле для определения друзей для каждого пользователя. Использование в качестве позиционного аргумента 'self', позволяет нам создать рекурсивную связь, т.е. объект со связью многие-ко-многим на себя. Это значит, что мы будем помещать в это поле ссылки на объекты из этой же модели.

В этом же файле models. py будут описаны две модели Message и Chat, которые позволяют обмениваться сообщениями между друзьями.

Модель Message содержит два поля AutoOneToOneField, DateTimeField, определяющее поле для ввода даты, CharFiels, TextField и BooleanField (Рис.4). Последнее нам необходимо для определения, что сообщение отправлено и принято (т.е. прочитано). Это поле будет заполняться галочкой, когда получатель зайдет на страницу СООБЩЕНИЯ и просмотрит чат, в котором появилось новое сообщение.

Рисунок 4 - Административная часть. Модель Message.

Что касается модели Chat, так она предназначена для распределения всех объектов модели Message на чаты. Модель содержит два поля многое-к-одному - ForeignKey, ссылающиеся на модель User, для определения участников чата, и поле ManyToManyField для хранения объектов модели Message, пара получатель и отправитель которых соответствует двум полям ForeignKey модели Chat (Рис.5).

Рисунок 5 - Модель Chats. Объект модели содержащий 3 поля: первые два для определения участников чата, а второе для хранения объектов модели Message.

Теперь перейдем к файлу models. py приложения отвечающего за новостную ленту.

Две модели Blog и Comment. Модель Blog ссылается, с помощью поля ManyToManyField, на модель Comment. Модель Comment содержит два поля типа TextField для распределения текста новости.

Если текст оказывается слишком большим, то пользователь большую часть отправляет в нижнее поле, и на странице появляется новость только с тем, что было в первом поле и ссылка "читать полностью >>".

При нажатии на эту ссылку появляется полный текст с возможностью комментировать его.

Так как эти две модели похожи на Message и Chat, поэтому не будем останавливаться на них. Они представлены в ПРИЛОЖЕНИИ В.

2.2 Логическая часть приложения и отображение данных на страницах


Функционал главной страницы представлен двумя функциями my_profile и user_settings.

По названиям можно догадаться, какая функция за что отвечает. Первая my_profile, будет отображать главную страницу пользователя (Рис. 6):

Рисунок 6 - Отображение данных модели Profile.

Как мы видим, внизу всех данных есть ссылка на редактирование своих данных. Все поля для ввода каких-либо данных реализуются с помощью модельных форм, которые аналогичны моделям, или просто форм. И те и другие реализуются с помощью вспомогательных классов, которые описаны в ПРИЛОЖЕНИИ В.

Рисунок 7 - Редактирование данных модели Profile.

Весь код данных страниц представлен в ПРИЛОЖЕНИИ B.

Приложение, отвечающее за поиск друзей, позволяет находить по фамилии, имени, отчеству и логину пользователя (Рис. 8).