Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Вопрос 1
ODBC
В большинстве систем проектирования баз данных приложения основываются на одном типе баз данных. В таких простых схемах разработчик приложения может программировать напрямую, используя системный интерфейс базы данных. Хотя подобный подход обеспечивает быстрый и эффективный доступ к данным, могут возникать проблемы, когда задача расширяется, и разработчику приходится дорабатывать программу. При данном подходе это означает, что каждая готовая программа должна иметь различные версии с поддержкой всевозможных типов баз данных. Если компании расширяются или объединяются одна с другой, приложение должно получить доступ к базам данных, основанным на различных платформах.
Технология ODBC обеспечивает общий интерфейс для доступа к разнородным базам данных стандарта SQL. ODBC использует язык SQL как стандарт для доступа к данным. На Рисунке 1 показана архитектура ODBC. Этот интерфейс очень удобен: одно приложение может обращаться к различным базам данных SQL через общий набор команд. Таким образом, разработчик может создавать и распространять приложения, не привязываясь к конкретной базе данных.
Рисунок 1. Архитектура ODBC.
Можно также добавить драйвер базы данных, чтобы приложение могло работать с базой данных по выбору пользователя. Как показано на Рисунке 1, менеджер драйверов является промежуточным звеном между приложением и базами данных. Интерфейс ODBC содержит набор функций, который управляет каждым инструментом базы данных. Если приложению нужно сменить используемую базу, разработчик просто заменяет один драйвер другим, и приложение может работать как обычно, без необходимости модификации кода программы.
ADO
OLE DB обеспечивает связывание для программистов на С и C++, а также программистов, использующих языки с С-подобными вызовами функций. Такие языки, как VB и VBScript, не поддерживают тип данных «указатель» (адресных переменных). Следовательно, они не могут использовать связывание в стиле С и прямое обращение к OLE DB.
Вероятно, для большей путаницы разработчики Microsoft ввели еще одну объектную модель доступа к данным: ADO. ADO работает с объектами DAO и RDO, а также поддерживает более простые модели, чем DAO и RDO (хотя с избыточной функциональностью, так что можно выполнить операцию несколькими способами). Объектная иерархия в ADO более однородная, чем в DAO. ADO содержит несколько встроенных объектов, которые упрощают доступ к данным из информационных хранилищ.
На Рисунке 6 показано несколько способов, с помощью которых приложение связывается с базой данных. Например, VB-программист может использовать ADO для соединения приложения с провайдером OLE DB. Если база данных не поддерживает OLE DB, приложение может задействовать ODBC. Программист на Visual C++ может применять ADO или соединяться напрямую через OLE DB.
Рисунок 6. Различие маршрутов приложений в ADO.
Пример в ADO
Рассмотрим простой пример работы ADO. В Листинге 1 показано, как можно использовать типичный объект набор строк (Recordset) центральный объект в ADO. Объект Recordset представляет собой набор записей (таблицу) и поддерживает типы курсоров adOpenForwardOnly, adOpenKeyset, adOpenDynamic и adOpenStatic. Курсор может быть как на стороне сервера (по умолчанию), так и на стороне клиента.
Для доступа к записи ADO требуется просканировать набор строк последовательно. Для доступа к нескольким таблицам необходимо выполнить запрос на объединение JOIN, чтобы получить результат в виде набора строк. Хотя объект Recordset поддерживает доступ к данным без соединения с ними, ADO изначально был спроектирован для данных, с которыми установлено соединение. Такой метод доступа заставляет хранить важные ресурсы на стороне сервера. Вдобавок для передачи набора строк следует использовать метод упорядочивания, названный COM marshalling. COM marshalling это процесс преобразования типов данных, который, естественно, занимает полезные ресурсы системы.
Начиная с ADO 2.1, Microsoft добавляет поддержку XML в объектную модель ADO, что позволяет хранить набор строк Recordset как XML-документ. Однако только при появлении ADO 2.5 ряд ограничений XML, который сохранялся в версии ADO 2.1 (например, жесткая иерархия объектов Recordset), был устранен. Хотя ADO может преобразовать документ XML в набор Recordset, он в состоянии читать только документы в собственной схеме, известной как Advanced Data TableGram (ADTG).
В поисках механизма доступа к несвязанным данным Microsoft расширяет ADO и вводит службу Remote Data Services (RDS). RDS создана после ADO и разрешает передачу объекта Recordset клиенту (например, в Web-браузер) при отсутствии активного соединения. Однако RDS, как и ADO, использует упорядочивание COM marshaling для передачи набора строк от сервера клиенту.
COM
Существует, в общем, два класса механизма доступа к БД:
Для обеспечения доступа к базам данных на стороне Web-клиента (рис. 1) используются языки Java, JavaScript, VBScript и др. Одно из важных свойств этих языков это мобильность, которая заключается в том, что написанный код может использоваться на любой платформе.
Написанные программы (апплеты), на основе этих языков, компилируются в мобильные коды и соответствующие ссылки на определённые коды этих программ ставятся в HTML-документе. Броузер, работающий с таким документом (со ссылками на апплеты) запрашивает у Web-сервера все мобильные коды. Коды могут начать выполняться сразу после размещения в компьютере клиента или быть активизированы с помощью специальных команд. Такие апплеты могут быть специализированы для работы с БД.
Рис.1
Ещё одно важно свойство этих языков это то, что их код является частью HTML документа. Следовательно, для включения нового апплета в вашу Web-систему нужно перекомпоновать HTML-документ, а не Web-сервер.
К одному из важнейших недостатков Java, JavaScript и VBScript технологий нужно отнести невысокое быстродействие выполнения кода. Т.к. апплет не является откомпилированной программой, то его исполнение проходит через интерпретатор.
Рассмотрим общий механизм стандартного доступа к БД на стороне сервера: используются внешние по отношению к серверу Web-программы, взаимодействие которых происходит через специфицированный протокол CGI (Common Gateway Interface) или API (Application Program Interface) или FastCGI.
Общая схема реализации доступа к базе данных с использованием CGI выглядит следующим образом (рис.2): клиент, находясь на странице содержащую одну или несколько форм, предназначенных для запроса из базы данных - данных или ввода данных, заполняет их и отправляет заполненную форму на Web-сервер. Получив заполненную форму, сервер запускает соответствующую внешнюю программу, передавая ей параметры и получая результаты на основе протокола CGI. Внешняя программа преобразовывает этот запрос на язык понятный серверу БД, взаимодействует с ним и после получения результатов запроса формирует соответствующую HTML-страницу и передает ее Web-серверу, завершая свою работу. Web-сервер передает сформированную HTML-страницу клиенту, и на этом процедура доступа к базе данных завершается.
Рис.2
При применении спецификации CGI для обмена данными с внешними программами можно выделить следующие преимущества: возможность работать на любом сервере, не привязанность к конкретному языку программирования, порождение отдельных процессов при запуске CGI-программы и др.
Так же есть и недостатки: так как на сервере для каждого запроса порождается новый процесс, который по окончанию работы завершается, то это приводит к невысокому быстродействию CGI-программы и снижает эффективность работы сервера.
Некоторые недостатки спецификации CGI были оптимизированы в спецификациях API. API запускается, как динамическая библиотека на Web-сервере и выполняет обработку каждого вызова сервера по отдельной структуре памяти, что значительно проще, чем создание отдельного процесса для каждого клиентского запроса. Работа через API происходит на много быстрей чем через CGI. Это объясняется тем, что API, выполняясь в основном процессе сервера, постоянно находится в состоянии ожидания запросов, поэтому время на запуск программы и порождения нового процесса не требуется.
Несмотря на достоинства спецификации API она обладает и рядом существенных недостатков: нет возможности работать на любом сервере, привязанность к конкретному языку программирования, неизолированность процесса и др.
Наилучшие свойства двух рассмотренных спецификаций были интегрированы в интерфейс FastCGI. Приложения FastCGI, как и CGI запускаются отдельными процессами. Но отличие заключается в том, что процессы FastCGI являются постоянно работающими и после выполнения запроса не завершаются, а ожидают новых запросов. В данной спецификации можно выделить следующие достоинства: непривязанность к конкретному языку программирования, изолированность процесса, высокое быстродействие - за счёт постоянно функционирующих процессов и др.
Вопрос 2
Программирование (англ. programming) совокупность процессов, связанных с разработкой программ и их реализацией. В широком смысле к указанным процессам относят все технические операции необходимые для создания программ, включая анализ требований, все стадии разработки, а также реализации в виде готового программного продукта. В узком смысле под программированием понимают только процессы выбора структуры, кодирования и тестирования программ. Существует также понятие математического программирования, которое относится к разделу прикладной математики, исследующей проблемы оптимизации решения различных задач человеческой деятельности (в том числе управления, проектирования, планирования). В зависимости от назначения и/или способа написания программ различают:
структурное программирование (модульное программирование, англ. structured programming, modular programming) метод написания программ небольшими самостоятельными частями модулями, каждый из которых связан с определенной процедурой или функцией. При этом результирующая программа организуется в виде совокупности взаимосвязанных по определенным правилам модулей. Это упрощает разработку сложных программных продуктов и их тестирование. Структурное программирование реализуется языками Паскаль и Оберон;
Процедурное программирование (процедурно-ориентированное программирование, англ. procedure-oriented programming) метод программирования, в соответствии с которым программы пишутся как перечни последовательно выполняемых команд. При этом используется процедурно-ориентированные языки программирования;
Модульное программирование
В его основе лежит разделение программы на логические части (модули) и последовательное программирование каждой части. Если проведено проектирование всей задачи сверху - вниз, то она разбивается на подзадачи, соответствующие возможным модулям. Разбиение задачи на модули должно обеспечивать независимость реализации каждого программного модуля. Последующее формирование комплекса программ не должно требовать знаний о внутренней работе модуля, т.е. необходимо обеспечить простоту сопряжении программных модулей комплекса.
При разбиении задачи на модули следует учитывать их размер. Обычно размер модуля составляет около 60 строк. Такая длина удобна для восприятия, так как она легко охватывается и запоминается. Это число строк помещается на одной странице, его легко прочесть на терминале вычислительной машины. Однако целесообразно выбирать размеры модуля так, чтобы он соответствовал одной подзадаче.
Следует стремиться к независимости программных модулей. Для этого необходимо, чтобы модуль не зависел от источника входных данных, места назначения выходных данных и от предыстории. Каждый модуль должен иметь свое назначение, отличающееся от назначений других модулей. Это должен быть замкнутый блок, вход и выход которого точно определены. Функциональная зависимость модулей сокращает вероятность воздействий изменений в одной подпрограмме на остальные подпрограммы комплекса.
Воздействие изменений в одном модуле на другие модули называют волновым эффектом. Этот эффект можно уменьшить, сведя к минимуму связь между модулями, т. е. сократив количество путей, вдоль которых изменения или ошибки влияют на другие части программы. Простейший путь уменьшения волнового эффекта состоит в сокращении использования глобальных переменных и в сокращении размеров модуля. Минимизация взаимосвязей между модулями проводится обычно за счет усиления связей между элементами одного модуля (модульной прочности). Высокая степень независимости, характерная для структурного програмьифования, и минимальная связь модулей приводят к ограничению влияния ошибок в пределах отдельных модулей и к уменьшению, как функциональной сложности модуля, гак и сложности связей.
Формализация и оптимизация процесса разбиения системы программного обеспечения на модули с учетом приведенных факторов позволяет существенно повысить качество создаваемых комплексов программ и сократить вероятность появления ошибок на дальнейших этапах разработки.
В условиях, когда задано информационное обеспечение, т. е. определено содержание каждого информационного массива и его динамические характеристики, решаются динамические задачи разбиения системы программного обеспечения на модули. В качестве критерия оптимизации используется минимум общего времени обмена с внешней памятью и минимум межмодульного интерфейса.
Исходными данными для постановки и решения динамических задач синтеза системы модулей являются множество информационных массивов системы, для которых определены: множество альтернативных процедур обработки данных, входящих в состав алгоритмов, обеспечивающих решение задач системы; возможные последовательности выполнения процедур в процессе обработки; способы обмена с внешней памятью модульной системы обработки данных; взаимосвязи процедур с ршформационными массивами; временные характеристики обращения к массивам.
Вопрос 3
Основные операторы и функции языка PHP
Операторы и функции являются основными инструментами любого языка программирования, в том числе и PHP. С их помощью можно осуществлять управление последовательностью действий в ходе выполнения сценария. К основным функциям языка PHP можно отнести математические функции и функции работы с данными [2].
К основным операторам языка PHP относятся операторы обработки данных, такие как математические, операторы присваивания, операторы сравнения, логические операторы. Помимо этого, в языке PHP используются управляющие конструкции языка - условные операторы и операторы циклов.
2.1 Математические операторы
К основным математическим операторам PHP относятся следующие.
+ сумма двух чисел;
- разность двух чисел;
* произведение двух чисел;
/ частное от деления двух чисел;
% остаток от деления одного числа на другое (частное по модулю).
Функции:
1Функция abs
Функция abs возвращает модуль числа.
2 Функция round
Функция round производит округление дробного числа до целого.
3 Функция ceil
Функция ceil осуществляет округление дробного числа до следующего целого.
4 Функция floor
Функция floor осуществляет удаление дробной части числа.
5 Функция sqrt
Функция sqrt возвращает квадратный корень из заданного числа.
6 Функция pow
Функция pow производит возведение заданного числа в степень.
7 Функция sin
Функция sin возвращает синус числа.