Использование дейтаграмм для удаленного вызова процедур

Обычно дейтаграммы используются для реализации RPC. На самом деле дела, в часто встречающихся ситуациях клиент отправляет запрос серверу, используя дейтаграммы. Так как доставка запроса не гарантируется, клиент должен повторно передать запрос, если по истечении данного периода ожидания ответ от сервера (для посылки которого также употребляются дейтаграммы) не получен. Сервер должен быть Использование дейтаграмм для удаленного вызова процедур готов к тому, что один и тот же запрос может направляться ему пару раз.

Принципиально отметить, что ни клиенту, ни серверу RPC служебные сигналы, которые, к примеру, нужны при образовании соединения через потоковый сокет, не требуются; заместо этого они связываются вместе средством запросов и ответов. В качестве дополнительной способности RPC Использование дейтаграмм для удаленного вызова процедур может гарантировать надежность взаимодействия методом повторной передачи запросов по истечении периода ожидания, что упрощает разработку приложений. Выражаясь по другому, нередко молвят о том, что клиент и сервер RPC не имеют состояния (они не хранят никакой инфы относительно состояния текущего запроса либо запросов, на которые еще не Использование дейтаграмм для удаленного вызова процедур получен ответ). Отсюда следует, что итог обработки на сервере огромного количества схожих клиентских запросов будет этим же, что и итог обработки одиночного запроса. Это также существенно упрощает проектирование приложений и реализацию их логики.

Сопоставление Berkeley Sockets и Windows Sockets

Программки, использующие стандартные вызовы Berkeley Sockets, будут работать и с Windows Использование дейтаграмм для удаленного вызова процедур Sockets, если вы учтете последующие принципиальные моменты:

• Для инициализации Winsock DLL вы должны вызвать функцию WSAStartup.

• Для закрытия сокета вы должны использовать не функцию close (которая является переносимой), а функцию closesocket (которая такой не является).

• Для закрытия библиотеки DLL вы должны вызвать функцию WSACleanup.

При желании вы сможете использовать Использование дейтаграмм для удаленного вызова процедур типы данных Windows, к примеру, SOCKET и LONG заместо int, как было изготовлено в этой главе. Программки 12.1 и 12.2 были перенесены из UNIX, и для этого потребовались самые малые усилия. Совместно с тем, потребовалось видоизменять DLL и разделы, осуществляющие управление процессами. В упражнении 12.13 вам предлагается перенести эти две программки назад Использование дейтаграмм для удаленного вызова процедур в UNIX.

Перекрывающийся ввод/вывод с внедрением Windows Sockets

В главе 14 описывается асинхронный ввод/вывод, позволяющий сгустку продолжать свое выполнение в процессе выполнения операции ввода/вывода. В той же главе дискуссируется и совместное внедрение сокетов с асинхронным вводом/выводом Windows.

Большая часть задач, связанных с программированием асинхронных операций, можно просто решить Использование дейтаграмм для удаленного вызова процедур, применяя однотипный подход с внедрением потоков. Так, в программке serverSK заместо неблокирующегося сокета употребляется принимающий поток (accept thread). Все же, порты окончания ввода/вывода, связанные с асинхронным вводом/выводом, играют важную роль в обеспечении масштабируемости в случае огромного количества клиентов. Данная тема также рассматривается в главе 14.

Windows Sockets 2

Версия Windows Использование дейтаграмм для удаленного вызова процедур Sockets 2 вводит новые сферы функциональности и доступна на всех системах Windows, хотя системы Windows 9x требуют установки пакета обновления. В примерах применена версия 2.0, но можно использовать и версию 1.1, если требуется сопоставимость с необновленными системами Windows 9х. Не считая того, способностей версии 1.1 почти всегда вам будет полностью довольно Использование дейтаграмм для удаленного вызова процедур. Версия Windows Sockets 2.0 обеспечивает, а именно, последующие способности:

• Стандартизованная поддержка перекрывающегося ввода/вывода (см. главу 14). Эту возможность можно считать важнейшим усовершенствованием.

• Фрагментированный ввод/вывод (scatter/gather I/O) (при посылке и получении данных употребляются буферы, расположенные в памяти вразброс).

• Возможность запрашивать качество обслуживания (скорость и надежность передачи инфы).

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

• Имеется возможность совмещения передачи прямых и оборотных пакетов с запросами соединения (piggybacking).

• Создание многоточечных соединений (multipoint connections) (сравнимо с подключениями по типу Использование дейтаграмм для удаленного вызова процедур конференц-связи).

