rpc

31
eleks.com eleks.com System.Net. Sockets. RPC. System.Net. Sockets. RPC. RPC Client

Upload: eleksdev

Post on 07-Jan-2017

1.994 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Rpc

eleks.com eleks.com

System.Net. Sockets. RPC.System.Net. Sockets. RPC. RPC Client

Page 2: Rpc

Модель OSI Абстрактна мережева модель для комунікацій і розробки мережевих протоколів.

Page 3: Rpc

Модель 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)

Page 4: Rpc

System.Net

• WebClient - надає загальні методи обміну даними з ресурсом, заданим через URI

• WebRequest і WebResponse - утворюють основу так званих підключаючих

протоколів, які є реалізацією мережевих служб, що дозволяють розробляти

програми, що використовують ресурси Інтернету, не піклуючись про конкретні

особливості окремих протоколів.

• Cookie - надає набір властивостей і методів, які використовуються для

управління куками.

• Dns - надає прості функціональні можливості розпізнавання доменних імен.

• EndPoint – ідентифікує мережеву адресу

Page 5: Rpc

Serialization• Серіалізація може бути визначена як процес збереження стану екземпляра

об'єкта на носії.• В ході цього процесу, публічні та приватні поля об'єкта і ім'я класу, включаючи

збірку, яка містить клас, перетворюється в потік байтів, який потім записується в потік даних.

• Коли об'єкт десеріалізовується, створюється точний клон вихідного об'єкта.• У бінарної серіалізації, всі члени, навіть ті, які тільки для читання,

серіалізуються, а продуктивність покращується.• XML серіалізація забезпечує більшу читабельність коду, а також велику

гнучкість спільного використання об'єктів і використовується в цілях сумісності.• XML серіалізацІя також може бути використаний для серіалізації об'єктів в XML-

потоки, які відповідають стандарту SOAP.

Page 6: Rpc

Serialization

Page 7: Rpc

Custom Serialization

Page 8: Rpc

Named pipe

• Іменований канал - один з методів міжпроцесорної взаємодії,

• Розширення поняття конвейєра в Unix подібних ОС

• Іменований канал дозволяє різним процесам обмінюватися даними,

навіть якщо програми, що виконуються в цих процесах, з самого

початку не були написані для взаємодії з іншими програмами.

• Введений з .Net Framework 3.5

Page 9: Rpc

eleks.com

Демонстрація 1• Приклад реалізації іменованого канала

Page 10: Rpc

Sockets (Сокети)• Сокет - назва програмного інтерфейсу для забезпечення обміну

даними між процесами.

• Процеси при такому обміні можуть виконуватися як на одній машині,

так і на різних ЕОМ, пов'язаних між собою мережею.

• Сокет - абстрактний об'єкт, який представляє кінцеву точку з'єднання.

• Слід розрізняти клієнтські і серверні сокети.

Page 11: Rpc

Sockets (Сокети)• Кожен процес може створити слухаючий сокет (серверний сокет) і

прив'язати його до якогось порту операційної системи.

• Процес, що слухає, зазвичай знаходиться в циклі очікування, тобто

прокидається при появі нового з'єднання.

• При цьому зберігається можливість перевірити наявність з'єднань у

цей час, встановити тайм-аут для операції тощо.

• Кожен сокет має свою адресу.

Page 12: Rpc

Типи сокетів• Stream socket (Потоковий сокет) - сокет з встановленим з'єднанням,

що складається з потоку байтів, який може бути двонаправленим, тобто через цю кінцеву точку додаток може і передавати, і отримувати дані (TCP).

• Datagram socket (Датаграмний сокет) – сокети без організації зєднань, одностороння відправка (UDP).

• Raw socket (Сирий сокет) – повідомлення відправляється напряму додатку, який має реалізувати власний аналізатор пакетів

• Sequenced Packet Sockets (Сокет послідовних пакетів) – схожий на потоковий, тільки зберігаються межі записів

Page 13: Rpc

System.Net.Sockets• MulticastOption - клас MulticastOption встановлює значення IP-адреси для

приєднання до IP-групи або для виходу з неї.• NetworkStream - реалізує базовий клас потоку, з якого дані відправляються і в

якому вони отримуються. Це абстракція високого рівня, що представляє з'єднання з каналом зв'язку TCP / IP.

• TcpClient - будується на класі Socket, щоб забезпечити TCP-обслуговування на більш високому рівні. TcpClient надає кілька методів для відправки та отримання даних через мережу.

• TcpListener - побудований на низкорівневому класі Socket. Його основне призначення - серверні додатки. Він очікує вхідні запити на з'єднання від клієнтів і повідомляє додаток про будь-які з'єднання.

Page 14: Rpc

System.Net.Sockets• UdpClient UDP - це протокол, що не організовує з'єднання, отже, для

реалізації UDP-обслуговування в .NET потрібна інша функціональність.

• SocketException - вийнято, який породжується, коли в сокеті виникає

помилка.

• Socket - сам клас Socket. Він забезпечує базову функціональність

програми сокета.

Page 15: Rpc

Socket• Accept () - Створює новий сокет для обробки вхідного запиту на з'єднання.• Bind () - Пов'язує сокет з локальною кінцевою точкою для очікування вхідних

запитів на з'єднання.• Close () - Змушує сокет закритися.• Connect () - Встановлює з'єднання з віддаленим хостом.• GetSocketOption () - Повертає значення SocketOption.• IOControl () - Встановлює для сокета низькорівневі режими роботи. Цей метод

