Сервер

С клиент сервер: Клиент-серверное приложение на сокетах TCP в C# и .NET

Содержание

Клиент-серверная модель — Client–server model

Распределенная структура приложения в вычислениях

Схема компьютерной сети клиентов, общающихся с сервером через Интернет.

Модель клиент-сервер — это распределенная структура приложения, которая разделяет задачи или рабочие нагрузки между поставщиками ресурса или службы, называемыми серверами , и инициаторами запросов на обслуживание, называемыми клиентами . Часто клиенты и серверы обмениваются данными по компьютерной сети на отдельном оборудовании, но и клиент, и сервер могут находиться в одной системе. Хост сервера запускает одну или несколько серверных программ, которые делятся своими ресурсами с клиентами. Клиент не делится своими ресурсами, но запрашивает контент или услугу с сервера. Таким образом, клиенты инициируют сеансы связи с серверами, ожидающими входящих запросов. Примерами компьютерных приложений, использующих модель клиент-сервер, являются электронная почта , сетевая печать и Всемирная паутина .

Роль клиента и сервера

Характеристика клиент-сервер описывает отношения взаимодействующих программ в приложении. Серверный компонент предоставляет функцию или услугу одному или нескольким клиентам, которые инициируют запросы на такие услуги. Серверы классифицируются по предоставляемым ими услугам. Например, веб — сервер обслуживает веб — страницы и файловый сервер обслуживает компьютерные файлы . Общий ресурс может быть любой из программного обеспечения и электронных компонентов компьютера — сервера, от программ и данных в процессорах и запоминающих устройств . Совместное использование ресурсов сервера составляет услугу .

Является ли компьютер клиентом, сервером или и тем, и другим, определяется характером приложения, которому требуются сервисные функции. Например, на одном компьютере могут одновременно работать веб-серверы и программное обеспечение файлового сервера, чтобы обслуживать разные данные для клиентов, отправляющих различные типы запросов. Клиентское программное обеспечение также может взаимодействовать с серверным программным обеспечением на том же компьютере. Связь между серверами, например, для синхронизации данных, иногда называется межсерверной или межсерверной связью.

Связь клиента и сервера

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

Клиенты и серверы обмена сообщениями в запрос-ответ шаблон обмена сообщениями . Клиент отправляет запрос, а сервер возвращает ответ. Этот обмен сообщениями является примером межпроцессного взаимодействия . Для взаимодействия компьютеры должны иметь общий язык, и они должны следовать правилам, чтобы и клиент, и сервер знали, чего ожидать. Язык и правила общения определены в протоколе связи . Все протоколы клиент-сервер работают на уровне приложений . Протокол прикладного уровня определяет основные шаблоны диалога. Чтобы еще больше формализовать обмен данными, сервер может реализовать интерфейс прикладного программирования (API). API — это уровень абстракции для доступа к сервису. Ограничивая связь определенным форматом контента , он упрощает синтаксический анализ . Абстрагируя доступ, он упрощает межплатформенный обмен данными.

Сервер может получать запросы от множества различных клиентов за короткий период времени. Компьютер может выполнять только ограниченное количество задач в любой момент и полагается на систему планирования для определения приоритетов входящих запросов от клиентов для их удовлетворения. Чтобы предотвратить злоупотребления и максимизировать доступность , серверное программное обеспечение может ограничивать доступность для клиентов. Атаки типа «отказ в обслуживании» предназначены для использования обязанности сервера обрабатывать запросы путем перегрузки его чрезмерной частотой запросов. Шифрование следует применять, если между клиентом и сервером должна передаваться конфиденциальная информация.

пример

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

На каждом этапе этой последовательности обмена сообщениями клиент-сервер компьютер обрабатывает запрос и возвращает данные. Это шаблон обмена сообщениями запрос-ответ. Когда все запросы удовлетворены, последовательность завершается, и веб-браузер представляет данные клиенту.

Этот пример иллюстрирует шаблон проектирования, применимый к модели клиент-сервер: разделение задач .

Ранняя история

Ранняя форма клиент-серверной архитектуры — удаленная запись задания , относящаяся как минимум к OS / 360 (объявлено в 1964 г. ), где запрос заключался в запуске задания , а ответ был выходом.

Формулируя модель клиент-сервер , в 1960 — х и 1970 — х годах, компьютерные ученые строят ARPANET (в Стэнфордском исследовательском институте ) используются термины сервера-хоста (или обслуживания узла ) и пользователя-хост (или с помощью-хоста ), и они появляются в ранние документы RFC 5 и RFC 4 . Такое использование было продолжено в Xerox PARC в середине 1970-х годов.

