Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный_практикум.doc
Скачиваний:
74
Добавлен:
15.11.2019
Размер:
45.35 Mб
Скачать

Лабораторная работа № 11: Динамическая связь приложений через библиотеку классов

Содержание

  1. Вводная часть

  2. Удалённый объект: создание библиотеки классов удалённого объекта

  3. Клиент: создание приложения Windows Forms

  4. Сервер: создание консольного приложения

  5. Завершающая часть

  6. О приложении к Лабораторной работе № 11

1. Вводная часть

В этой работе будет рассмотрена работа с динамически связанными приложениями. Нас интересует именно те случаи, когда одно приложение способно и может при необходимости передавать данные в другое приложение, причём оба приложения запущены в один и тот же момент и для передачи данных не используются временные файла на жёстком диске. Фактически приложения будут общаться друг с другом словно клиент и сервер. То есть это общение будет аналогично общению между удалёнными машинами (через протоколы HTTP, FTP или TELNET). Для реализации данной функциональности лучше всего использоваться так называемые «каналы».

Для чего может понадобится подобное? Динамическая связь приложений как удалённо, так и на локальной машине удобна для передачи малых объёмов информации. При этом данные передаются по защищённому каналу (данные можно предварительно зашифровать тем же MD5-хэшем). Также, такая связь приложений не оставляет лишнего «мусора» изначально. А также, возможно реализовать удалённое взаимодействие клиента и сервера.

Что такое каналы?

Каналы используются инфраструктурой удалённого взаимодействия платформы .NET Framework для передачи удаленных вызовов. Если клиент вызывает удаленный объект, вызов «сериализуется» (перевод структуры данных в последовательность битов) в сообщение, которое отправляется по клиентскому каналу, а получается по каналу сервера. После получения сообщения, оно «десериализуется» и обрабатывается. Возвращаемые значения передаются по каналу сервера, а их получение производится по каналу клиента.

Класс IpcChannel является удобным классом, в котором сочетаются функциональные возможности класса IpcClientChannel и класса IpcServerChannel.

Для работы с каналами нам потребуются следующие пространства имён:

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

Пространство имён: System.Runtime.Remoting.Channels.Ipc;

Сборка: System.Runtime.RemotingSystem.Runtime.Remoting.dll).

2. А также основные пространства имён:

System.Runtime.Remoting;

System.Runtime.Remoting.Channels;

Что такое IPC?

Межпроцессное взаимодействие (Inter-Process Communication, IPC) — набор способов обмена данными между множеством потоков в одном или более процессах. Процессы могут быть запущены на одном или более компьютерах, связанных между собой сетью. IPC-способы делятся на методы обмена сообщениями, синхронизации, разделяемой памяти и удалённых вызовов (RPC). Методы IPC зависят от пропускной способности и задержки взаимодействия между потоками и типа передаваемых данных.

IPC также может упоминаться как межпотоковое взаимодействие (inter-thread communication), межпоточное взаимодействие и межпрограммное взаимодействие (inter-application communication). IPC наряду с концепцией адресного пространства является основой для разграничения адресного пространства.

Что будет представлять собой приложение, разрабатываемое в данной работе?

Первое приложение будет представлять собой окно пустое Windows Forms. Так будет реализован клиент. Реализация сервера будет в виде консольного окна. Удалённый объект будет сформирован в виде библиотеки классов. Всего три проекта и три готовых объекта, два из которых — приложения.