забезпечує низькорівневий доступ до лежачого в основі класу Socket.• Listen () - Поміщає сокет в режим прослуховування (очікування). Цей метод

призначений тільки для серверних додатків.• Receive () - Отримує дані від зєднаного сокета.

Page 16: Rpc

Socket• Poll () - Визначає статус сокета.• Select () - Перевіряє статус одного або декількох сокетов.• Send () – Відправляє дані з'єднаному сокету.• SetSocketOption () - Встановлює опцію сокета.• Shutdown () - Забороняє операції відправки та отримання даних на сокеті.

Page 17: Rpc

eleks.com

Демонстрація 1• Використання Sockets

Page 18: Rpc

eleks.com

Переривчик 5хв

Page 19: Rpc

RPC (Remote procedure call )

RPC - протокол, що дозволяє програмі, запущеній на одному комп'ютері

бути викликаною на іншому комп'ютері без написання безпосередньо коду

для цієї операції.

• Асиметричність - одна із сторін є ініціатором

• Синхронність - виконання процедури, що викликає віддалену

процедуру, призупиняється з моменту видачі запиту і відновлюється

тільки після повернення з викликаної процедури.

Page 20: 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)

Page 21: Rpc

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

Page 22: Rpc

eleks.com

Демонстрація 1• RPC Client

Page 23: Rpc

.NET Remoting• Прикладний програмний інтерфейс (API) від Microsoft для взаємодії між

процесами.

• Дозволяє програмі робити об'єкт (об'єкт ремоутінгу) доступним через границі

ремоутінгу, такі як різні програмні домени (application domains), процеси чи навіть

різні комп'ютери, з'єднані у мережу.

• У клієнтській програмі всі запити до об'єкта ремоутінгу проксуються в .NET

Remoting середовищі за допомогою Channel об'єктів, таким чином інкапсулюється

спосіб транспортування (TCP потоки, HTTP потоки та іменовані канали(англ.

named pipes)).

Page 24: Rpc

.NET Remoting

Page 25: Rpc

Remote Objects

• Будь-який об'єкт за межами домену (application domain) додатка, що

викликає, слід вважати віддаленим, де об'єкт буде реконструйований.

Локальні об'єкти, які не можуть бути серіалізовані не можуть бути

передані в інший домен програми, і тому не віддалені.

• Обєкт може стати віддаленим, якщо наслідується від

MarshalByRefObject абоякщо він серіалізований через атрибут

[Serializable] чи через імплементацію Iserializable.

Page 26: Rpc

Типи .NET Remotable Objects• Single Call – обслуговують один вхідний запит. Корисні в ситуаціях, коли об'єкти

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

• Singleton Objects - об'єкти, які обслуговують безліч клієнтів, і, отже, обмін даними за рахунок збереження інформації про стан між клієнтським запусками. Вони корисні в тих випадках, коли данв повинні бути розділені між клієнтами в явному вигляді, а також в яких накладні витрати створення і підтримки об'єктів є істотними.

• Client-Activated Objects - об'єкти на стороні сервера, які активуються за запитом клієнта. Коли клієнт відправляє запит на об'єкт сервера за допомогою оператора “new”, повідомлення із запитом на активацію відправляється на віддалений додаток. Потім сервер створює екземпляр запитуваного класу, і повертає ObjRef назад в клієнтську програму, що його викликала.

Page 27: Rpc

Channels• Інфраструктура .NET Remoting забезпечує механізм, за допомогою якого потік

байтів посилається від однієї точки до іншої (клієнта до сервера і т.д.).

• Це досягається за допомогою каналу. Строго кажучи, це клас, який реалізує

інтерфейс IChannel.

• Є два зумовлених .NET Remoting канали в System.Runtime.Remoting.Channels -

TcpChannel і HttpChannel.

• Щоб використовувати TcpChannel, сервер повинен створити екземпляр і

зареєструвати клас TcpServerChannel, а клієнт, клас TcpClientChannel.

Page 28: Rpc

Channels• Інфраструктура .NET Remoting забезпечує механізм, за допомогою якого потік

байтів посилається від однієї точки до іншої (клієнта до сервера і т.д.).

• Це досягається за допомогою каналу. Строго кажучи, це клас, який реалізує

інтерфейс IChannel.

• Є два зумовлених .NET Remoting канали в System.Runtime.Remoting.Channels -

TcpChannel і HttpChannel.

• Щоб використовувати TcpChannel, сервер повинен створити екземпляр і

зареєструвати клас TcpServerChannel, а клієнт, клас TcpClientChannel.

Page 29: Rpc

eleks.com

Демонстрація 1• RPC Client with .NET Remoting

Page 30: Rpc

eleks.com

Summary

Page 31: Rpc

© Denys Prylutskyi, 2015

Практичне завдання1. Написати з допомогою сокетів клієнт-серверну програму-гру «Поле чудес».

Кожні 3 хв починається нова гра, всі клієнти отримують питання і ******, де кількість символів – кількість букв у відповіді. Кожен користувач може виконати 4 команди:

• exit – закриття клієнта• word <правильна відповідь> - у випадку вірної відповіді, користувач виграв, ні –

програв (більше не бере участі у даному етапі)• letter <буква1, буква2, буква3> - букви у слові (максимум 3), за один етап (3хв) –

одне відправлення, після виконання всім клієнтам відправляється відповідь з відкритими буквами (*А*А**)

• stat – статистика зіграних/виграних матчів2. Написати з допомогою .NET Remoting клієнт-серверну програму-гру «Мафія»