Один из контекстов, в котором исследователи использовали эти термины, заключался в разработке языка программирования компьютерной сети, называемого языком декодирования-кодирования (DEL). Целью этого языка было принимать команды от одного компьютера (пользователь-хост), который возвращал бы отчеты о состоянии пользователю, поскольку он закодировал команды в сетевых пакетах. Другой компьютер с поддержкой DEL, сервер-хост, получил пакеты, декодировал их и вернул отформатированные данные на хост-пользователя. Программа DEL на пользовательском хосте получила результаты для представления пользователю. Это транзакция клиент-сервер. Разработка DEL только начиналась в 1969 году, когда Министерство обороны США создало ARPANET (предшественницу Интернета ).

Клиент-хост и сервер-хост

Клиент-хост и сервер-хост имеют несколько иное значение, чем клиент и сервер . Хост — это любой компьютер, подключенный к сети. В то время как слова сервер и клиент могут относиться либо к компьютеру, либо к компьютерной программе, сервер-хост и пользователь-хост всегда относятся к компьютерам. Хост — это универсальный многофункциональный компьютер; клиенты и серверы — это просто программы, которые работают на хосте. В модели клиент-сервер сервер, скорее всего, будет посвящен задаче обслуживания.

Слово « клиент » впервые используется в статье 1978 года «Отделение данных от функции в распределенной файловой системе» компьютерных ученых Xerox PARC Говарда Стерджиса, Джеймса Митчелла и Джея Исраэля. Авторы тщательно определяют термин для читателей и объясняют, что они используют его, чтобы различать пользователя и сетевой узел пользователя (клиент). (К 1992 году слово « сервер» вошло в обиход.)

Централизованные вычисления

Модель клиент-сервер не требует, чтобы у хостов-серверов было больше ресурсов, чем у хостов-клиентов. Скорее, он позволяет любому универсальному компьютеру расширять свои возможности за счет использования общих ресурсов других хостов. Однако при централизованных вычислениях большое количество ресурсов выделяется небольшому количеству компьютеров. Чем больше вычислений выгружается с клиентских хостов на центральные компьютеры, тем проще могут быть клиентские хосты. Он сильно зависит от сетевых ресурсов (серверов и инфраструктуры) для вычислений и хранения. A бездисковая узел загружает даже его операционной системы из сети, и компьютерный терминал не имеет операционной системы на всех; это только интерфейс ввода / вывода для сервера. Напротив, толстый клиент , такой как персональный компьютер , имеет много ресурсов и не полагается на сервер для выполнения основных функций.

По мере того, как с 1980-х до конца 1990-х годов микрокомпьютеры падали в цене и становились все более мощными, многие организации перевели вычисления с централизованных серверов, таких как мэйнфреймы и миникомпьютеры , на толстые клиенты. Это давало более индивидуализированное владение компьютерными ресурсами, но усложняло управление информационными технологиями . В течение 2000-х годов веб-приложения стали достаточно зрелыми, чтобы конкурировать с прикладным программным обеспечением, разработанным для конкретной микроархитектуры . Это развитие, более доступная система хранения данных и появление сервис-ориентированной архитектуры были одними из факторов, которые привели к развитию тенденции облачных вычислений в 2010-х годах.

Сравнение с одноранговой архитектурой

В дополнение к модели клиент-сервер, распределенные вычислительные приложения часто используют равный-равному (P2P) архитектуру приложения.

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

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

И клиент-сервер, и главный-подчиненный рассматриваются как подкатегории распределенных одноранговых систем.

Смотрите также

Заметки

Клиент-серверная архитектура | Бесплатные онлайн-курсы от компании QATestLab

Сетевые протоколы:

TCP/IP набор (стек) протоколов передачи данных. TCP/IP это обозначение всей сети, которая работает на основе двух протоколов  TCP и IP.

TCP (Transfer Control Protocol) протокол, который служит для установления надежного соединения между двумя устройствами, передачи информации и подтверждения ее получения. 

IP (Internet Protocol) интернет протокол, который отвечает за правильность доставки сообщений по определенному адресу. При этом данные разбиваются на пакеты, которые могут доставляться по-разному.

MAC (Media Access Control) протокол, с помощью которого происходит идентификация сетевых устройств. Все устройства, подключенные к интернету, имеют свой уникальный MAC адрес. 

ICMP (Internet control message protocol) протокол, который отвечает за обмен информацией, но не используется для передачи данных.  

UDP (User datagram protocol) – протокол, который управляет передачей информации, но информация не проходит проверку при получении. Данный протокол работает быстрее, чем TCP. 

HTTP (Hyper Text Transfer Protocol) – протокол передачи гипертекста, на основе которого работают все сайты. Он запрашивает необходимые данные у удаленной системы (веб-страницы, файлы).

