Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ajax_v_deystvii.pdf
Скачиваний:
34
Добавлен:
05.03.2016
Размер:
5.83 Mб
Скачать

302 Часть Ш. Создание профессиональных Aj'ax-приложений

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

7.5.Резюме

Вданной главе обсуждались вопросы безопасности Ajax-приложений. Мы сосредоточили внимание на тех особенностях, которые отличают защиту инфраструктуры Ajax от защиты обычных Web-приложений. Сначала мы рассмотрели "песочницу" (среду для выполнения JavaScript-программ в составе Web-браузера) и правила, предотвращающие взаимодействие фрагментов кода, полученных из различных источников. Мы также рассмотрели, как можно сделать политику "сервера-источника" менее строгой и разрешить доступ к сторонним Интернет-службам, например к API Google.

Кроме того, мы рассмотрели способы защиты данных, которыми клиент обменивается с сервером. Достаточно надежную защиту обеспечивает протокол HTTPS, но существует и более простое решение, обеспечивающее безопасную передачу пароля средствами обычного протокола HTTP. И наконец, мы показали вам уязвимое место Ajax-приложений, связанное с передачей низкоуровневых данных с сервера. Поскольку в некоторых случаях это может представлять серьезную угрозу, мы рассмотрели варианты архитектуры сервера, минимизирующие опасность. Мы также обсудили средства на стороне сервера, усложняющие несанкционированный доступ к данным.

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

7.6.Ресурсы

Ключи для использования API Web-служб Google можно получить, обратившись по адресу http://www.google.com/apis/.

JavaScript-библиотеки Пола Джонстона, позволяющие создавать MD5дайджесты, представлены по адресу http://pajhome.org.uk/crypt/md5/ md5src.html. Для тех, кому хочется быстро проверить MD5 в действии, можно посоветовать URL генератора контрольных сумм (http: //www. f ilef ormat

.info/tool/hash.htm?text* ajax+in+action).

Библиотеку Apache Commons Codec для Java, которую мы использовали при генерации Base64 MD5 на сервере, можно скопировать с узла http://j akarta.apache.org/commons/codec/.

В разделе 7.1 мы рассмотрели подписание JAR-файлов для создания защищенных приложений, ориентированных на браузеры Mozilla. Дополнительная информация по этому вопросу содержится в документе http://www.mozilla.org/projects/security/components/signed-scripts. html. Сведения об игре "морской бой" доступны по адресу h t t p : / / gamesmuseum.uwaterloo.ca/vexhibit/Whitehill/Battleship/.

Производит

п

Вэтой главе...

Профилирование приложений Ajax

Управление использованием памяти

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

Особенности работы с конкретными браузерами

часть III. Создание профессиональных Ajax-приложенип

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

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

8.1. Что такое производительность

Говоря о производительности, мы чаще всего учитываем два основных фактора; насколько быстро может работать приложение и какой объем системных ресурсов оно потребляет (из системных ресурсов нас обычно интересует лишь объем занимаемой памяти и загрузка центрального процессора). Программа, которая работает слишком медленно, непригодна для решения большинства задач. В современной многозадачной операционной системе программа, которая приводит к остановке остальных задач, не только бесполезна, но и вредна. Две указанные характеристики программы связаны между собой. Ситуацию можно было бы исправить, увеличив скорость процессора, однако неизвестно, существует ли процессор с требуемой тактовой частотой и оправдано ли его применение в конкретной ситуации. Мы, программисты, можем воздействовать лишь на логику приложения.

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]