rpc
TRANSCRIPT
eleks.com eleks.com
System.Net. Sockets. RPC.System.Net. Sockets. RPC. RPC Client
Модель OSI Абстрактна мережева модель для комунікацій і розробки мережевих протоколів.
Модель OSI• Прикладний рівень (HTTP, gopher, Telnet, DNS, DHCP, SMTP, SNMP,
CMIP, FTP, TFTP, SSH, IRC, AIM, NFS, NNTP, NTP, SNTP, XMPP, FTAM, APPC, X.400, X.500, AFP, LDAP, SIP, IETF, RTP, RTCP, ITMS, Modbus TCP, BACnet IP, IMAP, POP3, SMB, MFTP, BitTorrent, e2k, PROFIBUS)
• Відображення(ASN.1, XML, TDI, XDR, NCP, AFP, ASCII, Unicode)• Сеансовий (ASP, ADSP, DLC, Named Pipes, NBT, NetBIOS, NWLink, Printer
Access Protocol, Zone Information Protocol, SSL, TLS, SOCKS, PPTP)• Транспортний (TCP, UDP, NetBEUI, AEP, ATP, IL, NBP, RTMP, SMB, SPX,
SCTP, DCCP, RTP, STP, TFTP)• Мережевий (IPv4, IPv6, ICMP, IGMP, IPX, NWLink, NetBEUI, DDP, IPSec,
ARP, SKIP)• Канальний - Ланки даних (ARCnet, ATM, DTM, SLIP, SMDS, Ethernet,
FDDI, Frame Relay, LocalTalk, Token Ring, PPP, PPPoE, StarLan, WiFi, PPTP , L2F, L2TP, PROFIBUS)
• Фізичний (RS-232, RS-422, RS-423, RS-449, RS-485, ITU-T, RJ-11, T-carrier (T1, E1), модифікації стандарту Ethernet: 10BASE-T, 10BASE2, 10BASE5, 100BASE-TX, 100BASE-FX, 100BASE-T, 1000BASE-T, 1000BASE-TX, 1000BASE-SX)
System.Net
• WebClient - надає загальні методи обміну даними з ресурсом, заданим через URI
• WebRequest і WebResponse - утворюють основу так званих підключаючих
протоколів, які є реалізацією мережевих служб, що дозволяють розробляти
програми, що використовують ресурси Інтернету, не піклуючись про конкретні
особливості окремих протоколів.
• Cookie - надає набір властивостей і методів, які використовуються для
управління куками.
• Dns - надає прості функціональні можливості розпізнавання доменних імен.
• EndPoint – ідентифікує мережеву адресу
Serialization• Серіалізація може бути визначена як процес збереження стану екземпляра
об'єкта на носії.• В ході цього процесу, публічні та приватні поля об'єкта і ім'я класу, включаючи
збірку, яка містить клас, перетворюється в потік байтів, який потім записується в потік даних.
• Коли об'єкт десеріалізовується, створюється точний клон вихідного об'єкта.• У бінарної серіалізації, всі члени, навіть ті, які тільки для читання,
серіалізуються, а продуктивність покращується.• XML серіалізація забезпечує більшу читабельність коду, а також велику
гнучкість спільного використання об'єктів і використовується в цілях сумісності.• XML серіалізацІя також може бути використаний для серіалізації об'єктів в XML-
потоки, які відповідають стандарту SOAP.
Serialization
Custom Serialization
Named pipe
• Іменований канал - один з методів міжпроцесорної взаємодії,
• Розширення поняття конвейєра в Unix подібних ОС
• Іменований канал дозволяє різним процесам обмінюватися даними,
навіть якщо програми, що виконуються в цих процесах, з самого
початку не були написані для взаємодії з іншими програмами.
• Введений з .Net Framework 3.5
eleks.com
Демонстрація 1• Приклад реалізації іменованого канала
Sockets (Сокети)• Сокет - назва програмного інтерфейсу для забезпечення обміну
даними між процесами.
• Процеси при такому обміні можуть виконуватися як на одній машині,
так і на різних ЕОМ, пов'язаних між собою мережею.
• Сокет - абстрактний об'єкт, який представляє кінцеву точку з'єднання.
• Слід розрізняти клієнтські і серверні сокети.
Sockets (Сокети)• Кожен процес може створити слухаючий сокет (серверний сокет) і
прив'язати його до якогось порту операційної системи.
• Процес, що слухає, зазвичай знаходиться в циклі очікування, тобто
прокидається при появі нового з'єднання.
• При цьому зберігається можливість перевірити наявність з'єднань у
цей час, встановити тайм-аут для операції тощо.
• Кожен сокет має свою адресу.
Типи сокетів• Stream socket (Потоковий сокет) - сокет з встановленим з'єднанням,
що складається з потоку байтів, який може бути двонаправленим, тобто через цю кінцеву точку додаток може і передавати, і отримувати дані (TCP).
• Datagram socket (Датаграмний сокет) – сокети без організації зєднань, одностороння відправка (UDP).
• Raw socket (Сирий сокет) – повідомлення відправляється напряму додатку, який має реалізувати власний аналізатор пакетів
• Sequenced Packet Sockets (Сокет послідовних пакетів) – схожий на потоковий, тільки зберігаються межі записів
System.Net.Sockets• MulticastOption - клас MulticastOption встановлює значення IP-адреси для
приєднання до IP-групи або для виходу з неї.• NetworkStream - реалізує базовий клас потоку, з якого дані відправляються і в
якому вони отримуються. Це абстракція високого рівня, що представляє з'єднання з каналом зв'язку TCP / IP.
• TcpClient - будується на класі Socket, щоб забезпечити TCP-обслуговування на більш високому рівні. TcpClient надає кілька методів для відправки та отримання даних через мережу.
• TcpListener - побудований на низкорівневому класі Socket. Його основне призначення - серверні додатки. Він очікує вхідні запити на з'єднання від клієнтів і повідомляє додаток про будь-які з'єднання.
System.Net.Sockets• UdpClient UDP - це протокол, що не організовує з'єднання, отже, для
реалізації UDP-обслуговування в .NET потрібна інша функціональність.
• SocketException - вийнято, який породжується, коли в сокеті виникає
помилка.
• Socket - сам клас Socket. Він забезпечує базову функціональність
програми сокета.
Socket• Accept () - Створює новий сокет для обробки вхідного запиту на з'єднання.• Bind () - Пов'язує сокет з локальною кінцевою точкою для очікування вхідних
запитів на з'єднання.• Close () - Змушує сокет закритися.• Connect () - Встановлює з'єднання з віддаленим хостом.• GetSocketOption () - Повертає значення SocketOption.• IOControl () - Встановлює для сокета низькорівневі режими роботи. Цей метод
забезпечує низькорівневий доступ до лежачого в основі класу Socket.• Listen () - Поміщає сокет в режим прослуховування (очікування). Цей метод
призначений тільки для серверних додатків.• Receive () - Отримує дані від зєднаного сокета.
Socket• Poll () - Визначає статус сокета.• Select () - Перевіряє статус одного або декількох сокетов.• Send () – Відправляє дані з'єднаному сокету.• SetSocketOption () - Встановлює опцію сокета.• Shutdown () - Забороняє операції відправки та отримання даних на сокеті.
eleks.com
Демонстрація 1• Використання Sockets
eleks.com
Переривчик 5хв
RPC (Remote procedure call )
RPC - протокол, що дозволяє програмі, запущеній на одному комп'ютері
бути викликаною на іншому комп'ютері без написання безпосередньо коду
для цієї операції.
• Асиметричність - одна із сторін є ініціатором
• Синхронність - виконання процедури, що викликає віддалену
процедуру, призупиняється з моменту видачі запиту і відновлюється
тільки після повернення з викликаної процедури.
RPC
• Sun RPC (бінарний протокол на базі TCP та UDP)
• Net Remoting (бінарний протокол на базі TCP, UDP, HTTP)
• XML-RPC (текстовий протокол на базі HTTP)
• SOAP – Simple Object Access Protocol (текстовий протокол на базі HTTP)
• Java RMI – Java Remote Method Invocation
• JSON-RPC J – javaScript Object Remote Procedure Calls (текстовий, на базі
HTTP)
IDL (Interface Definition Language)
Мова специфікацій для опису інтерфейсів• XML-RPC, попередник SOAP• Web Services Description Language (WSDL)• OMG IDL - стандартизованийObject Management Group і реалізований в CORBA
для DCE/RPC сервісів• Microsoft Interface Definition Language (MIDL) – розширення OMG IDL щоб
додати підтримку Component Object Model (COM) і Distributed Component Object Model (DCOM)
• Open Service Interface Definitions• Platform-Independent Component Modeling Language
eleks.com
Демонстрація 1• RPC Client
.NET Remoting• Прикладний програмний інтерфейс (API) від Microsoft для взаємодії між
процесами.
• Дозволяє програмі робити об'єкт (об'єкт ремоутінгу) доступним через границі
ремоутінгу, такі як різні програмні домени (application domains), процеси чи навіть
різні комп'ютери, з'єднані у мережу.
• У клієнтській програмі всі запити до об'єкта ремоутінгу проксуються в .NET
Remoting середовищі за допомогою Channel об'єктів, таким чином інкапсулюється
спосіб транспортування (TCP потоки, HTTP потоки та іменовані канали(англ.
named pipes)).
.NET Remoting
Remote Objects
• Будь-який об'єкт за межами домену (application domain) додатка, що
викликає, слід вважати віддаленим, де об'єкт буде реконструйований.
Локальні об'єкти, які не можуть бути серіалізовані не можуть бути
передані в інший домен програми, і тому не віддалені.
• Обєкт може стати віддаленим, якщо наслідується від
MarshalByRefObject абоякщо він серіалізований через атрибут
[Serializable] чи через імплементацію Iserializable.
Типи .NET Remotable Objects• Single Call – обслуговують один вхідний запит. Корисні в ситуаціях, коли об'єкти
необхідні, щоб зробити кінцевий обсяг роботи. Не можуть містити інформацію про стан між викликами методів.
• Singleton Objects - об'єкти, які обслуговують безліч клієнтів, і, отже, обмін даними за рахунок збереження інформації про стан між клієнтським запусками. Вони корисні в тих випадках, коли данв повинні бути розділені між клієнтами в явному вигляді, а також в яких накладні витрати створення і підтримки об'єктів є істотними.
• Client-Activated Objects - об'єкти на стороні сервера, які активуються за запитом клієнта. Коли клієнт відправляє запит на об'єкт сервера за допомогою оператора “new”, повідомлення із запитом на активацію відправляється на віддалений додаток. Потім сервер створює екземпляр запитуваного класу, і повертає ObjRef назад в клієнтську програму, що його викликала.
Channels• Інфраструктура .NET Remoting забезпечує механізм, за допомогою якого потік
байтів посилається від однієї точки до іншої (клієнта до сервера і т.д.).
• Це досягається за допомогою каналу. Строго кажучи, це клас, який реалізує
інтерфейс IChannel.
• Є два зумовлених .NET Remoting канали в System.Runtime.Remoting.Channels -
TcpChannel і HttpChannel.
• Щоб використовувати TcpChannel, сервер повинен створити екземпляр і
зареєструвати клас TcpServerChannel, а клієнт, клас TcpClientChannel.
Channels• Інфраструктура .NET Remoting забезпечує механізм, за допомогою якого потік
байтів посилається від однієї точки до іншої (клієнта до сервера і т.д.).
• Це досягається за допомогою каналу. Строго кажучи, це клас, який реалізує
інтерфейс IChannel.
• Є два зумовлених .NET Remoting канали в System.Runtime.Remoting.Channels -
TcpChannel і HttpChannel.
• Щоб використовувати TcpChannel, сервер повинен створити екземпляр і
зареєструвати клас TcpServerChannel, а клієнт, клас TcpClientChannel.
eleks.com
Демонстрація 1• RPC Client with .NET Remoting
eleks.com
Summary
© Denys Prylutskyi, 2015
Практичне завдання1. Написати з допомогою сокетів клієнт-серверну програму-гру «Поле чудес».
Кожні 3 хв починається нова гра, всі клієнти отримують питання і ******, де кількість символів – кількість букв у відповіді. Кожен користувач може виконати 4 команди:
• exit – закриття клієнта• word <правильна відповідь> - у випадку вірної відповіді, користувач виграв, ні –
програв (більше не бере участі у даному етапі)• letter <буква1, буква2, буква3> - букви у слові (максимум 3), за один етап (3хв) –
одне відправлення, після виконання всім клієнтам відправляється відповідь з відкритими буквами (*А*А**)
• stat – статистика зіграних/виграних матчів2. Написати з допомогою .NET Remoting клієнт-серверну програму-гру «Мафія»