Разработка серверной части многопользовательского интерактивного приложения

Автор работы: Пользователь скрыл имя, 28 Мая 2013 в 01:11, курсовая работа

Описание

С развитием web-технологий не стоят на месте и средства коммуникации. Растет скорость доступа в интернет, меняется принцип подключения. Если около десяти лет назад пользователь имел низкоскоростной dial-up доступ в интернет, то сейчас можно подключиться к интернету почти повсеместно, как со стационарного компьютера, используя ADSL, Ethernet, так и с мобильных устройств, используя Wi-Fi, 3G или WiMAX технологии.
Поэтому будущее ведет к наличию статического окна браузера, как двери в динамический мир, на широком спектре устройств, будь то компьютер, панель холодильника или витрина магазина.
Для реализации этого потребуется большое количество бесперебойных и отказоустойчивых систем, сервисов, состоящих из мощных серверов, способных обрабатывать большое количество запросов, распределять нагрузку по всей системе и обладающих самой свежей информацией.

Содержание

Перечень сокращений условных обозначений, символов, единиц и терминов 3
Введение 5
1. Разработка много пользовательских интерактивных приложений 6
1.1. Общая структура 6
1.2. Клиентская часть 9
1.3. Серверная часть 11
2. Серверная часть с технологией Java Enterprise Edition 14
2.1. Веб-сервисы 14
2.2. Servlets/JSP 15
3. Реализация JEE приложения на платформе Google App Engine 16
3.1. Платформа Google App Engine 16
3.2. Панель администрирования 19
3.3. Скрипт обработки 20
Заключение 21
Список использованных источников 22

Работа состоит из  1 файл

Разработка серверной части многопользовательского интерактивного приложения.docx

— 284.67 Кб (Скачать документ)

Запросы от клиента передаются контроллеру в виде «Actions» , действий, определённых в конфигурационном файле. Когда контроллер получает такой запрос, он передаёт его соответствующему Action классу. Последний взаимодействует с кодом Модели и возвращает контроллеру «ActionForward», строку, определяющую страницу для отправления клиенту. Информация передаётся между моделью и представлением в виде особых JavaBeans. Богатая библиотека тегов позволяет получать данные из бинов и записывать их без Java кода. Общая схема Struts приложения представлена на рисунке 3.

Рисунок 3. Схема работы Struts 1.x приложения

Struts также поддерживает i18n (интернационализацию), облегчает валидацию данных полученных из веб-формы и предоставляет механизм создания шаблонов под названием «Tiles», который кроме всего прочего позволяет наследовать веб-страниц.

Для понижения степени  связности кода в узле соприкосновения  логики приложения и бизнес модуля (DAO класс) использован IoC фреймворка Spring. В Приложении Б содержится фрагмент исходного кода описанный ниже.

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

    1. Скрипт обработки

Скрипт обработки представлен  в Приложении В в виде реализации метода doPost() сервлета. При этом JSON запрос парсится в соответствующий объект класса сообщений с помощью нового фреймворка от Google, сериализации/десериализации объектов Java в JSON объекты, Gson.

Последнюю версию исходного  кода приложения можно найти по адресу:

https://trisoc.googlecode.com/svn/trunk/

 

ЗАКЛЮЧЕНИЕ

При выполнении работы были изучены основные подходы написания  «клиент-серверных» приложений. Выбрано  результирующее направление и спроектировано дальнейшее развитие.

Далее последуют конечные этапы разработки и релиз готового приложения. Ожидается большая нагрузка со стороны пользовательского сообщества и соответствующие решения по исправлению «прогибов» системы.

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

 

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

  1. Google App Engine. Руководство разработки [Электронный ресурс] – Режим доступа:

https://developers.google.com/appengine/

  1. Gson user guide[Электронный ресурс] – Режим доступа: https://sites.google.com/site/gson/gson-user-guide
  2. Introducing JSON [Электронный ресурс] – Режим доступа:

http://www.json.org/

  1. IBM. Web-сервисы Java [Электронный ресурс] – Режим доступа:

http://www.ibm.com/developerworks/ru/library/ws-java1/index.html

  1. JavaTutor. Использование XML и Java для разработки Web-сервисов [Электронный ресурс] – Режим доступа:

http://javatutor.net/articles/using-java-and-xml-for-developing-web-services

  1. Struts in Action / T. Husted; - Greenwich: Manning, 2003. – 664 с.
  2. Spring in Action / G. Walls, R. Breidenbach; - Greenwich: Manning, 2005. – 472 с.
  3. Java.  Промышленное  программирование : практ. пособие / И.Н. Блинов, В.С. Романчик. – Минск : УниверсалПресс, 2007. – 704 с.

 

ПРИЛОЖЕНИЕ А

Пример одного из JSON запросов, запрос на авторизацию пользователя

IN: // JSON данные, которые отправляются POST-ом на сервер

{

"c":0, //(обязательный параметр) id команды

"vid":1234567890,// (обязательный параметр) id вьювера (аккаунт, с которого открыта игра) ( long )

"fid":[123, 234, 345], //(обязательный параметр) массив из id друзей вьювера ( Array <long> )

"auth": "md5 hash", //(обязательный параметр) ключ безопасности социальной сети, нужен для транзакций

"s": "md5 hash" // (обязательный параметр), ключ, генерированный клиентом для проверки подлинности

}

 

OUT: // JSON данные, которые возвращает  сервер в поток

{

"time_current":12345, // (обязательный параметр) текущее время на сервере в секундах 

"viewer": { // объект вьювера

"id":123, // id вьювера (longint)

"level":5, // текущий уровень  

"exp":123, // текущее количество опыта

"exp _max":400,  // максимальное количество опыта для текущего уровня  

"score":9999, //текущий максимальный рекорд игрока на этой неделе

"hearts":234, //текущее количество сердец

"gold":1234, // количество золотых монет (реал)

 

"energy":3, //текущее количество энергии

"energy_max":5, //максимальное количество энергии

"energy_start_time":2345, //время, когда последний раз была восстановлена энергия (в секундах), равно нулю, если энергия максимальная (energy == energy_max)

"energy_delta_time":2345, //время, через которое восстанавливается единица энергии (в секундах),  

"tournament_start_time":2345, // время начала последнего турнира

"tournament_delta_time":2000 // одна неделя (в секундах) 

"awards": [3,4,0], // количество заработанных наград (бронз, серебра, золота соответственно)

"field_size": 5 // текущий приобретённый апгрейд (расширение) поля (int) от 0 до n

"field_price": 5 // цена в сердцах следующего апгрейда (расширения) поля (int) от 1 до n

},

"friends": [ // массив объектов друзей

{ "id":123, // id друга

"level":3, // текущий уровень друга

"score": 999, // текущий максимальный рекорд друга на этой неделе  

"request_start_time": 323213, // время, когда игрок у этого друга последний раз просил сердце (в секундах), равно нулю, если можно отослать новый запрос

"request_delta_time": 36000 // допустимое время между запросами (в секундах), например, запросы разрешены не чаще, чем раз в 8 часов  

"awards": [3,4,0], // количество заработанных наград (бронз, серебра, золота соответственно)

"field_size": 5 // текущий приобретённый апгрейд (расширение) поля (int) от 0 до n

},

],

"messages": [ //массив сообщений (подробно  описано в разделе «Сообщения»)

{

"id":1233345, // id сообщения

"type":1, //тип сообщения

"value1": 123, //значение 1 сообщения (дополнительные данные, передаваемые в сообщении)

"value2": 123, //значение 2 сообщения (дополнительные данные передаваемые в сообщении)

},

]

 

}

 

ПРИЛОЖЕНИЕ Б

public class UserAction extends DispatchAction {

 

private IUsersDAO usersDAO;

 

public void setUsersDAO(IUsersDAO usersDAO) {

this.usersDAO = usersDAO;

}

}

 

ПРИЛОЖЕНИЕ В

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

Gson gson = new Gson();

String jsonMessage = request.getParameter(JSON_MESSAGE);

AuthMessage authMessage = gson.fromJson(jsonMessage, AuthMessage.class);

}

 


Информация о работе Разработка серверной части многопользовательского интерактивного приложения