Автор работы: Пользователь скрыл имя, 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
Другим типом сетевого сервера может являться фоновый web-сервер. В этом случае, он размещается за прокси-сервером и выполняет ряд функций, в то время как прокси-сервер распределяет заявки по нескольким web-серверам и осуществляет кэширования части содержимого.
Кэширующие серверы – специальные фоновые службы, предназначенные для оптимизации работы с данными. Представителем кэширующих серверов является memcached, который позволяет приложению хранить объекты в распределенном кэше, расположенном в оперативной памяти. Кэширующие серверы так же могут работать посредством стека протоколов TCP/IP, но часто реализуются через Unix IPC. Данные службы решают следующую задачу: в некоторых случаях «достать» объект из БД значительно сложнее, чем сделать то же самое из локальной оперативной памяти, зная его имя или идентификатор. С помощью кэширующих серверов создается кэш объектов с устареванием и вытеснением данных в оперативной памяти, который используется для ускорения операций с объектами. В данном случае приложение, прежде чем запросить объекты у СУБД, запрашивает их у кэша. В случае промаха, происходит запрос к СУБД.
Службы отложенного и
Оба средства имеют определенные преимущества и недостатки, которые и определяют тот или иной вариант использования.
Службы предварительной
Прокси-серверы применяются часто в тех случаях, когда требуется кэшировать и распределять информацию между несколькими web-серверами. Однако, существует интересный способ использования прокси-сервера для удаленного общения с web-сервисом, например, eBay. В данном случае мы имеем возможность ограничить количество соединений с web-сервисом и одновременно обеспечить кэширование его ответов, чтобы уменьшить количество запросов и время реакции.
В современных
web-приложениях практически
Больших успехов в разработке современных web-приложений и добилась команда компании Google. Современные серверные системы характеризуются способностью распределять нагрузку и автоматически переключать пользователя на другой сервер при отказе текущего, пользователь при этом даже не замечает разницы.
Стоит также упомянуть об одном из принципов организации Web 2.0 приложений – mush up, перемешивание. Использование комплекса услуг сторонних сервисов. Так, например, использование сервиса Google Maps при создании сайтов аренды недвижимости будет обеспечивать пользователя наглядной и удобной формой предоставления информации.
Технология Java предоставляет надежную, широко распространенную, независимую от операционной системы платформу, позволяющую быстро создавать и запускать сетевые сервисы. Основой Web-сервисов является воплощенное в платформе J2EE, открытое, часто используемое решение, которое согласуется с существующими системами и предоставляет новые динамичные сервисы с ключевыми технологиями, такими как Enterprise JavaBeansTM, JavaServer PagesTM, сервлеты, поддержка XML.
Преимущества технологии Java:
Java технология обладает
поддержкой ИТ-индустрии и
Java обладает следующими спецификациями для разработки и развертывания веб-сервисов:
В данной работе мы не будем сильно заострять внимание на разработке сервиса при помощи платформы JEE.
Другой вариант реализации «общения» с сервером это Servlets/JSP. Для этого необходимо создать сервлет, который будет обрабатывать GET и POST запросы от клиента, и выдавать соответствующие ответы, как в виде html-страниц, так и набора параметров для обработки на клиенте. В частности остановимся на втором.
Передачу данных можно реализовать многими способами. Выделим два самых популярных:
Второй вариант удобнее использовать совместно с JavaScript, ActionScript, одним из примеров такого принципа работы является почта Google Mail.
В практической части моей работы выбран именно этот вариант из соображений более удобной работы с ActionScript клиентом.
В Приложении А представлен JSON файл авторизации на сервере.
С помощью App Engine можно создавать веб-приложения на базе стандартных технологий Java и выполнять их в масштабируемой инфраструктуре Google. Среда Java предоставляет виртуальную машину Java 6, интерфейс сервлетов Java, а также поддержку стандартных интерфейсов для масштабируемого хранилища данных и служб App Engine, таких как JDO, JPA, JavaMail и JCache. Стандартные средства поддержки упрощают разработку приложений, делают среду привычной и позволяют перемещать приложения непосредственно между средой разработки и собственной средой сервлетов.
App Engine выполняет приложения Java с использованием виртуальной машины Java 6 (JVM). Пакет SDK для службы App Engine поддерживает Java 5 и более новые версии, а виртуальная машина Java 6 может использовать классы, скомпилированные любой версией компилятора Java вплоть до версии Java 6.
Служба App Engine использует в веб-приложениях стандарт сервлетов Java. Классы сервлетов приложений, страницы JSP, статические поля и файлы данных, а также дескриптор развертывания (файл web.xml) и прочие файлы конфигурации развертываются в виде стандартной структуры каталогов WAR. App Engine обслуживает запросы, вызывая сервлеты согласно дескриптору развертывания.
JVM выполняется в защищенной тестовой среде, изолирующей приложения в целях обслуживания и безопасности. Эта тестовая среда гарантирует, что приложения выполняют только те действия, которые не угрожают производительности и возможностям масштабирования прочих приложений. Например, приложение не может создавать потоки, записывать данные в локальную файловую систему или создавать произвольные сетевые подключения. Приложение также не может использовать JNI или иной встроенный код. JVM может выполнять любой байтовый код Java, работающий в условиях ограничений тестовой среды.
App Engine предоставляет масштабируемые службы, которые могут использоваться приложениями для хранения постоянных данных, доступа к ресурсам по сети и выполнения прочих задач, таких как обработка данных изображений. По возможности интерфейсы Java соответствуют принятым стандартным API, что позволяет перемещать приложения в службу App Engine и из нее. Каждая служба также предоставляет полнофункциональный низкоуровневый интерфейс для реализации новых интерфейсных адаптеров и прямого доступа.
Приложения могут использовать хранилище данных App Engine для надежного и масштабируемого хранения данных. Хранилище данных поддерживает два интерфейса Java: JDO 2.3 и JPA 1.0. Эти интерфейсы реализованы с помощью платформы доступа DataNucleus – реализации этих стандартов на основе открытого кода.
Служба Memcache App Engine обеспечивает быстрое распределенное временное хранение данных для кэширования результатов вычислений и запросов к хранилищу данных. Интерфейс Java реализует JCache.
Для доступа к сетевым ресурсам и обмена данными с другими узлами по протоколам HTTP и HTTPS приложения используют службу получения данных по URL. Для доступа к этой службе приложения Java могут просто использовать класс java.net.URLConnection и связанные с ним классы стандартной библиотеки Java.
Для отправки сообщений электронной почты от имени администратора приложения или текущего пользователя приложение может использовать службу Mail. При отправке сообщений электронной почты используется интерфейс JavaMail.
Служба изображений позволяет приложениям преобразовывать и обрабатывать данные изображений в нескольких форматах, выполняя обрезку, поворот, изменение размера и улучшение цветов. Служба способна выполнять ресурсоемкие задачи обработки изображений, оставляя большую часть ресурсов App Engine для обработки веб-запросов
Для аутентификации приложение может использовать службу Аккаунтов Google. Служба Аккаунтов Google выполняет операции по созданию аккаунтов и входу пользователей, а пользователи, уже имеющие аккаунты Google, могут использовать их в приложении. Приложение определяет, когда текущий пользователь выполняет вход, и обращается к адресу электронной почты этого пользователя. Приложения Java могут использовать ограничения безопасности, заданные в дескрипторе развертывания, для управления доступом с помощью Аккаунтов Google и в случае входа пользователя получать его адрес электронной почты. Для создания URL входа и выхода приложение может использовать низкоуровневый API Аккаунтов Google и получать объект данных о пользователе для его хранения в хранилище данных.
В приложении можно настроить запланированные задачи для вызова URL приложения с заданной периодичностью.
Пакет Java SDK для службы App Engine содержит средства тестирования приложений, добавления файлов приложений и загрузки данных журналов. Пакет SDK также содержит компонент для Apache Ant, упрощающий выполнение стандартных задач в службе App Engine. Подключаемый модуль Google для Eclipse добавляет в среду Eclipse функции для разработки, тестирования и развертывания приложений App Engine и включает полный пакет SDK для App Engine. Подключаемый модуль Eclipse также упрощает разработку приложений Google Web Toolkit и их выполнение в службе App Engine. На рисунке 2 представлена консоль администрирования приложения.
Рисунок 2. Консоль администрирования GAE
В процессе разработки и тестирования сервер разработки выполняет приложения на локальном компьютере. Сервер эмулирует хранилище данных, службы и ограничения тестовой среды App Engine. Сервер разработки также может создавать конфигурацию для индексов хранилища данных на основе запросов, выполняемых приложением в ходе тестирования.
Многоцелевое средство AppCfg обрабатывает взаимодействие из командной строки с приложением, выполняющимся на сервере App Engine. Средство AppCfg способно как добавлять приложения на сервер App Engine, так и просто обновлять индекс хранилища данных, что позволяет создавать новые индексы до обновления кода. Оно также может загружать данные журнала приложения для анализа его работы с помощью собственных средств.
Любое серверное приложение содержит панель администрирования для непосредственного доступа к БД, контроля действий пользователей, настройки приложения и выявления неполадок путем изучения системных логов.
В данной приложении для создания панели администрирования задействован популярный, зарекомендовавший себя, MVC фреймворк Struts 1.3.10.
В обычном Java EE веб-приложении клиент, как правило, отправляет информацию на сервер из формы. Введённые данные передаются сервлету, который обрабатывает её, при необходимости взаимодействуя с БД, и формирует HTML ответ. Для больших проектов , например, для портала с сотнями страниц, такой подход является неадекватным, так как объединяет бизнес логику и логику отображения, что делает поддержку чрезвычайно сложной.
Struts был создан для того, чтобы чётко разделить модель, бизнес-логику, представление, HTML-страницы, и контроллер, отвечающий за передачу данных от модели к представлению и обратно. Struts предоставляет стандартный контроллер — сервлет под именем ActionServlet и различные средства для создания страниц представления. Разработчик веб-приложения отвечает за написание кода модели и создание конфигурационного файла struts-config.xml, который связывает воедино модель, представление и контроллер.
Информация о работе Разработка серверной части многопользовательского интерактивного приложения