Резюме

Интерфейс Windows Sockets предоставляет возможность использования API, отвечающего требованиям промышленного эталона, что гарантирует работу ваших программ на различном оборудовании и практически полную переносимость на уровне начального кода. Winsock способен поддержать фактически хоть какой сетевой протокол, но почти всегда применяется протокол TCP/IP.

Winsock сравним с Использование дейтаграмм для удаленного вызова процедур именованными каналами (и почтовыми ящиками) как в отношении многофункциональных способностей, так и в отношении производительности, в большей степени проявляя свои достоинства в тех случаях, когда на 1-ый план выступают вопросы сопоставимости и переносимости программного обеспечения. Имейте в виду, что сокеты ввода/вывода не являются атомарными, потому нужно специально хлопотать Использование дейтаграмм для удаленного вызова процедур о том, чтоб сообщения передавались на сто процентов.

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

Не считая того, в этой главе были приведены примеры использования библиотек DLL для реализации внутрипроцессных серверов и сотворения неопасных в отношении многопоточного выполнения библиотек.

В последующих главах

В главах 11 и 12 было показано, как разрабатывать серверы, отвечающие на запросы клиентов. Серверы Использование дейтаграмм для удаленного вызова процедур, в их разных воплощениях, являются всераспространенным типом приложений Windows. В главе 13 описываются службы Windows (Windows Services), которые обеспечивают стандартный метод сотворения серверов и управления ими в виде служб, что дает возможность организовать их пуск, остановку и мониторинг в автоматическом режиме. В главе 13 показано, как перевоплотить сервер в управляемую службу.

Дополнительная литература

Windows Использование дейтаграмм для удаленного вызова процедур Sockets

Сокетам Windows посвящена книжка [28], также веб-сайт поддержки http://www.sockets.com. Но обозначенная книжка в почти всех качествах устарела, и в ней не употребляются потоки. Более полезными для многих читателей будут книжки, которые упоминаются ниже.

Berkeley Sockets и TCP/IP

В книжке [41] рассмотрены не только лишь Использование дейтаграмм для удаленного вызова процедур сокеты, да и почти все другое, тогда как в первых 2-ух томах этой серии описаны протоколы и их реализация. Исчерпающее рассмотрение интересующего нас вопроса содержится в книжке [42], которая представляет ценность даже для тех, кто имеет дело с другими семействами ОС. Посреди источников, заслуживающих внимания, можно именовать [8] и [12].

Упражнения

12.1. Используя функцию WSAStartup, обусловьте Использование дейтаграмм для удаленного вызова процедур старший и младший номера версий Winsock, поддерживаемые на доступных вам системах.

12.2. Используйте программку JobShell из главы 6 для пуска сервера и нескольких клиентов, при этом каждый клиент должен создаваться с опцией "отсоединения" (-d). Для окончания работы остановите сервер, отправив сигнал управляющего действия консоли средством команды kill. Сможете ли Использование дейтаграмм для удаленного вызова процедур вы предложить какие-либо улучшения в организации остановки сервера в программке serverSK.

12.3. Видоизмените программки клиента и сервера (программки 12.1 и 12.2) таким макаром, чтоб для обнаружения сервера использовались дейтаграммы. В качестве отправной точки может быть применено решение на базе почтового ящика из главы 11.

12.4. Видоизмените сервер именованного канала из главы 11 (программка 11.3) таким макаром, чтоб в Использование дейтаграмм для удаленного вызова процедур нем использовались не потоки из пула потоков сервера, а потоки, создаваемые по просьбе. Заместо подготовительного указания очень допустимого количества экземпляров именованного канала предоставьте системе возможность без помощи других определять наибольшее значение этого параметра.

12.5. Проведите опыты, чтоб найти, вправду ли внутрипроцессные серверы работают резвее внепроцессных. Для этого Использование дейтаграмм для удаленного вызова процедур, к примеру, может быть применена программка подсчета слов (программка 12.3); имеется исполняемый файл этой программки (wc), также функция библиотеки DLL, представленная в программке 12.3.

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

12.7. Разработайте внутрипроцессные серверы другого рода. К примеру, с этой целью преобразуйте подходящим образом программку grep (см. главу 6).

12.8. Усовершенствуйте сервер (программка 12.2) таким макаром, чтоб можно было указывать несколько библиотек DLL в командной Использование дейтаграмм для удаленного вызова процедур строке. Если расположить все DLL в памяти нереально, разработайте стратегию их загрузки и выгрузки.

