Тема 13. Программирование для Internet
Контрольные вопросы
Создание приложения с базой данных
Цель работы - создание приложения, выполняющего операции с базой данных: просмотр, добавление, удаление (лаб. работа labDb-[7,c.66]).
Для создания приложения выполнить следующие этапы:
- Установление доступа к базе данных. Этап заключается в регистрации заданной базы данных, как источника данных.
- Создание заготовки приложения. Этап выполняется автоматически с помощью мастера AppWizard при выполнении этапов настройки приложения с выбором технологии доступа к источнику данных ODBC или DAO.
- Реализация операций с базой данных. Этап выполняется с использованием классов MFC соответствующей технологии доступа к данным.
Воспользуемся файлом db.mdb, который представляет собой базу данных, созданную в СУБД Access. Файл содержит сведения о студентах: Name (Имя), Grade (Курс). Лучше создать собственный файл в любой программе для работы с базами данных.
Пусть экранная форма отображения содержимого базы данных будет выглядеть следующим образом (см. рис. 12.1).
Untitled – labDb |
File Edit Record View Help |
[ ] [ ] [ ] [ ] [|<] [<] [>] [>|] |
Студенты: Имя Ann Группа B__ |
Рис. 12.1. Отображение содержимого базы данных
1. Какие технологии доступа к данным имеет Visual C++?
2. В чем отличие технологий ODBC и DAO?
3. Как создать приложение, выполняющее операцию просмотра базы данных?
4. Как создать приложение, выполняющее операции добавления и удаления записей?
Visual C++ обладает технологиями, облегчающими разработку приложений для работы в Internet, значительно расширяющими возможности приложений.
К ним относятся Winsock (Windows Socket), MAPI (Messaging Application Programming Interface), WinInet (Windows Internet), ISAPI (Internet Server API), ActiveX для Web.
Программирование в технологии Winsock основано на следующих принципах. Каждый компьютер имеет числовой адрес – IP-адрес, а программы имеют собственный порт. Комбинация IP-адреса и номера порта называется socket (гнездо). Протокол TCP устанавливает дуплексную связь между программами с помощью гнезд. После установления соединения осуществляется передача и прием потока байтов.
В MFC имеются два класса Winsock: базовый класс CAsyncSocket и производный класс CSocket, реализующих асинхронное программирование Winsock, т.е. в каждый момент времени происходит множество событий. Классы облегчают работу с сокетами, так как обеспечивают вызов нужных функций API. Написание Winsock-программ достаточно трудоемкий процесс, требуется много рутинной работы, например, самостоятельное заполнение структуры адреса гнезда.
Технология Winsock может быть применена для написания клиент/серверных программ для Internet, но не использующих приложения типа электронной почты, Web, FTP и других популярных приложений Internet. Для этих приложений лучше использовать MAPI, WinInet, ISAPI, ActiveX для Web, предоставляющие программистам большие возможности.
Технология MAPI (Messaging API - почтовый интерфейс) – это средство разработки приложений, осуществляющих пересылку и прием сообщений для самой популярной информационной службы Internet - электронной почты.
Для использования MAPI достаточно на этапе 4 создания приложения с помощью AppWizard установить флажок на опции MAPI. В меню File создается новый пункт Send, при выборе которого запускается клиент MAPI для посылки сообщения, содержащего текущий документ. Остается только дописать адрес, тему сообщения и текст для документа. Существуют и более сложные интерфейсы MAPI: Extendet MAPI и OLE MessagingiveX.
Технология ISAPI (Internet Server API) применяется для расширения возможностей сервера HTTP, позволяя создавать расширения и фильтры. Расширения – это динамически загружаемые библиотеки (DLL), которые можно вызывать пользователем прямо с Web-страницы. Фильтры – это библиотеки DLL, работающие вместе с сервером и проверяющие данные, идущие к серверу и от него. Но для того, чтобы использовать расширения и фильтры, ISAPI и Web-страница должны находиться на совместном сервере.
Наиболее популярной технологией программирования для Internet является технология WinInet (Windows Internet). В библиотеке классов MFC Visual C++ имеются классы WinInet, облегчающие написание клиентских приложений и освобождающие от использования WinSock. Связь классов WinInet представлена на рис. 13.1.
Работа в Internet происходит в следующей последовательности: класс CInternetSession создает объект класса; затем, при наличии адреса ресурса URL устанавливается соединение с помощью функции OpenURL() по протоколу HTTP (HiperText Transfer Protocol), FTP (File Transfer Protocol) или Gopher (старый текстовый протокол, связи в котором устанавливает администратор); функция OpenUrl() возвращает указатель на файловый объект класса CStdioFile; затем происходит считывание содержимого файла с помощью функций класса CStdioFile.
CObject
CException CInternetSession
![]() |
CInternetException CInternetConnection
CFile CFtpConnection
CStdioFile CGopherConnection
CInternetFile CHttpConnection
CHttpFile CFileFind
![]() |
CGopherFile CFtpFileFind
CGopherFileFind
![]() |
CGopherLocation
Рис. 13.1. Связь классов WinInet
При отсутствии адреса URL сеанс работы с Internet происходит в следующей последовательности: с помощью функций GetHtttpConnection(), GetFtpConnection(), GetGopherConnection() класса CInternetSession определяется объект соединения и устанавливается соединение по указанному протоколу; затем, вызывается функция OpenFile() соответствующего объекта соединения, т.е. CHttpConnection::OpenFile() возвращает объект класса CHttpFile, CFtpConnection::OpenFile() возвращает объект класса CInternetFile, CGopherConnection::OpenFile() возвращает объект класса CGopherFile.
Классы CHttpConnection, CFtpConnection, CGopherConnection используют протоколы соответственно HTTP, FTP, Gopher и представляют собой постоянное соединение с хост-компьютером (обычно протоколы не поддерживают постоянное соединение). Классы CFileFind, CFtpFileFind, CGopherFileFind служат для просмотра соответствующих каталогов и поиска файлов.
Классы WinInet обычно предназначены для написания клиентских приложений, а для написания серверных приложений можно использовать технологию ISAPI (Internet Server API), расширяющую возможности сервера HTTP (World Wide Web).