Visual Studio 201о
Введение
Двадцать первый век заслуженно называют эпохой апогея информационных технологий. Посмотрите вокруг, наш и до того тесный мир пестрит различными техническими новинками, которыми пользуется и стар и млад. На наш взгляд, современные изобретения являются полезными для общества, которое можно сравнить с огромным муравейником, где каждый выполняет свою работу, и, фактически не имеет время на полноценный отдых. Можем позволить себе провести параллель между современной жизнью и детской каруселью, которая с каждой минутой только набирает свою скорость. Как нам кажется, фраза ,,Компьютер-друг человека'' очень точно характеризует наши серые будни. Действительно, что бы мы не делали, он всегда готов прийти нам на помощь, взять на себя часть нашей работы. Что произойдет, если на сутки с лица земли исчезнут все компьютеры и компьютерные планшеты? Ответ прост, нарушится полноценная деятельность предприятий, международных корпораций, фондов, банков и т.д. На наш взгляд, данное происшествие будет сравнимо с деятельностью разрушительного урагана, последствия которого придется ликвидировать длительное время. Нельзя и не упомянуть тот факт, что всемирная паутина нередко заменяет нам живых людей, даже уместнее сказать заполняет нашу душевную пустоту, вызванную их отсутствием. И в этом огромная заслуга социальных сетей.
Стук клавиш для некоторых людей - единственная возможность заставить сердце биться с бешеной силой, ведь не все могут найти свою вторую половинку в реальной жизни. Мы считаем ошибочным суждение, что виртуальная жизнь вредна для человека и хотим привести несколько аргументов в свою защиту.
Во-первых хотелось бы сказать про людей-инвалидов, чья жизнь в корне отличается от жизни здорового человека. Зачастую эти люди не имеют возможности покинуть свою квартиру, свои крошечный мир, для них социальная сеть, без преувеличения, спасение, окунувшись с головой в общение они на время забывают о своих проблемах, получают поддержку от других людей, находят друзей.
Во-вторых, социальные сети нередко объединяют людей разного пола, возраста, национальности, что, на наш взгляд, очень важно в наше время, когда как революции, войны, восстания так и хотят разрушить нашу мирную жизнь, нашу хрупкую птицу счастья.
Также благодаря социальным сетям многие происшествия получают широкий общественный резонанс, каждый из нас может принять участие в обсуждении какого-либо острого вопроса, доказать свою правоту. На протяжении всего существования жизни на земле, свобода являлась главной ценностью человечества, ради нее люди были готовы проливать кровь, склонять головы, уничтожать целые народы. В социальных сетях мы также обретаем это ни с чем не сравнимое право. Оценив популярность социальных сетей, мы пришли к выводу, что необходимо создать свою собственную социальную сеть, которая, как нам кажется, сможет занять достойное место, среди других информационных разработок. Наша главная цель-создание особенного мира, в которой каждый человек, в не зависимости от предпочтений и вкусов, может почувствовать себя как дома, ощутить вкус истинной свободы. Неповторимый дизайн, простота использования - лишь некоторые козыри моего изобретения. Мы искренне надеюсь, что наша социальная сеть изменит жизнь каждого из нас, ибо всё новое невольно изменяет привычный порядок вещей.
1. Теоретическая часть
.1 Аспекты изучаемой технологии
(Hyper Text Markup Language - «язык разметки гипертекста») - стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц создаются при помощи языка HTML (или XHTML). Язык HTML интерпретируется браузерами и отображается в виде документа, в удобной для человека форме.
История HTML
Язык HTML был разработан Тимом Бернерс-Ли во время его работы в CERN и распространен браузером Mosaic, разработанным в NCSA. В 1990-х годах он добился особенных успехов благодаря быстрому росту Web. В это время HTML был расширен и дополнен. В Web очень важно использование одних и тех же соглашений HTML авторами Web-страниц и производителями. Это явилось причиной совместной работы над спецификациями языка HTML. HTML 2.0 был разработан под эгидой Internet Engineering Task Force (IETF) для упорядочения общепринятых положений в конце 1994 года. HTML+ (1993) и HTML 3.0 (1995) - это более богатые версии языка HTML. Несмотря на то, что в обычных дискуссиях согласие никогда не было достигнуто, эти черновики привели к принятию ряда новых свойств. Усилия Рабочей группы World Wide Web Consortium по HTML в упорядочении общепринятых положений в 1996 привели к версии HTML 3.2 (январь 1997). Большинство людей признают, что документы HTML должны работать в различных браузерах и на разных платформах. Достижение совместимости снижает расходы авторов, поскольку они могут разрабатывать только одну версию документа. В противном случае возникает еще больший риск, что Web будет представлять собой смесь личных несовместимых форматов, что в конечном счете приведет к снижению коммерческого потенциала Web для всех участников. В каждой версии HTML предпринималась попытка отразить все большее число соглашений между работниками и пользователями этой индустрии, чтобы усилия авторов не были потрачены впустую, а их документы не стали бы нечитаемыми в короткий срок. Язык HTML разрабатывался с той точки зрения, что все типы устройств должны иметь возможность использовать информацию в Web: персональные компьютеры с графическими дисплеями с различным разрешением и числом цветов, сотовые телефоны, переносные устройства, устройства для вывода и ввода речи, компьютеры с высокой и низкой частотой и т.д.
Браузеры
Текстовые документы, содержащие разметку на языке HTML (такие документы традиционно имеют расширение .html или .htm), обрабатываются специальными приложениями, которые отображают документ в его форматированном виде. Такие приложения, называемые «браузерами» или «интернет-обозревателями», обычно предоставляют пользователю удобный интерфейс для запроса веб-страниц, их просмотра (и вывода на иные внешние устройства) и, при необходимости, отправки введённых пользователем данных на сервер. Наиболее популярными на сегодняшний день браузерами являются Internet Explorer, Mozilla Firefox, Apple Safari, Googlе Chrome и Opera.
Версии HTML2.0
сентября 1995 года2.0 одобренный как стандарт 22 сентября 1995 года. Официальной спецификации HTML 1.0 не существует. До 1995 года существовало множество неофициальных стандартов HTML. Чтобы стандартная версия отличалась от них, ей сразу присвоили второй номер.
HTML 3.2
января 1997 года
Стандарт HTML 3.2 является спецификацией языка разметки гипертекста, предложенной организацией W3C и разработанной в начале 1996 года в кооперации с такими поставщиками, как IBM, Microsoft, Netscape Communication Corporation, Novell, SoftQuad, Spyglass, и Sun Microsystems. Версия 3.2 языка HTML дополнена такими широко распространенными элементами, как таблицы, апплеты и обтекание текстом изображений. При этом обеспечивается полная обратная совместимость с ныне существующим стандартом HTML 2.0.C совместно с упомянутыми фирмами продолжает работу над расширением возможностей элементов языка HTML, таких как feagures, объекты мультимедиа, скрипты, типы стилей, разметка (layout), формы, математические символы, и над интернационализацией языка. W3C планирует включить результаты этой работы в следующие версии языка HTML.
Документы в языке HTML 3.2 начинаются с декларации <!DOCTYPE>, затем следует элемент HTML.
HTML 4.0
декабря 1997 года
Данная спецификация определяет HyperText Markup Language (Язык разметки гипертекстов - HTML) версии 4.0 - язык, который используется для публикаций в World Wide Web. Кроме текстовых, мультимедийных возможностей и гиперссылок, присутствующих в предыдущих версиях языка HTML, HTML 4.0 поддерживает новые мультимедийные возможности, скрипты, таблицы стилей, улучшенную печать и более доступные людям с физическими недостатками документы.
В версии HTML 4.0 также успешно реализована интернационализация документов, целью которой является сделать Паутину действительно всемирной.
HTML 4.0 - это приложение SGML, соответствующее Международному стандарту ISO 8879 -- Standard Generalized Markup Language.
HTML 4.01
декабря 1999 года
Эта спецификация определяет HyperText Markup Language (HTML) - гипертекстовый язык разметки, язык World Wide Web. Здесь определён HTML 4.01, являющийся субверсией HTML 4. В дополнение к возможностям работы с текстом, мультимедиа и гипертекстом предыдущих версий HTML (HTML 3.2 ) и HTML 2.0 ), HTML 4 поддерживает большее количество опций мультимедиа, языков скриптов, каскадных таблиц стилей, лучшие возможности печати и большую доступность документов для людей с ограниченными возможностями. HTML 4 также является большим шагом в направлении интернационализации документов с целью сделать Web действительно World Wide (всемирным).
HTML 5
HTML5 - язык для структурирования и представления содержимого для всемирной паутины, а также основная технология, используемая в Интернете. Это пятая версия HTML-стандарта (изначально созданного в 1990 году и последней версией которого являлся HTML4, стандартизированный в 1997 году) и находится в стадии разработки по состоянию на апрель 2012 года. Основной её целью является улучшить язык, поддерживающий работу с новейшими мультимедийными приложениями, при этом сохраняется лёгкость чтения кода для человека и ясность исполнения для компьютеров и приспособлений (веб-браузеры, синтаксические анализаторы и т. д.). HTML5 включает в себя HTML 4 и javascript<#"justify">1)Ниже представлен список отличий и несколько необычных примеров:
2)Новое правило синтаксического анализа
)Возможность использовать встроенные SVG и MathML в text/html
4)Новые элементы: article, aside, audio, bdo, canvas, command, datalist, details, embed, figcaption, figure, footer, header, hgroup, keygen, mark, meter, nav, output, progress, rp, rt, ruby, section, source, summary, time, video, wbr
)Новые типы средств управления за формой: dates and times, email, url, search, number, range, tel, color[44]
)Новые атрибуты: charset (в meta), async (в script)
7)Глобальные атрибуты, которые могут быть применены ко всем элементам: id, tabindex, hidden, data-* (пользовательские атрибуты данных)
8)Элементы, которые будут исключены: acronym, applet, basefont, big, center, dir, font, frame, frameset, isindex, noframes, strike, tt.NET MVC
Схема архитектуры Model-View-Controller (MVC) разделяет приложение на три основных компонента: модель, представление и контроллер. Платформа ASP.NET MVC представляет собой альтернативу схеме веб-форм ASP.NET при создании веб-приложений. Платформа ASP.NET MVC является легковесной платформой отображения с широкими возможностями тестирования и, подобно приложениям на основе веб-форм, интегрирована с существующими функциями ASP.NET, например с главными страницами и проверкой подлинности на основе членства. Платформа MVC определяется в сборке System.Web.Mvc.
Рис. 1 Схема структуры MVC
представляет собой стандартный шаблон разработки, знакомый многим специалистам. Некоторые типы веб-приложений имеют преимущества при создании на платформе MVC. Для других может быть целесообразно использование традиционной схемы приложения ASP.NET, основанной на веб-формах и обратной передаче. В некоторых случаях возможно сочетание двух подходов: применение одной схемы не исключает использования другой.
В состав платформы MVC входят следующие компоненты.
·Модели. Объекты моделей являются частями приложения, реализующими логику для домена данных приложения. Объекты моделей часто получают и сохраняют состояние модели в базе данных. Например, объект Product может получать информацию из базы данных, работать с ней, а затем записывать обновленные данные в таблицу Products базы данных SQL Server.
В небольших приложениях эта модель подразумевает концептуальное, а не физическое разделение. Например, если приложение только считывает набор данных и отправляет его в представление, то физический слой модели и связанных классов отсутствует. В этом случае набор данных принимает роль объекта модели.
·Представления. Представления служат для отображения пользовательского интерфейса приложения. Пользовательский интерфейс обычно создается на основе данных модели. Примером может служить представление для редактирования таблицы Products, которое содержит текстовые поля, раскрывающиеся списки и флажки, значения которых основаны на текущем состоянии объекта Product.
·Контроллеры. Контроллеры осуществляют взаимодействие с пользователем, работу с моделью, а также выбор представления, отображающего пользовательский интерфейс. В приложении MVC представления только отображают данные, а контроллер обрабатывает вводимые данные и отвечает на действия пользователя. Например, контроллер может обрабатывать строковые значения запроса и передавать их в модель, которая может использовать эти значения для отправки запроса в базу данных.
Шаблон MVC позволяет создавать приложения, различные аспекты которых (логика ввода, бизнес-логика и логика интерфейса) разделены, но достаточно тесно взаимодействуют друг с другом. Эта схема указывает расположение каждого вида логики в приложении. Пользовательский интерфейс располагается в представлении. Логика ввода располагается в контроллере. Бизнес-логика находится в модели. Это разделение позволяет работать со сложными структурами при создании приложения, так как обеспечивает одновременную реализацию только одного аспекта. Например, разработчик может сконцентрироваться на создании представления отдельно от бизнес-логики.
Связь между основными компонентами приложения MVC также облегчает параллельную разработку. Например, один разработчик может создавать представление, другой - логику контроллера, а третий - бизнес-логику модели.
В дополнение к упрощению сложных структур схема MVC также облегчает тестирование приложений по сравнению с веб-приложениями ASP.NET на основе веб-форм. Например, в веб-приложении ASP.NET на основе веб-форм один класс используется для отображения вывода и для ответа на ввод пользователя. Создание автоматических тестов для приложений ASP.NET на основе веб-форм может представлять сложности, так как для тестирования отдельной страницы следует создать экземпляр класса страницы, всех дочерних элементов управления и других зависимых классов приложения. Большое число экземпляров классов, необходимое для запуска страницы, усложняет создание тестов для отдельных частей приложения. Из-за этого тестирование приложений ASP.NET на основе веб-форм может быть сложнее тестирования приложения MVC. Более того, для тестирования приложения ASP.NET необходим веб-сервер. Платформа MVC разделяет компоненты и активно использует интерфейсы, что позволяет тестировать отдельные элементы вне остальной структуры.
Следует внимательно продумать вопрос о создании веб-приложения на основе платформы ASP.NET MVC или на основе модели веб-форм ASP.NET. Платформа MVC не заменяет собой модель веб-форм. Обе модели можно использовать для веб-приложений. (при наличии существующих приложений на основе веб-форм они будут продолжать работу в нормальном режиме).
Перед использованием платформы MVC или модели веб-форм для определенного веб-сайта следует взвесить все преимущества каждого из подходов
Платформа ASP.NET MVC имеет следующие преимущества.
·Она облегчает управление сложными структурами путем разделения приложения на модель, представление и контроллер.
·Она не использует состояние просмотра и серверные формы. Это делает платформу MVC идеальной для разработчиков, которым необходим полный контроль над поведением приложения.
·Она использует схему основного контроллера, при которой запросы веб-приложения обрабатываются через один контроллер. Это позволяет создавать приложения, поддерживающие расширенную инфраструктуру маршрутизации. Дополнительные сведения см. в разделе Front Controller.
·Она обеспечивает расширенную поддержку разработки на основе тестирования.
·Она хорошо подходит для веб-приложений, поддерживаемых крупными коллективами разработчиков, а также веб-разработчикам, которым необходим высокий уровень контроля над поведением приложения.
Платформа ASP.NET MVC предоставляет следующие возможности.
·Разделение задач приложения (логика ввода, бизнес-логика и логика пользовательского интерфейса), широкое возможности тестирования и разработки на основе тестирования. Все основные контракты платформы MVC основаны на интерфейсе и подлежат тестированию с помощью макетов объекта, которые имитируют поведение реальных объектов приложения. Приложение можно подвергать модульному тестированию без запуска контроллеров в процессе ASP.NET, что ускоряет тестирование и делает его более гибким. Для тестирования возможно использование любой платформы модульного тестирования, совместимой с .NET Framework.
·Расширяемая и дополняемая платформа. Компоненты платформы ASP.NET MVC можно легко заменить или настроить. Разработчик может подключать собственный механизм представлений, политику маршрутизации URL-адресов, сериализацию параметров методов действий и другие компоненты. Платформа ASP.NET MVC также поддерживает использование моделей контейнера внедрения зависимости (DI) и инверсии элемента управления (IOC). Модель внедрения зависимости позволяет внедрять объекты в класс, а не ожидать создания объекта самим классом. Модель инверсии элемента управления указывает на то, что если один объект требует другой объект, то первые объекты должны получить второй объект из внешнего источника (например, из файла конфигурации). Это облегчает тестирование.
·Расширенная поддержка маршрутизации ASP.NET. Этот мощный компонент сопоставления URL-адресов позволяет создавать приложения с понятными URL-адресами, которые можно использовать в поиске. URL-адреса не должны содержать расширения имен файлов и предназначены для поддержки шаблонов именования URL-адресов, обеспечивающих адресацию, оптимизированную для поисковых систем (SEO) и для передачи репрезентативного состояния (REST).
·Поддержка использования разметки в существующих файлах страниц ASP.NET (ASPX), элементов управления (ASCX) и главных страниц (MASTER) как шаблонов представлений. Вместе с платформой ASP.NET MVC можно использовать существующие функции ASP.NET, например вложенные главные страницы, встроенные выражения (<%= %>), декларативные серверные элементы управления, шаблоны, привязку данных, локализацию и т. д.
·Поддержка существующих функций ASP.NET. ASP.NET MVC позволяет использовать такие функции, как проверка подлинности с помощью форм и Windows, проверка подлинности по URL-адресу, членство и роли, кэширование вывода и данных, управление состоянием сеанса и профиля, наблюдение за работоспособностью, система конфигурации и архитектура поставщика.
приложение платформа visual studio
2. Расчетная часть
.1 Процесс создания приложения
Рис. Схема приложения
.1.1 Контроллеры
using System;
using System.Collections.Generic;System.IO;System.Linq;System.Web;System.Web.Mvc;System.Text;System.Security.Cryptography;wIN_test_1_.Models;wIN_test_1_.Attributes;wIN_test_1_.Controllers
{class AuthController : Controller
{WINEntities Dc = new WINEntities();ActionResult Index()
{View("Login");
}
[HttpGet]ActionResult Register()
{View();
}
[HttpPost]ActionResult Register(string login, string passwd, string name, string logo)
{(Dc.Users.SingleOrDefault(x=>x.login==login)!=null)
{Content("Упс! Ошибочка вышла - попробуй ввести другие аутентификационные данные...");
}randomizer = new Random();saltBuilder = new StringBuilder(randomizer.Next(4, 14));(int i = 0; i < saltBuilder.Capacity; i++)
{.Next();.Append(((char) randomizer.Next(0x21,0x7e)));
}salt = saltBuilder.ToString();
authData = Encoding.UTF8.GetBytes(salt + passwd + login);hasher = new SHA512Managed();hash = Convert.ToBase64String(hasher.ComputeHash(authData));user = new User()
{= Guid.NewGuid(),=salt,= login,= hash,= name
};.Users.AddObject(user);.SaveChanges();(user.id, Guid.NewGuid());(var ctx = System.IO.File.CreateText(HttpContext.Server.MapPath("~/app_data/logos/")+user.id.ToString()))
{.Write(logo);
}Json(new UserModel(user));
}
ActionResult Login()
{View();
}
[HttpPost]ActionResult Login(string login, string passwd)
{user = Dc.Users.SingleOrDefault(x => x.login == login);(user != null)
{authData = Encoding.UTF8.GetBytes(user.salt + passwd + login);hasher = new SHA512Managed();hash = Convert.ToBase64String(hasher.ComputeHash(authData));
(hash == user.password)
{js = Json(new UserModel(user));ses = new Session() {uid = user.id, id=Guid.NewGuid()};(user.id, ses.id);js;
}
}Content("fail");
}
[Authorized]ActionResult Logout()
{sesid = Guid.Parse(System.Web.HttpContext.Current.Request.Cookies["sesid"].Value);uid = Guid.Parse(System.Web.HttpContext.Current.Request.Cookies["uid"].Value);ses = Dc.Sessions.SingleOrDefault(x => x.id == sesid && x.uid == uid);(ses != null)
{(Guid.Empty, Guid.Empty);RedirectToAction("Login");
}Content("fail");
}int SetSession(Guid uid, Guid sesid)
{dc = new WINEntities();(sesid==Guid.Empty)
{= Guid.Parse(System.Web.HttpContext.Current.Request.Cookies["sesid"].Value);s = dc.Sessions.Single(x =>x.id==sesid);.Sessions.DeleteObject(s);.SaveChanges();.Response.Clear();0;
}.Web.HttpContext.Current.Response.Cookies["uid"].Value=uid.ToString();.Web.HttpContext.Current.Response.Cookies["sesid"].Value = sesid.ToString();ses = new Session {id = sesid, uid = uid};.Sessions.AddObject(ses);saveChanges = dc.SaveChanges();saveChanges;
}
}
}
System;System.Collections.Generic;System.Drawing;System.Drawing.Imaging;System.Linq;System.Web;System.Web.Mvc;wIN_test_1_.Attributes;wIN_test_1_.Models;System.IO;
wIN_test_1_.Controllers
{class HomeController : Controller
{
[Authorized]ActionResult Index()
{View();
}ActionResult About()
{View();
}
[HttpPost]
[Authorized]ActionResult ChangeLogo(string data)
{uid = HttpContext.Request.Cookies.Get("uid").Value;(var fctx = System.IO.File.CreateText(HttpContext.Server.MapPath("~/app_data/logos/") + uid))
{.Write(data);
}Content("ok");
}
[HttpPost]ActionResult TakeImageList(Guid location, int offset, int count)
{= offset * count;ctx = new WINEntities();cnt = ctx.Images.LongCount();(cnt < 15) count = (int)cnt;if (count > 15) count = 15;entities = (from image in ctx.Images where image.location == location orderby image.date select image).Skip(offset).Take(count).ToList();result = new List<ImageMiniatureModel>();(var entity in entities)
{.Add(new ImageMiniatureModel(entity));
}Json(result);
}
[HttpPost]ActionResult GetImage(Guid id)
{(var ctx = new WINEntities())
{image = ctx.Images.SingleOrDefault(x => x.id == id);Json(new ImageModel(image));
}
}
[HttpPost]ActionResult SaveImage(Guid id, Guid uid, Guid location, string data)
{(data.IndexOf("data:image/png;base64,") != 0)Content("Замечтался, петушок?)");(var ctx = new WINEntities())
{
image = null;(uid == Guid.Empty)
{= Guid.Parse(HttpContext.Request["uid"]);
}(location == Guid.Empty)
{= uid;
}(id == Guid.Empty)
{= Guid.NewGuid();= new Image()
{= id,= uid,= location,= DateTime.Now
};.Images.AddObject(image);
}
{= (from img in ctx.Images where img.id == id select img).FirstOrDefault() ?? new Image() { id = Guid.NewGuid(), uid = uid, location = uid };(image.uid != uid)
{Content("Замечтался, петушок?)");
}
}(var file = System.IO.File.CreateText(HttpContext.Request.MapPath("~/app_data/images/") + image.id))
{.Write(data);
}[] min = Convert.FromBase64String(data.Replace("data:image/png;base64,", ""));(MemoryStream ms = new MemoryStream(min))
{bmp = new System.Drawing.Bitmap(ms);newX = 64;newY = bmp.VerticalResolution * newX / bmp.HorizontalResolution;.SetResolution(newX, newY);.Flush();(var memory = new MemoryStream())
{enc = new EncoderParameters(1);.Param[0] = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionLZW);.Save(memory,.GetImageEncoders().SingleOrDefault(x => x.MimeType == "image/png"), enc);(fctx =.IO.File.CreateText(HttpContext.Request.MapPath("~/app_data/images/") + image.id +
".min"))
{.Write("data:image/png;base64," + Convert.ToBase64String(memory.GetBuffer()));
}
}
}.SaveChanges();js = Json(new ImageModel(image) { Data = "" });js;
}
}
[HttpGet]ActionResult FriendList()
{View();
}
[HttpPost]ActionResult FriendList(int offset, int count)
{(var ctx = new WINEntities())
{cnt = ctx.Users.LongCount();(cnt<15)
{(offset > cnt) offset = 0;= (int)cnt - offset;
}if ((offset + count) > cnt)
{Content("Упс, ошибочка...");
}users = (from user in ctx.Users orderby user.rate select user).Skip(offset).Take(count).ToList();result = new List<UserModel>();(var user in users)
{.Add(new UserModel(user));
}Json(result);
}
}
}
}
System;System.Collections.Generic;System.Linq;System.Web;System.Web.Mvc;System.Web.Routing;wIN_test_1_.Models;wIN_test_1_.Controllers
{class UserController : Controller
{
//
// GET: /User/ActionResult Index()
{RedirectToAction("Index", "Home");
}
[HttpGet]ActionResult Index(Guid uid)
{.uid = uid;View();
}
[HttpPost]ActionResult GetInfo(Guid uid)
{ctx = new WINEntities();Json(new UserModel(ctx.Users.SingleOrDefault(x => x.id == uid)));
}
}
}
.1.2 Представления
@{.Title = "Login";
}
<style type="text/css">
#authpanel
{: absolute;color: #99CCFF;: 2em 25% 3% 25%;: 0.5em;: 20%;: 35%;: 15%;: 28%;: 40%;
moz-border-radius: 5px;
khtml-border-radius: 10px;width: 300px;
}
#welcome
{: absolute;: 28%;: 20%;: left;: 35%; /*height:35%;*/radius:6px;
moz-border-radius:5px;
khtml-border-radius:10px;width: 300px;
}
.authhelper
{: 100%;: 1.5em;
}
.authhelper:hover
{: 1.5px;color: Black;
}
{: Black;weight: bold;family: Segoe UI;
}
#submit:hover
{: 2px solid Black;
}
*
{radius: 4px;
}
#submit
{: 1px solid Black;align: center;
}
#menu
{: 11px Arial, Helvetica, sans-serif;image: url('../../Content/bc_bg.png');repeat: repeat-x;: 30px;height: 30px;: #9b9b9b;: solid 1px #cacaca;: 100%;: hidden;: 0px;: 0px;
}
#menu li
{style-type: none;: left;left: 10px;
}
#menu a
{: 30px;: block;image: url('../../Content/bc_separator.png');repeat: no-repeat;position: right;right: 15px;decoration: none;: #454545;
}
.home
{: none;: 8px 0px;
}
#menu a:hover
{: gray;
}
</style>
<ul id="menu">
<li><a><img src="../../Content/lolwin_logo.png" alt="Lolw.in">
</ul>
<img id="welcome" src="../../Content/welcome.png" />
<p id="notify"></p>
<div id="authpanel">
<p>Введите логин</p>
<input>
<input>
<div>
@Html.ActionLink("Нет странички? Заведи!", "Register")
</div>
<script type="text/javascript">
$('#submit').live('click', function () {login = document.getElementById('login');passwd = document.getElementById('passwd');
//alert('{"login":"' + $(login).value + '", "password":"' + SHA256(passwd.value).toString() + '"}');
$.ajax({: 'POST',: 'Login',: 'application/json',: 'json',: '{"login":"' + login.value + '", "passwd":"' + SHA256(passwd.value).toString() + '"}',: function (data) {.location = window.location.href="/";
}
});
});
</script>
@{.Title = "Register";
}
<style type="text/css">
#authpanel
{: absolute;color: #99CCFF;: 2em 25% 3% 25%;: 0.5em;: 20%;: 35%;: 20%;: 23%;: 40%;radius:6px;
moz-border-radius:5px;
khtml-border-radius:10px;width: 300px;
}
#welcome
{: absolute;: 28%;: 20%;: left;: 35%; /*height:35%;*/radius:6px;
moz-border-radius:5px;
khtml-border-radius:10px;width: 300px;
}
.authhelper
{: 100%;: 1.5em;
}
.authhelper:hover
{: 1.5px;color: Black;
}
{: Black;weight: bold;family: Segoe UI;
}
#submit:hover
{: 2px solid Black;
}
*
{radius: 4px;
}
#submit
{: 1px solid Black;align: center;
}
#menu
{: 11px Arial, Helvetica, sans-serif;image: url('../../Content/bc_bg.png');repeat: repeat-x;: 30px;height: 30px;: #9b9b9b;: solid 1px #cacaca;: 100%;: hidden;: 0px;: 0px;
}
#menu li
{style-type: none;: left;left: 10px;
}
#menu a
{: 30px;: block;image: url('../../Content/bc_separator.png');repeat: no-repeat;position: right;right: 15px;decoration: none;: #454545;
}
.home
{: none;: 8px 0px;
}
#menu a:hover
{: gray;
}
</style>
<ul id="menu">
<li><a>
<img src="../../Content/lolwin_logo.png" alt="Lolw.in">
</ul>
<br />
<img id="welcome" src="../../Content/welcome.png" />
<div id="authpanel"><p>Введите ваше имя</p>
<p id='notify'></p>
<input>
<p>Введите желаемое имя</p>
<input>
<p id="passvalid" />
<p>Введите пароль</p>
<input>
<p>Нажмите для регистрации</p>
<div>
@Html.ActionLink("Уже есть аккаунт? Поехали!", "Login");
</div>
<script type="text/javascript">passvalid = document.getElementById("passvalid");
$('#password').live("change",function () {($(this).attr('value').length < 6) {
passvalid.innerHTML = "Слишком короткий пароль!";
} else {.innerHTML = "Слишком длинный пароль!";
}
});
$('#submit').live('click', function () {login = document.getElementById('login');passwd = document.getElementById('passwd');name = document.getElementById('name');
$.ajax({: "Register",: "POST",: "application/json",: "json",: "{'login':'" + login.value + "','name':'" + name.value + "','passwd':'" + SHA256(passwd.value).toString() + "', 'logo':''}",: function (data) {.location = window.location.href = "/";
}
});
});
</script>
@{= "";
}
<!DOCTYPE html>
<html>
<style>
#menu
{: 11px Arial, Helvetica, sans-serif;image: url('../../Content/bc_bg.png');repeat: repeat-x;: 30px;height: 30px;: #9b9b9b;: solid 1px #cacaca;: 100%;: hidden;: 0px;: 0px;
}
#menu li
{style-type: none;: left;left: 10px;
}
#menu a
{: 30px;: block;image: url('../../Content/bc_separator.png');repeat: no-repeat;position: right;right: 15px;decoration: none;: #454545;
}
.home
{: none;: 8px 0px;
}
#menu a:hover
{: gray;
}
</style>
<head>
<meta charset="utf-8" />
<title>Главная страница</title>
<link href="@Url.Content("~/Content/style.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/sha256.js")"></script>
<script src="@Url.Content("~/Scripts/nav.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/draw.js")" type="text/javascript"></script>
<script src="../../Scripts/jcarousellite.js" type="text/javascript"></script>
</head>
<body>
<ul id="menu">
<li><a><img src="../../Content/lolwin_logo.png" alt="Lolw.in">
<li><a id="usermessage"> Добро пожаловать!</a></li>
<li>@Html.ActionLink("Местные","FriendList", "Home")</li>
<li><a>
<li><a id="blogo">
</ul>
<div id="tools">
<br />
<br />
<div id="bnew">
<br />
<br />
<div id="bsend">
</div>
<canvas id="view" width="600" height="400" onmousedown="mDown(event);" onmousemove="mMove(event);" onmouseup="mUp();">
<p>Чувак, нам дико жаль, но твой браузер не поддерживает всех функций нашего сервиса.<br />Мы очень извинияемся за это. <br />Ниже есть список поддерживаемых браузеров. <br />Просто выбери тот, который тебе нравится.</p>
<p>Поддерживаемые браузеры: <a href="#"justify">href="#"justify">href="#"justify"></canvas>
<div id="gallery_controller_left">
<img src="../../Content/image009.png">
</div>
<div id="gallery_controller_right">
<img src="../../Content/image007.png">
</div>
<div id="Gallery" >
<ul id="imageslist">
</ul>
</div>
<script type="text/javascript">prepare('view');takeImageList(_uid, 0, 14);</script>
</body>
</html>
@{= "";
}
<!DOCTYPE html>
<html>
<style>
#menu
{: 11px Arial, Helvetica, sans-serif;image: url('../../Content/bc_bg.png');repeat: repeat-x;: 30px;height: 30px;: #9b9b9b;: solid 1px #cacaca;: 100%;: hidden;: 0px;: 0px;
}
#menu li
{style-type: none;: left;left: 10px;
}
#menu a
{: 30px;: block;image: url('../../Content/bc_separator.png');repeat: no-repeat;position: right;right: 15px;decoration: none;: #454545;
}
.home
{: none;: 8px 0px;
}
#menu a:hover
{: gray;
}
</style>
<head>
<meta charset="utf-8" />
<title>Главная страница</title>
<link href="@Url.Content("~/Content/style.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/sha256.js")"></script>
<script src="@Url.Content("~/Scripts/nav.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/draw.js")" type="text/javascript"></script>
<script src="../../Scripts/jcarousellite.js" type="text/javascript"></script>
</head>
<body>
<ul id="menu">
<li><a><img src="../../Content/lolwin_logo.png" alt="Lolw.in">
<li><a id="usermessage"> Добро пожаловать!</a></li>
<li>@Html.ActionLink("Местные","FriendList", "Home")</li>
<li><a>
<li><a id="blogo">
</ul>
<div id="tools">
<br />
<br />
<div id="bnew">
<br />
<br />
<div id="bsend">
</div>
<canvas id="view" width="600" height="400" onmousedown="mDown(event);" onmousemove="mMove(event);" onmouseup="mUp();">
<p>Чувак, нам дико жаль, но твой браузер не поддерживает всех функций нашего сервиса.<br />Мы очень извинияемся за это. <br />Ниже есть список поддерживаемых браузеров. <br />Просто выбери тот, который тебе нравится.</p>
<p>Поддерживаемые браузеры: <a href="#"justify">href="#"justify">href="#"justify"></canvas>
<div id="gallery_controller_left">
<img src="../../Content/image009.png">
</div>
<div id="gallery_controller_right">
<img src="../../Content/image007.png">
</div>
<div id="Gallery" >
<ul id="imageslist">
</ul>
</div>
<script type="text/javascript">('view');
@Html.Raw("_uid = '" + ViewBag.uid + "';")(_uid, 0, 14);
</script>
</body>
</html>
2.1.3 Модели
В данном случае все модели генерируются динамически с помощью Ado.NET Entity Framework.
System;System.Collections.Generic;System.Linq;System.Web;System.IO;wIN_test_1_.Models
{
[Serializable]class UserModel
{Guid Id { get; set; }string Name { get; set; }long Rate { get; set; }string Logo { get; set; }UserModel(User user)
{= user.id;= user.name;= user.rate;(var reader = new StreamReader(HttpContext.Current.Server.MapPath
("~/App_Data/logos/" + user.id.ToString())))
{= reader.ReadToEnd();
}
}User User()
{user = new WINEntities().Users.Single(x => x.id == Id);user;
}
}
[Serializable]class ImageModel
{Guid Id { get; set; }Guid Uid { get; set; }Guid Location { get; set; }string Author { get; set; }string LocationName { get; set; }string Data { get; set; }DateTime Date { get; set; }
ImageModel(Image image)
{.Id = image.id;.Uid = image.uid;.Location = image.location;.Date = image.date;.Author = image.Author.name;.LocationName = image.Location.name;path = HttpContext.Current.Server.MapPath("~/app_data/images") + "/" + Id.ToString();= File.ReadAllText(path);
}Image Image()
{dc = new WINEntities();image = dc.Images.SingleOrDefault(x => x.id == Id);image;
}
}
[Serializable]class ImageMiniatureModel
{Guid Id { get; set; }Guid Uid { get; set; }Guid Location { get; set; }string Author { get; set; }string LocationName { get; set; }string Data { get; set; }DateTime Date { get; set; }
ImageMiniatureModel(Image image)
{.Id = image.id;.Uid = image.uid;.Location = image.location;.Date = image.date;.Author = image.Author.name;.LocationName = image.Location.name;path = HttpContext.Current.Server.MapPath("~/app_data/images") + "/" + Id.ToString()+".min";= File.ReadAllText(path);
}Image Image()
{dc = new WINEntities();image = dc.Images.SingleOrDefault(x => x.id == Id);
return image;
}
}
}
Платформа Entity Framework представляет собой набор технологий ADO.NET, обеспечивающих разработку приложений, связанных с обработкой данных. Архитекторам и разработчикам приложений, ориентированных на обработку данных, приходится учитывать необходимость достижения двух совершенно различных целей. Они должны моделировать сущности, связи и логику решаемых бизнес-задач, а также работать с ядрами СУБД, используемыми для сохранения и получения данных. Данные могут распределяться по нескольким системам хранения данных, в каждой из которых применяются свои протоколы, но даже в приложениях, работающих с одной системой хранения данных, необходимо поддерживать баланс между требованиями системы хранения данных и требованиями написания эффективного и удобного для обслуживания кода приложения.
В Entity Framework разработчики получают возможность работать с данными, представленными в форме относящихся к конкретным доменам объектов и свойств, таких как клиенты и их адреса, не будучи вынужденными обращаться к базовым таблицам и столбцам базы данных, где хранятся эти данные. Entity Framework дает разработчикам возможность работать с данными на более высоком уровне абстракции, создавать и сопровождать приложения, ориентированные на работу с данными, одновременно с этим сокращая объем кода, по сравнению с традиционными приложениями. Поскольку Entity Framework является компонентом .NET Framework, приложения Entity Framework могут работать на любом компьютере, где установлена платформа .NET Framework, начиная с версии 3.5 с пакетом обновления 1 (SP1).
Многолетним и общим подходом к разработке является подход, при котором построение приложения или службы представляет собой его разделение на три части: модель домена, логическую модель и физическую модель. Модель домена определяет сущности и связи в моделируемой системе. Логическая модель для реляционной базы данных обеспечивает нормализацию сущностей и связей в целях создания таблиц с ограничениями внешнего ключа. В физической модели учитываются возможности конкретной системы обработки данных путем определения зависящих от ядра базы данных подробных сведений о хранении данных, которые касаются секционирования и индексирование.
Физическая модель совершенствуется администраторами базы данных в целях повышения производительности, но программисты, которые разрабатывают код приложения, в основном вынуждены ограничиваться работой с логической моделью, подготавливая SQL-запросы и вызывая хранимые процедуры. Модели домена в основном используются как инструмент для представления и обмена мнениями о требованиях к приложению, поэтому чаще всего служат в качестве практически не изменяющихся схем, которые рассматриваются и обсуждаются на ранних стадиях проекта, после чего выходят из сферы внимания. Во многих коллективах разработчиков принято пропускать этап создания концептуальной модели и начинать с определения таблиц, столбцов и ключей в реляционной базе данных.
Платформа Entity Framework придает значимость моделям, позволяя разработчикам выполнять запросы к сущностям и связям в модели домена (которая называется концептуальной моделью в Entity Framework ), при этом для перевода этих операций в команды, определяемые источником данных, используется сама платформа Entity Framework . Это позволяет отказаться от применения в приложениях жестко заданных зависимостей от конкретного источника данных. Концептуальная модель, модель хранения и сопоставление между ними выражены в схемах на основе XML и определены в файлах с именами с соответствующими расширениями.
·Язык CSDL определяет концептуальную модель. Язык CSDL - это реализация модели EDM для платформы Entity Framework . Расширение файла - CSDL.
·Язык SSDL определяет модель хранения данных, которая также называется логической моделью. Расширение файла - SSDL.
·Язык MSL определяет сопоставление модели хранения и концептуальной модели. Расширение файла - MSL.
Модель хранения и сопоставления при необходимости могут быть изменены без изменения концептуальной модели, классов данных и кода приложения. Модели хранения зависят от поставщика, поэтому можно работать с согласованной концептуальной моделью через различные источники данных.
В Entity Framework файлы модели и сопоставления служат для выполнения операций создания, чтения, обновления и удаления, выполняемых над сущностями и связями концептуальной модели, в эквивалентные операции в источнике данных. Модель Entity Framework поддерживает даже сопоставление сущностей в концептуальной модели с хранимыми процедурами в источнике данных.
При использовании объектно-ориентированного программирования для взаимодействия с системами хранения данных возникают сложности. Безусловно, организация классов часто напоминает организацию таблиц реляционной базы данных, но такое соответствие неидеально. Несколько нормализованных таблиц часто соответствуют единственному классу, а связи между классами представлены не так, как связи между таблицами. Например, для представления клиенту заказа на продажу в классе Order может использоваться свойство, содержащее ссылку на экземпляр класса Customer, но строка таблицы Order базы данных содержит столбец внешнего ключа (или набор столбцов) со значением, которое соответствует первичному ключу в таблице Customer. Класс Customer может включать свойство с именем Orders, содержащее коллекцию экземпляров класса Order, но таблица Customer базы данных не содержит сравнимого столбца. В этом случае Entity Framework предоставляет разработчикам гибкость в представлении связей или более полные связи модели (такие, как в базе данных).
В существующих решениях была предпринята попытка устранить этот разрыв, часто называемый «несоответствием типов данных» (impedance mismatch), путем сопоставления с реляционными таблицами и столбцами только объектно-ориентированных классов и свойств. Вместо данного традиционного подхода в Entity Framework реляционные таблицы, столбцы и ограничения внешнего ключа логических моделей преобразуются в сущности и связи концептуальных моделей. Это позволяет достичь большей гибкости при определении объектов и оптимизации логической модели. С помощью инструментов модель EDM (сущностная модель данных) формируются расширяемые классы данных, основанные на концептуальной модели. Эти классы являются разделяемыми классами, которые могут быть расширены с помощью дополнительных членов, добавленных разработчиком. По умолчанию классы, сформированные для определенной концептуальной модели, являются производными от базовых классов, предоставляющих службы для материализации сущностей в виде объектов, а также для отслеживания и сохранения изменений. Разработчики могут использовать эти три класса для работы с сущностями и связями как с объектами, относящимися к ассоциациям. Разработчики смогут также настраивать классы, сформированные для концептуальной модели.Framework - это не просто еще одно средство объектно-реляционного сопоставления. Она предоставляет приложениям возможность чтения и изменения данных, представленных в виде сущностей и связей в концептуальной модели. Entity Framework использует данные в модели и файлах сопоставления для преобразования запросов объектов к типам сущностей, представленным в концептуальной модели, в запросы, зависящие от источника данных. Результаты запросов преобразуются в объекты, которыми управляют Entity Framework . Платформа Entity Framework реализует следующие способы выполнения запросов к концептуальной модели и возврата объектов.
·LINQ to Entities . Обеспечивает поддержку запросов LINQ для выполнения запросов к типам сущности, которые определены в концептуальной модели. Дополнительные сведения см. в разделе LINQ to Entities.
·Entity SQL . Независимый от хранилища диалект SQL, который работает непосредственно с сущностями в концептуальной модели и поддерживает основные понятия модель EDM (сущностная модель данных) . Entity SQL используется и с запросами объектов, и с запросами, выполняемыми с помощью поставщика EntityClient.
·Методы построителя запросов. Эти методы позволяют создавать запросы Entity SQL с помощью методов запросов в стиле LINQ.
Платформа Entity Framework включает в себя поставщик данных EntityClient. Поставщик управляет соединениями, переводит запросы сущностей в запросы, зависящие от источника данных, и возвращает модуль чтения данных, который используется Entity Framework для материализации данных сущности в виде объектов. Если материализация объектов не требуется, то поставщик EntityClient может также работать в качестве стандартного поставщика данных ADO.NET, позволяющий приложениям выполнять запросы Entity SQL и получать данные только для чтения, возвращаемые модулем чтения данных.
Рис. Доступ к данным Entity Framework
Средства модель EDM (сущностная модель данных) могут сформировать класс, производный от ObjectContext, который представляет контейнер сущностей в концептуальной модели. Контекст объекта предоставляет средства для отслеживания изменений и управления идентификаторами, параллелизмом и связями. Этот класс представляет также доступ к методу SaveChanges, который записывает результаты вставки, обновления и удаления данных в источник данных. Подобно запросам, эти изменения производятся либо командами, автоматически сформированными системой, либо хранимыми процедурами, указанными разработчиком.
Поставщик EntityClient расширяет модель поставщика ADO.NET путем доступа к данным в терминах сущностей и связей концептуальной модели. Выполняет запросы на языке Entity SQL . Entity SQL представляет базовый язык запросов, с помощью которого EntityClient обменивается данными с базой данных. Приложение Entity Framework включает обновленный поставщик данных SqlClient, который поддерживает канонические деревья команд.
Наряду со средой выполнения Entity Framework , .NET Framework версия 4 включает генератор моделей EDM. Эта программа командной строки соединяется с источником данных и формирует файлы модели и сопоставления на основе сопоставления между сущностями и таблицами типа «один к одному». В этой программе используется также файл концептуальной модели (с расширением CSDL) для формирования файла уровня объектов, содержащего классы, которые представляют типы сущностей и контекст ObjectContext.Studio 2010 включает в себя обширный набор поддерживаемых средств для создания и обслуживания файлов моделей и сопоставлений в приложении Visual Studio. Конструктор модель EDM (сущностная модель данных) поддерживает создание усовершенствованных сценариев сопоставления (таких как наследование типа «одна таблица на тип» и «одна таблица на иерархию»), а также разделение сущностей, которые сопоставлены с несколькими таблицами.
Интерфейс пользователя
При переходе по ссылке www.lolw.in пользователь попадает на страницу входа.
Если у пользователя нет странички он может завести ее перейдя на страницу регистрации
После регистрации/входа пользователь попадает на свою страничку
Пользователь может просмотреть список всех пользователей
Актуальность выбранной темы
Задолго до того, как он стал источником коммерческой информации и мощной силой развлечения, которой и является сегодня, прежде, чем он был доступен для широкой публики, Интернет был сфокусирован на социальном взаимодействии. Первоначально компьютерная сеть во времена расцвета "Битлз" предполагалась как военно-ориентированная схема командования и управления. Но поскольку она расширилась, стало возможно создать огромный форум, чтобы обсуждать взаимно интересные темы, и, возможно, даже познакомиться с другими людьми или возобновить старые связи.
Актуальность нашей работы не подлежит сомнениям. Практически каждый из вас имеет аккаунт в той или иной социальной сети. Некоторые ежедневно заходят на свою страницу, некоторые - реже, но всё же равнодушных нет.
Социальные сети стали неотъемлемой частью нашей жизни. Мы заполняем анкеты, общаемся, выкладываем фотографии и музыку. В этом нет ничего плохого, если, конечно, не переходить границы. Ведь жизнь некоторых людей плавно перетекла на монитор компьютера. И это только начало. Ведь социальные сети - это достаточно молодая, неразвитая, но очень перспективная отрасль интернет-сообщества.
Заключение
С развитием технологий Web 2.0 социальные сети обрели осязаемую основу в виде порталов и веб-сервисов. Так, найдя на одном из таких сайтов совершенно незнакомого для себя человека, можно увидеть цепочку промежуточных знакомств, через которую вы с ним связаны. Победное шествие по Интернету социальные сети начали в 1995 году с американского портала Classmates.com («Одноклассники» являются его русским аналогом). Проект оказался весьма успешным, что в следующие несколько лет спровоцировало появление не одного десятка аналогичных сервисов. Но официальным началом бума социальных сетей принято считать 2003-2004 годы, когда были запущены LinkedIn, MySpace и Facebook. И если LinkedIn создавалась с целью установления/поддержания деловых контактов, то владельцы MySpace и Facebook сделали ставку в первую очередь на удовлетворение человеческой потребности в самовыражении. Ведь, в соответствии с пирамидой Маслоу, именно самовыражение является высшей потребностью человека, опережая даже признание и общение. Социальные сети стали своего рода Интернет-пристанищем, где каждый может найти техническую и социальную базу для создания своего виртуального «Я». При этом каждый пользователь получил возможность не просто общаться и творить, но и делиться плодами своего творчества с многомиллионной аудиторией той или иной социальной сети. Нам кажется, что и Lolw.in займет свое место среди социальных сетей и создаст свое, ни с чем не сравнимое сообщество.
Список литературы
1. #"justify">. #"justify">. #"justify">. Русская редакция Вилдермьюс, Шон. Практическое использование ADO.NET. Доступ к данным в Internet
. Сеппа Д. Microsoft ADO .NET
. Рейли Д. Создание приложений Microsoft ASP.NET
. Просиз Дж. Программирование для Microsoft .NEТ
. Эспозито Д. Знакомство с MS ASP.NET 2.0
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Курсовая работа (т)
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