Клиент-серверная передача данных (на примере системы автоматизации рабочего места начальника охраны объекта)
Особенности клиент-серверной передачи разнородных данных на языке C Sharp. Плюсы и минусы бинарной сериализации информации. Обеспечение более четкого структурирования запросов и ответов между клиентом и сервером и минимальной нагрузки на канал связи.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 26.07.2018 |
Размер файла | 17,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Волгоградский государственный технический университет
Клиент-серверная передача данных на примере системы автоматизации рабочего места начальника охраны объекта
Котов Вадим Викторович
Особенности клиент-серверной передачи разнородных данных на языке си шарп. Существующие технологии передачи данных. Возможные проблемы и способы их решения. Плюсы и минусы сериализации данных.
Похожие материалы
· Классы .net для работы с процессами
· Создание процессов и управление ими
· Запуск команд ос из с#-программы
· Справочные данные некоторых команд
· Краткая характеристика сетевых команд операционной системы Windows
Клиент-серверные приложения активно применяются в образовании [7-10], науке [1, 3, 11] и производстве [2, 4-6] для обеспечения рабочего процесса, наделения сотрудников удобными рабочими инструментами, и, как следствие, повышения производительности труда.
При разработке клиент-серверного приложения часто возникает вопрос передачи разнородных данных одним пакетом. На текущий момент существует много технологий, обеспечивающих данную возможность, но подавляющее число подобных технологий основано на XML-технологиях. Что автоматически увеличивает объем передаваемых данных. Да и необходимость настройки подобных технологий для начинающих программистов может быть достаточно сложна.
Стандартная передача с помощью сокетов позволяет передавать только массив байт. Как следствие, наиболее распространённый способ передачи данных между клиентом и сервером представляет собой текстовую строку, которую потом переводят в массив стандартными функциями. Минусы данного способа понятны. Во-первых, данные, которые требуется передать от клиента к серверу, редко ограничиваются чистым текстом, как следствие, строку требуется составить. Во-вторых, для получения структуры передаваемых данных, требуется длительная обработка полученной строки (парсинг).
Для устранения данных проблем можно использовать XML-сериализацию. Данная возможность автоматически превращает необходимый класс в текст, который затем можно представить как массив байт для передачи на сервер. Данный способ имеет существенное преимущество перед составлением строки вручную - составление и парсинг текста происходит в автоматическом режиме, что не требует от программиста особых трудозатрат. Но недостаток у него тоже имеется - сама XML-разметка занимает достаточно много места. И при передаче больших объемов данных (например, таблиц), сильно увеличивает нагрузку на линию связи.
В качестве третьего варианта (о котором и пойдет речь в данной статье) есть возможность использовать бинарную сериализацию: в этом случае класс сразу конвертируется в массив байт, готовый для передачи, без промежуточных этапов. Что, с одной стороны, упрощает программу, с другой, уменьшает объем передаваемых данных за счет отсутствия дополнительной разметки. Из минусов данного способа можно рассмотреть необходимость использования на клиенте и сервере одинаковых сборок класса для передачи, что вынуждает все передаваемые классы выводить в отдельную динамическую библиотеку.
Далее на примере системы автоматизации рабочего места начальника охраны объекта мы разберем конкретные действия по организации передачи данных посредством бинарной сериализации. Данная система во время своей работы передает разнородные данные: запросы к БД, таблицы результатов, команды серверу с различными параметрами. Для того чтобы увязать все это в единую систему, требуется определенная иерархия объектов.
Для начала потребуется класс-«обертка», в котором мы будем передавать наши данные.
Назовем его «transfer». Данный класс имеет несколько полей:
Текстовое поле «CommandName» - в нем мы будем передавать имя команды.
Строковый массив «Parametr» - в нем будут передаваться те или иные параметры команды.
И коллекция объектов «Collection» - а в данной коллекции будет передаваться рабочие классы.
[Serializable]
public class Transfer:Object
{
public string CommandName;
public string[] Parametr;
public List
Внимание: атрибут класса «[Serializable]» показывает компилятору, что данный класс допускается для сериализации. Использование его - обязательно. Причем, как в данном классе, так и в классах, которые будут передаваться в дальнейшем. серверный данный сериализация связь
Еще требуется уточнение. Если по первым двум полям передающего класса пояснений не требуется, то по последнему могут возникнуть вопросы: почему коллекция и почему «object». Первое требуется для обеспечения неограниченного количества объектов в коллекции (нам не требуется точно знать, сколько строк вернет нам наша база данных), второе… Поскольку мы не знаем, какого типа объект мы планируем передавать серверу (ибо варианты объектов могут быть какими угодно), удобнее формировать коллекцию из объектов верхнего уровня, а затем явно приводить их в нужную форму, в зависимости от типа команды.
Далее нам потребуются конкретные классы (модели) для передачи данных в зависимости от команды. Рассмотрим таблицу «Задержания»: здесь шестнадцать текстовых полей, в которых хранятся данные о задержанных. Для работы с этой таблицей нам потребуется создать класс (модель) которая описывает одну строку таблицы:
[Serializable]
public class Arest
{
public int id { set; get; }
public DateTime dateArest { set; get; }
public DateTime dateInput { set; get; }
public string lastName { set; get; }
public string firstName { set; get; }
public string patronymic { set; get; }
public string locArest { set; get; }
public string reason { set; get; }
public string fabula { set; get; }
public bool ugCase { set; get; }
public string numberFaiure {set;get;}
public string numberCase { set; get; }
public string resolutionMaterial { set; get; }
public string resolutionCourt { set; get; }
public string male { set; get; }
public int idUser { set; get; }
}
Не будем останавливаться на значениях данных полей, ибо данное не актуально в рамках текущей статьи. Но на три нюанса стоит обратить внимание: первый - это атрибут «[Serializable]» который, как было сказано выше, необходим для любых классов, участвующих в передаче данных. Второй - это автоматические свойства у каждого поля, они требуются для прямой работы с базой данных. Третий нюанс заключается в том, что все классы для передачи данных должны быть выделены в отдельную DLL и подключены как к клиенту, так и к серверу.
После того, как мы создали данный класс, мы получили возможность полноценной работы с одной таблицей БД. Теперь приведу пример использования данного класса (большая часть кода будет обрезана, как не касающаяся темы данной статьи).
Рассмотрим пример добавления данных в БД.
Выводим на клиенте поле для ввода, введенные данные записываем в нашу модель «Arest»
После чего формируем запрос на сервер:
Transfer transfer = new Transfer();
transfer.CommandName = "InputArest";
transfer.Collection.Add(Arest);
BinaryFormatter bin = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
bin.Serialize(stream, transfer);
int bytesSent = Client.Send(stream.GetBuffer());
В первых трех строчках мы формируем класс-оболочку «Transfer», в качестве названия команды мы задаем «InputArest», в качестве коллекции - нашу модель.
Следующие две строчки - это создание бинарного сериализатора и потока в памяти. Первый нужен для превращения нашего класса в массив байт, второй - для хранения полученного массива. После чего следующей строчкой мы пишем класс-оболочку в память.
И следующей командой отправляем её на сервер. Передача завершена.
Обработка данных на сервере происходит следующим образом:
MemoryStream stream;
Transport.Transfer transfer;
bytesRec = handler.Receive(bytes);
stream = new MemoryStream(bytes, 0, bytesRec);
transfer = Serialization.Deserialize(stream);
switch (transfer.CommandName)
{
case "InputArest":
transfer.CommandName = "success";
Arest arest = (Arest)transfer.Collection[0];
DataQuery.AddArest(arest);
break;
}
Здесь команда «handler.Receive(bytes)» получает от клиента массив байт. После чего следующими двумя строками массив десериализуется обратно в класс-оболочку.
Далее с помощью команды «switch» осуществляется выбор команды, которая будет реализовываться. После чего в строках:
Arest arest = (Arest)transfer.Collection[0];
DataQuery.AddArest(arest);
Происходит запись в модель «Arest» первого элемента коллекции (с явным приведением к данной модели) и запись строки в базу.
Ответы сервера, и любые другие команды реализуются аналогичным образом.
Данный способ обеспечивает более четкое структурирование запросов и ответов между клиентом и сервером (благодаря оператору «switch») и минимальную нагрузку на канал связи (благодаря бинарной сериализации).
Список литературы
1. Азаров А.В., Рыбанов А.А. Автоматизированная система расчета метрических характеристик физической схемы базы данных с целью оценки трудоемкости процесса проектирования // Современная техника и технологии. 2014. № 5 (33). С. 39.
2. Богушенков А.С., Рыбанов А.А. Разработка и исследование алгоритмов автоматизированной системы учета и поиска информации по пакетам труб на основе технологии qr-кода // Молодой ученый. 2015. № 4 (84). С. 47-52.
3. Бутенко Д.В., Рыбанов А.А., Чернухин А.В., Бутенко Л.Н. Компьютерная поддержка ассоциативного поиска инновационных решений // Известия ЮФУ. Технические науки. 1998. № 2 (8). С. 258-259.
4. Лебединский А.И., Рыбанов А.А. Автоматизация мониторинга топлива в резервуарах азс на базе измерительного комплекса «струна» с целью повышения эффективности принимаемых решений специалистом отдела логистики // Молодой ученый. 2014. № 7. С. 35-40.
5. Моисеев Ю.И., Билялов М.Х., Рыбанов А.А. Cистема идентификации водителя на примере туристического междугороднего автобуса ВОЛЖАНИН 5285 // Вестник магистратуры. 2013. № 5 (20). С. 63-67.
6. Рыбанов А.А. Автоматизированное рабочее место рыбовода осетрового завода // Сельское, лесное и водное хозяйство. 2014. № 5 (32). С. 3.
7. Рыбанов А.А. Технологии удаленного управления компьютером в повышении эффективности взаимодействия участников образовательного процесса // Дистанционное и виртуальное обучение. 2010. № 9. С. 28-34.
8. Рыбанов А.А., Любимова О.В. Разработка web-ориентированного программного модуля мониторинга формирования уровня компетентности студентов технических вузов на основе контрольных карт и гистограмм // Молодой ученый. 2014. № 9 (68). С. 23-26.
9. Рыбанов А.А., Рыльков А.В. // Разработка web-ориентированной информационной системы мониторинга и управления процессом прохождения производственной практики // Молодой ученый. 2013. № 7. С. 34-36.
10. Рыбанов А.А., Самодьянова А.С. Разработка web-ориентированной экспертной системы оценки качества педагогических тестов // Молодой ученый. 2014. № 9 (68). С. 31-34.
11. Сова Е.В., Рыбанов А.А. Cравнительный анализ библиотек генерации отчетов в веб-ориентированных информационных системах // Международный журнал прикладных и фундаментальных исследований. 2012. № 7. С. 167.
Размещено на Allbest.ru
...Подобные документы
Разработка программного приложения для автоматизации рабочего места кладовщика на центральном складе предприятия. Решение задачи создания клиент-серверной архитектуры базы данных в среде программирования Delphi 7 и Interbase для "Windows 9X(NT)".
дипломная работа [1,8 M], добавлен 19.06.2012Проектирование физической и логической моделей удаленной базы данных для АЗС. Разработка базы данных в СУБД Firebird с помощью утилиты IBExpert. Создание клиентского приложения для Windows с использованием клиент-серверной технологии в среде C++ Builder.
курсовая работа [3,9 M], добавлен 18.01.2017Создание программного продукта на основании клиент-серверной технологии, реализующего отказоустойчивую работу системы, которая способна в случае потери связи с ведущим сервером подключить клиента к альтернативному серверу (на примере сервера погоды).
курсовая работа [238,0 K], добавлен 24.08.2012Реляционные базы данных как часть корпоративных информационных систем, их построение по принципам клиент-серверной технологии. Основные характеристики СУБД Firebird. Проектирование базы данных для информационной системы "Компьютерные комплектующие".
курсовая работа [1,9 M], добавлен 28.07.2013Изучение функций автоматизированных банков данных. Общие принципы описания, хранения и манипулирования данными. Анализ требований к базам данных. Файл-серверная и клиент-серверная архитектура БД. Преимущества введения системы управления базами данных.
презентация [91,5 K], добавлен 13.08.2013Модели баз данных. Локальная, файл-серверная, клиент-серверная и распределенная архитектуры. Технология BDE для доступа к данным. Драйверы баз данных. Создание таблицы, интерфейс программы, дерево объектов, инсталлятор. Системы визуальной разработки.
курсовая работа [989,5 K], добавлен 04.06.2013Разработка базы данных и клиента для управления базой данных с целью автоматизации рабочего места менеджера по клининговым услугам для ООО "Мастер блеск". Обоснование выбора программного обеспечения для создания базы данных. Заполнение данных в таблицы.
дипломная работа [1,8 M], добавлен 13.04.2014Проект автоматизированного рабочего места для работы с клиентами и использования клиентских баз данных. Регистрация данных о состоянии объекта управления. Обеспечение взаимодействия человека с системой. Доступ к результатам регистрации информации.
курсовая работа [1,7 M], добавлен 02.10.2010Проектирование и разработка базы данных в РСУБД Firebird. Последовательность создания приложения, основанного на клиент-серверной технологии и работающего в операционной системе Windows. Хранимые процедуры и триггеры. Доступ к сети и транзакции.
курсовая работа [2,6 M], добавлен 27.07.2013Архитектура "клиент-сервер". Системный анализ базы данных "Газета объявлений", ее инфологическое и физическое проектирование. Программирование на стороне SQL-сервера. Разработка клиентской части в Borland C++ Builder 6.0 и с помощью Web-технологий.
курсовая работа [1,3 M], добавлен 07.07.2013Обработка распределенных данных и запросов. Многопотоковые и многосерверные архитектуры. Основные типы параллелелизма при обработке запросов. Структура компонентов поддержки удаленного доступа. Доступ к базам данных в двухзвенных моделях клиент-сервер.
презентация [123,1 K], добавлен 19.08.2013Сфера применения автоматизированного рабочего места менеджера системы Клиент-Банк, выполнение финансовых операций и перевод денежных средств между счетами клиента, использование сертифицированных программных средств, их высокая производительность.
курсовая работа [1,1 M], добавлен 28.08.2012Компьютерные сети и протоколы передачи данных. Устройства, взаимодействующие с компьютерными сетями при помощи протоколов передачи данных. Мобильные вычислительные устройства и операционные системы. Клиент-серверное приложение для управления расписанием.
дипломная работа [1,8 M], добавлен 11.12.2015Система управление базами данных, реляционная модель. Принципы взаимодействия между клиентскими и серверными частями. Трехуровневая модель технологии "клиент-сервер". Фрактальные методы сжатия больших объемов данных. Анализ концепции хранилища данных.
курс лекций [265,0 K], добавлен 05.06.2009Основные понятия серверов. Модель клиент-сервер. Классификация стандартных серверов. Недостатки файл-серверной системы. Криптографические методы защиты информации. Серверы удаленного доступа. Методы и средства обеспечения безопасности информации.
контрольная работа [36,3 K], добавлен 13.12.2010Этапы проектирования сайта. Реализация двухкомпонентной системы голосования - клиент и датацентр. Создание безопасной системы передачи данных с использованием языков разметки HTML, программирования PHP, скриптов JavaScript, базы данных MySQL и Web-службы.
дипломная работа [2,9 M], добавлен 12.12.2013Основные возможности программных комплексов "АРМ-Клиент", "Астрал-Отчет". Технология обработки информации в системе электронной обработки данных. Разработка рабочего места налогового инспектора, предназначенного для автоматизации заполнения деклараций.
дипломная работа [285,3 K], добавлен 12.04.2013Связь между клиентом и сервером, поддерживаемая посредством передачи сообщений. Конфигурация подчиненного и перенаправителей. Архитектура специальной распределенной вычислительной системы, в которой приложение делится на клиентский и серверный процессы.
контрольная работа [126,8 K], добавлен 08.02.2015Создание клиент-серверного приложения "Чат" с помощью среды визуальной разработки приложений Borland C++ Builder версии 6. Описание функциональности приложения: наличие клиент-серверной архитектуры, обмен короткими сообщениями, а также передача файлов.
курсовая работа [302,0 K], добавлен 30.01.2012Модели информационного процесса обработки данных. Классификация баз данных. Сеть архитектуры и технология клиент-сервер. Создание запросов к реляционным базам данных на SQL. Работа с электронными таблицами MS Excel: форматирование данных, вычисления.
контрольная работа [17,8 K], добавлен 17.01.2010