FTP (File Transfer Protocol) – протокол передачи файлов из специального файлового сервера на компьютер пользователя.

SSH (Secure Shell) – протокол, который служит для обеспечения удаленного управления системой по защищенному каналу. 

POP3 (Post Office Protocol) – стандартный протокол почтового соединения, который отвечает за доставку почты.

SMTP (Simple Mail Transfer Protocol) – протокол, который определяет правила для передачи почты. Отвечает за возвращение или подтверждение о доставке, оповещение об ошибке.

Пишем свой клиент — сервер

Пишем свой клиент сервер  на языке C#

    Развивая любое приложение, не важно будет ли это игра или какой-то коммерческий продукт, или студенческий проект для колледжа. В какой-то момент времени возникает желание создать приложение которое бы передавало сообщения по локальной и глобальной сети.  С развитием технологий появилось несколько технологий которые позволяют это сделать. О нескольких я расскажу в данном разделе.

Основные понятия.

    Нужно понимать, что мы хотим передавать информацию от куда то куда то.
Тот, кто будет передавать информацию будет называться клиентом, а тот, кто получает информацию будет называться сервером.
Чтобы сервер смог получить информацию он должен сообщить ОС (операционной системы) что он будет ждать сообщений по сети для этого он должен указать с какого IP адреса и порта системе забирать сообщения для сервера.
    Немного об IP адресе сервера. если мы хотим, чтобы сервер получал сообщения с любого IP адреса то мы указываем 0.0.0.0. Так как бывает, что на компьютере установлено несколько сетевых карт, и он имеет несколько сетевых адресов это обозначает что нам все равно откуда придёт сообщение главное, чтобы мы получили.
    Чтобы клиент смог сообщить серверу информацию он должен знать (на какой IP) куда послать сообщение тогда мы указываем адрес сервера. Но бывают ситуации, когда сервер неизвестен, но мы точно знаем, что он есть в нашей сети для того чтобы найти сервер мы можем послать на IP адрес 255.255.255.255 сообщение и все компьютеры в сети получат его, но лишь те компьютеры на которых будет работать серверная часть нашего кода смогут на него ответить нашему клиенту.
    Немного о портах. По сути порт — это уникальное число которое ОС привязывает к нашему приложению при работе с сетью. Порт уникален для всех приложений. И нужно понимать, что до нас уже куча людей написала сетевые приложения и чаще всего первая тысяча номеров занята тем или иным приложением или сервисом. Но это не беда в системе может быть зарегистрировано 65535 различных портов поэтому выбираем себе красивый номер порта и используем его для работы.

    Далее есть еще один нюанс. Существует два основных протокола которые позволяют передавать сообщения между клиентом и сервером в сети это UDP и TCP они различаться принципом действия.   Нужно лишь знать, что UDP не держит соединения с клиентом, а просто передает сообщения в сеть и если сервер слушает сеть он примет сообщение и передаст ответ так же в сеть, а клиент забере

Клиент — сервер — Википедия

Материал из Википедии — свободной энциклопедии

Пример двухуровневой архитектуры