12.9. Обследуйте функцию setsockopt и внедрение функции SO_LINGER. Примените обозначенную опцию в одном из примеров сервера.

12.10. Используйте способности фрагментированного ввода/вывода Windows Sockets 2.0 для упрощения функций отправки и приема сообщений в программках 12.1 и 12.2.

12.11. Обеспечьте невозможность утечки Использование дейтаграмм для удаленного вызова процедур ресурсов в программке serverSK (за дополнительными разъяснениями обратитесь к упражнению 11.8). Проделайте то же самое с программкой serverSKST, которая была изменена для использования DLL в программке 12.4.

12.12. Расширьте способности обработчика исключений в программке 12.3 таким макаром, чтоб он заносил информацию об исключении и типе исключения в конец временного файла, применяемого для сохранения Использование дейтаграмм для удаленного вызова процедур результатов работы сервера.

12.13. Расширенное упражнение (требуется дополнительное оборудование). Если у вас имеется доступ к UNIX-системе, связанной через сеть с Windows-системой, перенесите на UNIX-систему программку clientSK и попробуйте, получив с ее помощью доступ к программке serverSK, запускать разные Windows-программы. Очевидно, при всем этом вам придется Использование дейтаграмм для удаленного вызова процедур конвертировать такие типы данных, как DWORD либо SOCKET, в другие типы (в этом случае, соответственно, в unsigned int и int). Не считая того, вы должны убедиться в том, что данные, образующие сообщения, передаются в формате с оборотным порядком байтов. Для выполнения соответственных преобразований данных используйте такие функции, как htonl. В конце Использование дейтаграмм для удаленного вызова процедур концов, перенесите в UNIX программку serverSK, чтоб Windows-системы могли делать команды в UNIX. Преобразуйте вызов DLL в вызовы функций разделяемой библиотеки.

12.14. Ознакомьтесь с протоколом защищенных сокетов (Secure Sockets Layer, SSL), обратившись к материалам MSDN либо источникам, обозначенным в разделе "Дополнительная литература". Усовершенствуйте программки, применив SSL для Использование дейтаграмм для удаленного вызова процедур обеспечения безопасности связи клиента с сервером.s

ГЛАВА 13

Windows Services

Серверные программки, рассмотренные в главах 11 и 12, являются консольными приложениями, выполняющимися как фоновые задачки. Вообщем говоря, эти серверы могут производиться в течение неопределенно долгого времени, обслуживая бессчетных клиентов по мере того, как те будут подключаться к серверу, посылать запросы, принимать ответы и разрывать соединения. Таким Использование дейтаграмм для удаленного вызова процедур макаром, обозначенные серверы могут работать как службы непрерывного деяния, но, чтоб быть полностью действенными, эти службы должны быть управляемыми.

Службы Windows Services,[24]известные ранее под заглавием NT Services, предоставляют все средства регулирования, нужные для перевоплощения наших серверов в службы, которые могут активизироваться по команде либо во Использование дейтаграмм для удаленного вызова процедур время пуска системы еще до входа в нее юзеров, приостанавливаться, также возобновлять либо прекращать свое выполнение. Службы могут даже производить мониторинг работоспособности самих служб. Информация о службах хранится в системном реестре.

В конечном счете, неважно какая серверная система наподобие тех, которые были разработаны в главах 11 и 12, должна быть преобразована в службу Использование дейтаграмм для удаленного вызова процедур, в особенности в тех случаях, когда она создана для использования широким кругом клиентов либо снутри организации.

Windows предоставляет целый ряд служб; в качестве примера можно привести службы telnet, отправки и приема факсимильных сообщений, также службы управления безопасностью учетных записей и драйверы устройств. Доступ ко всем службам можно получить Использование дейтаграмм для удаленного вызова процедур через пиктограмму Administrative Tools (Администрирование), который находится в окне панели управления.

Примитивную форму управления сервером можно было следить в приведенной в главе 6 программке JobShell (программка 6.3), которая обеспечивает возможность перевода сервера под управление задачки и его остановку методом посылки сигнала окончания работы. В то же время, службы Windows Services Использование дейтаграмм для удаленного вызова процедур предоставляют еще более широкие способности и отличаются высочайшей надежностью, как это будет продемонстрировано в данной главе на примере преобразования программки к форме, обеспечивающей управление службами Windows Services.

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


ispolzovanie-kompyutera.html
ispolzovanie-kompyuternih-tehnologij-metodik-obucheniya.html
ispolzovanie-kompyuternih-tehnologij-v-logopedicheskoj-rabote.html