«Клиент — сервер» (англ. client–server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами. Фактически клиент и сервер — это программное обеспечение. Обычно эти программы расположены на разных вычислительных машинах и взаимодействуют между собой через вычислительную сеть посредством сетевых протоколов, но они могут быть расположены также и на одной машине. Программы-серверы ожидают от клиентских программ запросы и предоставляют им свои ресурсы в виде данных (например, загрузка файлов посредством HTTP, FTP, BitTorrent, потоковое мультимедиа или работа с базами данных) или в виде сервисных функций (например, работа с электронной почтой, общение посредством систем мгновенного обмена сообщениями или просмотр web-страниц во всемирной паутине). Поскольку одна программа-сервер может выполнять запросы от множества программ-клиентов, её размещают на специально выделенной вычислительной машине, настроенной особым образом, как правило, совместно с другими программами-серверами, поэтому производительность этой машины должна быть высокой. Из-за особой роли такой машины в сети, специфики её оборудования и программного обеспечения, её также называют сервером, а машины, выполняющие клиентские программы, соответственно, клиентами.

Преимущества

  • Отсутствие дублирования кода программы-сервера программами-клиентами.
  • Так как все вычисления выполняются на сервере, то требования к компьютерам, на которых установлен клиент, снижаются.
  • Все данные хранятся на сервере, который, как правило, защищён гораздо лучше большинства клиентов. На сервере проще организовать контроль полномочий, чтобы разрешать доступ к данным только клиентам с соответствующими правами доступа.

Недостатки

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

Многоуровневая архитектура «клиент — сервер»

Многоуровневая архитектура «клиент — сервер» — разновидность архитектуры «клиент — сервер», в которой функция обработки данных вынесена на один или несколько отдельных серверов. Это позволяет разделить функции хранения, обработки и представления данных для более эффективного использования возможностей серверов и клиентов.

Частные случаи многоуровневой архитектуры:

Сеть с выделенным сервером

Сеть с выделенным сервером (англ. client/server network) — это локальная вычислительная сеть (LAN), в которой сетевые устройства централизованы и управляются одним или несколькими серверами. Индивидуальные рабочие станции или клиенты (такие, как ПК) должны обращаться к ресурсам сети через сервер(а).

См. также

Литература

Валерий Коржов. Многоуровневые системы клиент-сервер. Издательство Открытые системы (17 июня 1997). Проверено 31 января 2010. Архивировано 26 августа 2011 года.

Архитектура клиент – сервер — Студопедия

Архитектура клиент – сервер (client-server architecture) – это концепция информационной сети, в которой основная часть ее ресурсов сосредоточена в серверах, обслуживающих своих клиентов. Рассматриваемая архитектура определяет два типа компонентов: серверы и клиенты.

Сервер — это объект, предоставляющий сервис другим объектам сети по их запросам. Сервис – это процесс обслуживания клиентов.

Рисунок Архитектура клиент – сервер

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

Сервисная функция в архитектуре клиент – сервер описывается комплексом прикладных программ, в соответствии с которым выполняются разнообразные прикладные процессы.

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



Рисунок Модель клиент-сервер

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

В сетях с выделенным файловым сервером на выделенном автономном ПК устанавливается серверная сетевая операционная система. Этот ПК становится сервером. Программное обеспечение (ПО), установленное на рабочей станции, позволяет ей обмениваться данными с сервером. Наиболее распространенные сетевые операционная системы:

— NetWare фирмы Novel;

— Windows NT фирмы Microsoft;

— UNIX фирмы AT&T;

— Linux.

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

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

В современной клиент – серверной архитектуре выделяется четыре группы объектов: клиенты, серверы, данные и сетевые службы. Клиенты располагаются в системах на рабочих местах пользователей. Данные в основном хранятся в серверах. Сетевые службы являются совместно используемыми серверами и данными. Кроме того службы управляют процедурами обработки данных.


Сети клиент – серверной архитектуры имеют следующие преимущества:

— позволяют организовывать сети с большим количеством рабочих станций;

— обеспечивают централизованное управление учетными записями пользователей, безопасностью и доступом, что упрощает сетевое администрирование;

— эффективный доступ к сетевым ресурсам;

— пользователю нужен один пароль для входа в сеть и для получения доступа ко всем ресурсам, на которые распространяются права пользователя.

Наряду с преимуществами сети клиент – серверной архитектуры имеют и ряд недостатков:

— неисправность сервера может сделать сеть неработоспособной, как минимум потерю сетевых ресурсов;

— требуют квалифицированного персонала для администрирования;

— имеют более высокую стоимость сетей и сетевого оборудования.

Файл — серверные и клиент








 

 

Одной из базовых функций информационной системы организации любого масштаба является обеспечение обмена информацией как внутри организации, так и за ее пределами. Однако в этом процессе имеются проблемы, связанные со скоростью обмена информацией и работой с информацией в режиме коллективного доступа. Решают эти проблемы программные продукты, организующие обработку информации по определенным технологиям. В настоящее время наибольшее распространение получили следующие технологии:

— файл-серверная технология;

— технология клиент-сервер.

Файл-серверная технология – это работа в сетевом пространстве с доступом к файлам СУБД, хранящимся на сервере.

Обработка запроса одного пользователя:

· Обращение к БД (запрос)

· Перекачка данных с блокировкой доступа других пользователей

· Обработка данных на компьютере пользователя

В файл-серверной организации клиент работает с удаленными файлами, что вызывает существенную перегрузку трафика (поскольку СУБД-ФС работает на стороне клиента, то для выборки полезных данных в общем случае необходимо просмотреть на стороне клиента весь соответствующий файл целиком).

В целом, в файл-серверной архитектуре мы имеем «толстого» клиента и очень «тонкий» сервер в том смысле, что почти вся работа выполняется на стороне клиента, а от сервера требуется только достаточная емкость дисковой памяти.

Недостатки файл-серверной системы очевидны:

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

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

· Блокировка данных при редактировании одним пользователем делает невозможной работу с этими данными других пользователей.




· Безопасность. Для обеспечения возможности работы с такой системой Вам будет необходимо дать каждому пользователю полный доступ к целому файлу, в котором его может интересовать только одно поле.

 

 

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

Заметим, что интерфейс между клиентской частью приложения и клиентской частью сервера баз данных, как правило, основан на использовании языка SQL. Поэтому такие функции, как, например, предварительная обработка форм, предназначенных для запросов к базе данных, или формирование результирующих отчетов выполняются в коде приложения, а все обращения к серверу баз данных сводятся к передаче текста операторов языка SQL.

Поскольку вся работа с БД (выборка, добавление, выполнение триггеров и процедур) происходит на стороне сервера, то в клиент-серверной организации клиенты могут являться достаточно «тонкими», а сервер должен быть «толстым» настолько, чтобы быть в состоянии удовлетворить потребности всех клиентов.

При необходимости произвести обработку информации, хранящейся в БД, запущенное на компьютере пользователя клиентское приложение, работающее с БД, формирует запрос на языке SQL. Сервер базы данных принимает запрос и обрабатывает его самостоятельно. Никакой массив данных (файл) по сети не передается. После обработки запроса на компьютер пользователя передается только результат — то есть, в предыдущем примере, — список платежных поручений, удовлетворяющих нужным критериям. Сам же файл, в котором хранились данные, послужившие источником для обработки, остается незаблокированным для доступа самого сервера по запросам других пользователей.

В серьезных клиент-серверных СУБД существуют дополнительные механизмы, снижающие нагрузку на сеть, снижающие требования к пользовательским компьютерам. В качестве примера приведем хранимые процедуры — то есть целые программы обработки данных, хранящихся в БД. В этом случае от пользователя к серверу не передается даже SQL выражения — передается вызов функции с параметрами вызова. Таким образом, рабочее место пользователя еще сильнее упрощается, логика работы программы переносится на сервер. Пользовательское место становится всего лишь средством отображения информации. Все это означает дальнейшее снижение нагрузки на сеть и пользовательские рабочие станции.




Таким образом, все вышеперечисленные недостатки файл-серверной схемы устраняются в архитектуре клиент-сервер:

  • Массивы данных не перекачиваются по сети от сервера БД на компьютер пользователя. Требования к пропускной способности сети понижаются. Это делает возможным одновременную работу большого числа пользователей с большими объемами данных.
  • Обработка данных осуществляется на сервере БД, а не в компьютере пользователей. Что позволяет использовать более простые, а значит, дешевые компьютеры на клиентских местах.
  • Блокировки (захвата) данных одним пользователем не происходит.
  • Обеспечивается доступ пользователя не к целому файлу, а только к тем данным из него, с которыми пользователь имеет право работать.

 

 





Читайте также:







Топология клиент / сервер | Документы Microsoft

  • 2 минуты на чтение

В этой статье

Предупреждение: Microsoft DirectPlay устарела. Устаревшие компоненты Microsoft DirectX 9.0 для управляемого кода считаются устаревшими. Хотя эти компоненты все еще поддерживаются в этом выпуске DirectX 9.0 для управляемого кода, они могут быть удалены в будущем.При написании новых приложений вам следует избегать использования этих устаревших компонентов. При изменении существующих приложений настоятельно рекомендуется удалить любую зависимость от этих компонентов.

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

Игра обрабатывается посредством взаимодействия игрового клиента каждого пользователя с сервером.Сервер отвечает за передачу информации другим пользователям. Например, когда один пользователь перемещается, компьютер пользователя отправляет сообщение на сервер. Затем сервер отправляет сообщения другим игрокам, чтобы сообщить им об изменении состояния игры. Сервер может иметь ряд обязанностей; может:

  • Действовать как концентратор обмена сообщениями сеанса. Каждому компьютеру необходимо отправлять сообщения только на сервер. Сервер обеспечивает синхронизацию всех остальных пользователей. Такое расположение может существенно снизить трафик сообщений, особенно для больших игр.
  • Разместите игру. Сервер обычно берет на себя задачи, которые должны выполняться узлом сеанса в одноранговой игре.
  • Поддержка многих аспектов игры. Сервер часто делает гораздо больше, чем просто поддерживает игровую логистику. Во многих играх, особенно в больших, большая часть обработки, поддерживающей «игровую вселенную», происходит на сервере. Игровые клиенты в первую очередь отвечают за обработку пользовательского интерфейса (UI).

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

У клиент-серверных игр есть ряд преимуществ.

  • Они более производительны, особенно для масштабных игр. В частности, они масштабируются намного лучше, чем одноранговые игры, поскольку дополнительные игроки вызывают только линейное увеличение трафика обмена сообщениями.Топология клиент / сервер необходима для массовых многопользовательских игр.
  • Вы не ограничены вычислительной мощностью компьютеров ваших пользователей. Вы можете разместить большую часть обработки, необходимой для поддержки большой сложной «игровой вселенной», на одном мощном компьютере и позволить компьютерам пользователей обрабатывать пользовательский интерфейс.
  • Вы можете контролировать ключевые аспекты вашей игры на центральном сайте. Например, вы часто можете обновить игру или исправить ошибки, изменив серверное приложение, тем самым избегая необходимости обновлять большое количество игровых клиентов.

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

COM-клиенты и серверы — приложения Win32

  • 2 минуты на чтение

В этой статье

Критическим аспектом COM является взаимодействие клиентов и серверов. COM-клиент — это любой код или объект, который получает указатель на COM-сервер и использует его службы, вызывая методы его интерфейсов.COM-сервер — это любой объект, который предоставляет услуги клиентам; эти службы представлены в виде реализаций COM-интерфейса, которые могут быть вызваны любым клиентом, который может получить указатель на один из интерфейсов объекта сервера.

Существует два основных типа серверов: в процессе и вне процесса . Внутрипроцессные серверы реализованы в динамически подключаемой библиотеке (DLL), а внепроцессные серверы реализованы в исполняемом файле (EXE).Внепроцессные серверы могут находиться как на локальном, так и на удаленном компьютере. Кроме того, COM предоставляет механизм, который позволяет внутреннему серверу (DLL) запускаться в суррогатном процессе EXE, чтобы получить преимущество возможности запускать процесс на удаленном компьютере. Для получения дополнительной информации см. Суррогаты DLL.

Модель программирования и конструкции COM были расширены, чтобы клиенты и серверы COM могли работать вместе по сети, а не только в пределах одного компьютера.Это позволяет существующим приложениям взаимодействовать с новыми приложениями и друг с другом в сетях с надлежащим администрированием, а новые приложения могут быть написаны для использования преимуществ сетевых функций.

Клиентские приложения

COM не должны знать, как упаковываются объекты сервера, независимо от того, упакованы ли они как внутрипроцессные объекты (в DLL) или как локальные или удаленные объекты (в EXE). Распределенный COM также позволяет упаковывать объекты как приложения-службы, синхронизируя COM с широкими возможностями администрирования и системной интеграции Windows.

Примечание

В этой документации вместо DCOM используется аббревиатура COM. Это потому, что DCOM не отдельный; это просто COM с более длинным проводом. В случаях, когда описываемое является конкретно удаленной операцией, используется термин распределенный COM .

COM разработан, чтобы сделать возможным добавление поддержки прозрачности местоположения, которая распространяется по сети. Он позволяет приложениям, написанным для отдельных компьютеров, работать в сети и предоставляет функции, расширяющие эти возможности и повышающие безопасность, необходимую в сети.(Для получения дополнительной информации см. Безопасность в COM.)

COM определяет механизм, с помощью которого код класса может использоваться многими различными приложениями.

Дополнительные сведения см. В следующих разделах:

Синхронизация вызовов

Безопасность в COM

Обмен клиент / сервер — приложения Win32

  • 2 минуты на чтение

В этой статье

После того, как у пользователя есть билет на сервер, клиент рабочей станции может установить безопасный сеанс связи с этим сервером.

Для установления безопасного сеанса связи с сервером

  1. Клиент отправляет серверу сообщение типа KRB_AP_REQ (запрос приложения Kerberos). Это сообщение содержит сообщение аутентификатора, зашифрованное с помощью ключа, отправленного центром распространения ключей (KDC) для сеанса с сервером, билет для сеансов с сервером и флаг, указывающий, запрашивает ли клиент взаимную аутентификацию. Установка флага, запрашивающего взаимную аутентификацию, является одним из вариантов настройки Kerberos .Пользователя никогда не спрашивают, следует ли использовать взаимную аутентификацию.
  2. Сервер получает KRB_AP_REQ, расшифровывает билет и извлекает данные авторизации пользователя и сеансовый ключ .
  3. Сервер использует сеансовый ключ из билета для дешифрования сообщения аутентификатора пользователя и оценивает метку времени внутри.
  4. Если сообщение аутентификатора допустимо, сервер проверяет флаг взаимной аутентификации в запросе клиента.
  5. Если установлен флаг взаимной аутентификации, сервер использует сеансовый ключ для шифрования времени из сообщения аутентификатора пользователя и возвращает результат в сообщении типа KRB_AP_REP (ответ приложения Kerberos).
  6. Когда клиент получает KRB_AP_REP, он расшифровывает сообщение аутентификатора сервера с помощью сеансового ключа, который он разделяет с сервером, и сравнивает время, отправленное службой, со временем в исходном сообщении аутентификатора. Если они совпадают, клиенту гарантируется, что услуга подлинная, и соединение продолжается.

Определение модели клиент-сервер

Модель клиент-сервер описывает, как сервер предоставляет ресурсы и услуги одному или нескольким клиентам.Примеры серверов включают веб-серверы, почтовые серверы и файловые серверы. Каждый из этих серверов предоставляет ресурсы клиентским устройствам, таким как настольные компьютеры, ноутбуки, планшеты и смартфоны. Большинство серверов имеют отношения «один ко многим» с клиентами, что означает, что один сервер может предоставлять ресурсы нескольким клиентам одновременно.

Когда клиент запрашивает соединение с сервером, сервер может принять или отклонить соединение. Если соединение принято, сервер устанавливает и поддерживает соединение с клиентом по определенному протоколу.Например, почтовый клиент может запросить SMTP-соединение с почтовым сервером, чтобы отправить сообщение. Затем приложение SMTP на почтовом сервере запросит у клиента аутентификацию, такую ​​как адрес электронной почты и пароль. Если эти учетные данные совпадают с учетной записью на почтовом сервере, сервер отправит электронное письмо предполагаемому получателю.

Многопользовательские онлайн-игры также используют модель клиент-сервер. Одним из примеров является служба Battle.net от Blizzard, в которой размещены онлайн-игры для World of Warcraft, StarCraft, Overwatch и других.Когда игроки открывают приложение Blizzard, игровой клиент автоматически подключается к серверу Battle.net. После входа в Battle.net игроки могут видеть, кто еще в сети, общаться с другими игроками и играть матчи с другими игроками или против них.

Хотя Интернет-серверы обычно обеспечивают подключение к нескольким клиентам одновременно, каждая физическая машина может обрабатывать только определенный объем трафика. Поэтому популярные онлайн-сервисы распределяют клиентов по нескольким физическим серверам, используя метод, называемый распределенными вычислениями.В большинстве случаев не имеет значения, к какому конкретному компьютеру подключены пользователи, поскольку все серверы предоставляют одинаковые услуги.

ПРИМЕЧАНИЕ: Модель клиент-сервер может быть противопоставлена ​​модели P2P, в которой клиенты подключаются друг к другу напрямую. В P2P-соединении центральный сервер не требуется, поскольку каждая машина действует как клиент и как сервер.

Обновлено: 17 июня 2016 г.

TechTerms — Компьютерный словарь технических терминов

Эта страница содержит техническое определение модели клиент-сервер.Он объясняет в компьютерной терминологии, что означает модель клиент-сервер, и является одним из многих технических терминов в словаре TechTerms.

Все определения на веб-сайте TechTerms составлены так, чтобы быть технически точными, но также простыми для понимания. Если вы найдете это определение модели клиент-сервер полезным, вы можете ссылаться на него, используя приведенные выше ссылки для цитирования. Если вы считаете, что термин следует обновить или добавить в словарь TechTerms, отправьте электронное письмо в TechTerms!

10 основных причин для установки сети клиент-сервер

Малые предприятия могут получить значительные выгоды от сетевой инфраструктуры. Сети позволяют малым предприятиям расширять совместную работу и совместно использовать такие ресурсы, как файловые службы и службы печати.

Есть два типа сетей: одноранговая и клиент-серверная. Одноранговая сеть состоит из взаимосвязанных клиентских компьютеров, таких как ноутбуки или настольные компьютеры, которые могут получать доступ к ресурсам друг друга, таким как приложения или файлы. Сеть клиент-сервер — это централизованная сеть, в которой один или несколько компьютеров (также называемых серверами) действуют как выделенные поставщики ресурсов для пула клиентских компьютеров.Эти серверы «обслуживают» клиентские компьютеры 24 часа в сутки, 7 дней в неделю, такие как файлы, печать, электронная почта и резервное копирование.

Одноранговая сеть

Сеть клиент-сервер

Существуют преимущества и недостатки как одноранговых сетей, так и сетей клиент-сервер; однако в целом малые предприятия больше выигрывают от сети клиент-сервер, предназначенной для максимального повышения производительности ваших сотрудников за счет улучшенных функций безопасности, надежности и доступности. А сети клиент-сервер, построенные на базе сервера на базе Intel® Xeon®, являются идеальным выбором для малого бизнеса.

Если вы не уверены, подходит ли вам сеть клиент-сервер, вот

10 основных причин для установки сети клиент-сервер с сервером на базе Intel Xeon :

1.

24×7 Доступность : В одноранговой сети, если пользователю необходимо получить доступ к файлу, находящемуся на другом компьютере, этот компьютер должен быть включен.Это нецелесообразно для клиентских устройств, которые обычно отключаются, когда они не используются. В сети клиент-сервер сервер всегда включен, всегда доступен, поэтому к файлам и приложениям можно получить доступ в любое время.

2.

Улучшенная совместная работа : Сервер в сети клиент-сервер может действовать как централизованный концентратор для хранения и обмена файлами. Эта конфигурация позволяет нескольким пользователям получать доступ к файлам и вносить изменения в единую централизованную копию.Это также помогает минимизировать проблемы с контролем версий, которые часто возникают при управлении несколькими версиями одного и того же файла.

3.

Централизованное резервное копирование клиентов : Серверы могут быть настроены на автоматическое резервное копирование клиентских компьютеров, а также восстановление данных на основе этих резервных копий в случае отказа жесткого диска клиента.

4.

Удаленный доступ : серверы поддерживают удаленный доступ, который позволяет сотрудникам, партнерам и клиентам получать доступ к данным на сервере, не находясь физически перед системой.

5.

Резервное копирование сервера : Серверы на базе Intel Xeon поддерживают технологию Intel® Rapid Storage, которая позволяет серверу беспрепятственно хранить несколько копий своих данных на дополнительных внутренних жестких дисках, поэтому в случае отказа одного из жестких дисков он может быстро восстановить данные с минимальным временем простоя системы.

6.

Повышенная безопасность : серверы можно настроить для управления доступом к данным сервера и другим ресурсам для каждого пользователя.Это гарантирует, что только лица с соответствующими разрешениями получают доступ к определенным данным и приложениям, находящимся на сервере. А с помощью новых инструкций стандарта Intel Advanced Encryption Standard (Intel AES-NI) данные, передаваемые между сервером и клиентами, шифруются для предотвращения компрометации данных при передаче.

7.

Повышение производительности клиентов : В одноранговой сети клиенты также должны действовать как серверы, «обслуживая» услуги других клиентов в сети.Это может негативно повлиять на производительность этих клиентов. Эта вычислительная нагрузка снимается благодаря высокопроизводительному серверу на базе Intel Xeon, предназначенному для поддержки клиентов.

8.

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

9.

Повышенная надежность : Серверы на базе Intel Xeon поддерживают память с кодом исправления ошибок (ECC), которая помогает защитить важные бизнес-данные и предотвратить системные ошибки за счет автоматического обнаружения и исправления ошибок памяти.

10.

Business Growth : Одноранговые сети ограничены по количеству пользователей. Сеть клиент-сервер, построенная с использованием сервера на базе Intel Xeon, масштабируется в соответствии с вашими потребностями, оставляя пространство для роста по мере роста вашего бизнеса.

Для сети клиент-сервер вашего малого бизнеса правильный выбор — это сервер на базе семейства процессоров Intel® Xeon® E3-1200. Чтобы узнать больше о семействе процессоров Intel Xeon E3-1200, послушайте мой Intel Chip Chat.

Опубликовано Автор Дженнифер СанатиАрхив категорий

Клиент / Сервер — Изучение 0MQ на примерах

Шаблон запроса / ответа

Самый простой шаблон — это модель клиент / сервер, когда клиент отправляет запрос, а сервер отвечает на запрос.

Есть одно отличие от zmq.PAIR и других типов сокетов ZMQ.

  • Сокеты ZMQ REQ могут подключаться ко многим серверам.
  • Запросы будут чередоваться или распределяться по обоим серверам.

С сокетом zmq.PAIR вы можете отправлять любое количество сообщений между подключенными узлами или клиентом / сервером.

  • socket zmq.REQ будет заблокирован при отправке, если он не получит ответ успешно.
  • сокет zmq.REP будет заблокирован при приеме, если он не получил запроса.

Каждый запрос / ответ является парным и должен быть успешным.

reqrep_server.py

Укажите порт в качестве аргумента командной строки для запуска сервера на двух разных портах.

 импорт zmq
время импорта
import sys

порт = "5556"
если len (sys.argv)> 1:
    порт = sys.argv [1]
    int (порт)

 

Сервер создан с типом сокета « zmq.REP » и привязан к хорошо известному порту.

context = zmq.Context ()
сокет = context.socket (zmq.REP)
socket.bind ("tcp: // *:% s"% порт)
 

Он блокирует recv (), чтобы получить запрос, прежде чем сможет отправить ответ.

 socket.bind ("tcp: // *:% s"% порт)

в то время как True:
    # Ждем следующего запроса от клиента
    сообщение = сокет.recv ()
    print "Полученный запрос:", сообщение
    время сна (1)
    socket.send ("Мир из% s"% порт)
 

reqrep_client.py

Предоставляет два порта двух разных серверов для одновременного подключения.

 импорт zmq
import sys

порт = "5556"
если len (sys.argv)> 1:
    порт = sys.argv [1]
    int (порт)

если len (sys.argv)> 2:
    порт1 = sys.argv [2]
    int (порт1)

 

Клиент создан с типом сокета « zmq.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *