SlideShare a Scribd company logo
1 of 31
eleks.comeleks.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 клієнт-серверну програму-гру «Мафія»

More Related Content

What's hot

Version control
Version controlVersion control
Version controleleksdev
 
Advanced c sharp part 3
Advanced c sharp part 3Advanced c sharp part 3
Advanced c sharp part 3eleksdev
 
Aspnet core
Aspnet coreAspnet core
Aspnet coreeleksdev
 
NoSQL basics
NoSQL basicsNoSQL basics
NoSQL basicseleksdev
 
System programing module 1
System programing module 1System programing module 1
System programing module 1Andrii Hladkyi
 
System programing module 2
System programing module 2System programing module 2
System programing module 2Andrii Hladkyi
 
Data Structures
Data StructuresData Structures
Data Structureseleksdev
 
System programing module 3
System programing module 3System programing module 3
System programing module 3Andrii Hladkyi
 
Advanced styles
Advanced stylesAdvanced styles
Advanced styleseleksdev
 
KyivBSD 2009 - Creating a corporate instant messaging and information exchang...
KyivBSD 2009 - Creating a corporate instant messaging and information exchang...KyivBSD 2009 - Creating a corporate instant messaging and information exchang...
KyivBSD 2009 - Creating a corporate instant messaging and information exchang...Oleksandr Drach
 
Lec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняLec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняcit-cit
 
08 Exceptions and AOP
08  Exceptions and AOP08  Exceptions and AOP
08 Exceptions and AOPeleksdev
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)Anatoliy Okhotnikov
 

What's hot (20)

Version control
Version controlVersion control
Version control
 
Advanced c sharp part 3
Advanced c sharp part 3Advanced c sharp part 3
Advanced c sharp part 3
 
Aspnet core
Aspnet coreAspnet core
Aspnet core
 
NoSQL basics
NoSQL basicsNoSQL basics
NoSQL basics
 
System programing module 1
System programing module 1System programing module 1
System programing module 1
 
System programing module 2
System programing module 2System programing module 2
System programing module 2
 
Data Structures
Data StructuresData Structures
Data Structures
 
System programing module 3
System programing module 3System programing module 3
System programing module 3
 
Advanced styles
Advanced stylesAdvanced styles
Advanced styles
 
Wcf module 2
Wcf module 2Wcf module 2
Wcf module 2
 
Wcf module 3.1
Wcf module 3.1Wcf module 3.1
Wcf module 3.1
 
Wcf module 3.3
Wcf module 3.3Wcf module 3.3
Wcf module 3.3
 
Wcf module 1
Wcf module 1Wcf module 1
Wcf module 1
 
Wcf module 3.2
Wcf module 3.2Wcf module 3.2
Wcf module 3.2
 
KyivBSD 2009 - Creating a corporate instant messaging and information exchang...
KyivBSD 2009 - Creating a corporate instant messaging and information exchang...KyivBSD 2009 - Creating a corporate instant messaging and information exchang...
KyivBSD 2009 - Creating a corporate instant messaging and information exchang...
 
Lec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняLec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпечення
 
ASP.Net basics
ASP.Net basics ASP.Net basics
ASP.Net basics
 
08 Exceptions and AOP
08  Exceptions and AOP08  Exceptions and AOP
08 Exceptions and AOP
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
Dbase
DbaseDbase
Dbase
 

Viewers also liked

SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Roleeleksdev
 
Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkpeleksdev
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Roleeleksdev
 
Frontend basics
Frontend basicsFrontend basics
Frontend basicseleksdev
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...eleksdev
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1eleksdev
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Roleeleksdev
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Roleeleksdev
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentationeleksdev
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 apieleksdev
 
Sql 04n edited
Sql 04n editedSql 04n edited
Sql 04n editedeleksdev
 
SQL: Indexes, Select operator
SQL: Indexes, Select operatorSQL: Indexes, Select operator
SQL: Indexes, Select operatoreleksdev
 
SQL Grouping, Joins
SQL Grouping, JoinsSQL Grouping, Joins
SQL Grouping, Joinseleksdev
 
Communication in android
Communication in androidCommunication in android
Communication in androideleksdev
 
Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practiceseleksdev
 
Hello android world
Hello android worldHello android world
Hello android worldeleksdev
 
sql introduction
sql introductionsql introduction
sql introductioneleksdev
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors APIeleksdev
 
Lecture java basics
Lecture   java basicsLecture   java basics
Lecture java basicseleksdev
 

Viewers also liked (20)

SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Role
 
Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkp
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Role
 
Frontend basics
Frontend basicsFrontend basics
Frontend basics
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Role
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Role
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentation
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 api
 
Sql 04n edited
Sql 04n editedSql 04n edited
Sql 04n edited
 
SQL: Indexes, Select operator
SQL: Indexes, Select operatorSQL: Indexes, Select operator
SQL: Indexes, Select operator
 
SQL Grouping, Joins
SQL Grouping, JoinsSQL Grouping, Joins
SQL Grouping, Joins
 
tsql
tsqltsql
tsql
 
Communication in android
Communication in androidCommunication in android
Communication in android
 
Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practices
 
Hello android world
Hello android worldHello android world
Hello android world
 
sql introduction
sql introductionsql introduction
sql introduction
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors API
 
Lecture java basics
Lecture   java basicsLecture   java basics
Lecture java basics
 

Similar to Rpc

Alexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using PythonAlexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using PythonPyCon Odessa
 
Лабораторно-Практична робота
Лабораторно-Практична роботаЛабораторно-Практична робота
Лабораторно-Практична роботаAnna Popravka
 
network
networknetwork
networkjudin
 
компютерні мережі (Fil eminimizer)
компютерні мережі (Fil eminimizer)компютерні мережі (Fil eminimizer)
компютерні мережі (Fil eminimizer)Masunya
 
глобальна мережа Internet
глобальна мережа Internetглобальна мережа Internet
глобальна мережа InternetNatasha Rupsha
 
Comp net
Comp netComp net
Comp netEscuela
 
урок 27
урок 27урок 27
урок 27Serega89
 
V24 com to_net
V24 com to_netV24 com to_net
V24 com to_netRingonoki
 
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
"Request Lifecycle at Prom.ua", Vitaliy KharytonskiyFwdays
 
5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPC5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPCПупена Александр
 
урок 17 9 клас Локальна комп'ютерна мережа
урок 17 9 клас Локальна комп'ютерна мережаурок 17 9 клас Локальна комп'ютерна мережа
урок 17 9 клас Локальна комп'ютерна мережаHelen Pata
 
Антіпова П. Варіант-2
Антіпова П. Варіант-2Антіпова П. Варіант-2
Антіпова П. Варіант-2Pavlina Antipova
 

Similar to Rpc (20)

4 4 1 app
4 4 1 app 4 4 1 app
4 4 1 app
 
Alexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using PythonAlexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using Python
 
Лабораторно-Практична робота
Лабораторно-Практична роботаЛабораторно-Практична робота
Лабораторно-Практична робота
 
4 2 3 ip
4 2 3 ip 4 2 3 ip
4 2 3 ip
 
4 2 1 Протоколи IP (частина 1)
4 2 1 Протоколи IP (частина 1)4 2 1 Протоколи IP (частина 1)
4 2 1 Протоколи IP (частина 1)
 
1 3 osi рівні
1 3 osi рівні 1 3 osi рівні
1 3 osi рівні
 
network
networknetwork
network
 
компютерні мережі (Fil eminimizer)
компютерні мережі (Fil eminimizer)компютерні мережі (Fil eminimizer)
компютерні мережі (Fil eminimizer)
 
20 internet
20 internet20 internet
20 internet
 
глобальна мережа Internet
глобальна мережа Internetглобальна мережа Internet
глобальна мережа Internet
 
Comp net
Comp netComp net
Comp net
 
урок 27
урок 27урок 27
урок 27
 
Opc
OpcOpc
Opc
 
Razdel16
Razdel16Razdel16
Razdel16
 
2
22
2
 
V24 com to_net
V24 com to_netV24 com to_net
V24 com to_net
 
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
 
5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPC5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPC
 
урок 17 9 клас Локальна комп'ютерна мережа
урок 17 9 клас Локальна комп'ютерна мережаурок 17 9 клас Локальна комп'ютерна мережа
урок 17 9 клас Локальна комп'ютерна мережа
 
Антіпова П. Варіант-2
Антіпова П. Варіант-2Антіпова П. Варіант-2
Антіпова П. Варіант-2
 

Rpc

  • 2. Модель OSI Абстрактна мережева модель для комунікацій і розробки мережевих протоколів.
  • 3. Модель 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)
  • 4. System.Net • WebClient - надає загальні методи обміну даними з ресурсом, заданим через URI • WebRequest і WebResponse - утворюють основу так званих підключаючих протоколів, які є реалізацією мережевих служб, що дозволяють розробляти програми, що використовують ресурси Інтернету, не піклуючись про конкретні особливості окремих протоколів. • Cookie - надає набір властивостей і методів, які використовуються для управління куками. • Dns - надає прості функціональні можливості розпізнавання доменних імен. • EndPoint – ідентифікує мережеву адресу
  • 5. Serialization • Серіалізація може бути визначена як процес збереження стану екземпляра об'єкта на носії. • В ході цього процесу, публічні та приватні поля об'єкта і ім'я класу, включаючи збірку, яка містить клас, перетворюється в потік байтів, який потім записується в потік даних. • Коли об'єкт десеріалізовується, створюється точний клон вихідного об'єкта. • У бінарної серіалізації, всі члени, навіть ті, які тільки для читання, серіалізуються, а продуктивність покращується. • XML серіалізація забезпечує більшу читабельність коду, а також велику гнучкість спільного використання об'єктів і використовується в цілях сумісності. • XML серіалізацІя також може бути використаний для серіалізації об'єктів в XML-потоки, які відповідають стандарту SOAP.
  • 8. Named pipe • Іменований канал - один з методів міжпроцесорної взаємодії, • Розширення поняття конвейєра в Unix подібних ОС • Іменований канал дозволяє різним процесам обмінюватися даними, навіть якщо програми, що виконуються в цих процесах, з самого початку не були написані для взаємодії з іншими програмами. • Введений з .Net Framework 3.5
  • 9. eleks.com Демонстрація 1 • Приклад реалізації іменованого канала
  • 10. Sockets (Сокети) • Сокет - назва програмного інтерфейсу для забезпечення обміну даними між процесами. • Процеси при такому обміні можуть виконуватися як на одній машині, так і на різних ЕОМ, пов'язаних між собою мережею. • Сокет - абстрактний об'єкт, який представляє кінцеву точку з'єднання. • Слід розрізняти клієнтські і серверні сокети.
  • 11. Sockets (Сокети) • Кожен процес може створити слухаючий сокет (серверний сокет) і прив'язати його до якогось порту операційної системи. • Процес, що слухає, зазвичай знаходиться в циклі очікування, тобто прокидається при появі нового з'єднання. • При цьому зберігається можливість перевірити наявність з'єднань у цей час, встановити тайм-аут для операції тощо. • Кожен сокет має свою адресу.
  • 12. Типи сокетів • Stream socket (Потоковий сокет) - сокет з встановленим з'єднанням, що складається з потоку байтів, який може бути двонаправленим, тобто через цю кінцеву точку додаток може і передавати, і отримувати дані (TCP). • Datagram socket (Датаграмний сокет) – сокети без організації зєднань, одностороння відправка (UDP). • Raw socket (Сирий сокет) – повідомлення відправляється напряму додатку, який має реалізувати власний аналізатор пакетів • Sequenced Packet Sockets (Сокет послідовних пакетів) – схожий на потоковий, тільки зберігаються межі записів
  • 13. System.Net.Sockets • MulticastOption - клас MulticastOption встановлює значення IP-адреси для приєднання до IP- групи або для виходу з неї. • NetworkStream - реалізує базовий клас потоку, з якого дані відправляються і в якому вони отримуються. Це абстракція високого рівня, що представляє з'єднання з каналом зв'язку TCP / IP. • TcpClient - будується на класі Socket, щоб забезпечити TCP-обслуговування на більш високому рівні. TcpClient надає кілька методів для відправки та отримання даних через мережу. • TcpListener - побудований на низкорівневому класі Socket. Його основне призначення - серверні додатки. Він очікує вхідні запити на з'єднання від клієнтів і повідомляє додаток про будь-які з'єднання.
  • 14. System.Net.Sockets • UdpClient UDP - це протокол, що не організовує з'єднання, отже, для реалізації UDP-обслуговування в .NET потрібна інша функціональність. • SocketException - вийнято, який породжується, коли в сокеті виникає помилка. • Socket - сам клас Socket. Він забезпечує базову функціональність програми сокета.
  • 15. Socket • Accept () - Створює новий сокет для обробки вхідного запиту на з'єднання. • Bind () - Пов'язує сокет з локальною кінцевою точкою для очікування вхідних запитів на з'єднання. • Close () - Змушує сокет закритися. • Connect () - Встановлює з'єднання з віддаленим хостом. • GetSocketOption () - Повертає значення SocketOption. • IOControl () - Встановлює для сокета низькорівневі режими роботи. Цей метод забезпечує низькорівневий доступ до лежачого в основі класу Socket. • Listen () - Поміщає сокет в режим прослуховування (очікування). Цей метод призначений тільки для серверних додатків. • Receive () - Отримує дані від зєднаного сокета.
  • 16. Socket • Poll () - Визначає статус сокета. • Select () - Перевіряє статус одного або декількох сокетов. • Send () – Відправляє дані з'єднаному сокету. • SetSocketOption () - Встановлює опцію сокета. • Shutdown () - Забороняє операції відправки та отримання даних на сокеті.
  • 19. RPC (Remote procedure call ) RPC - протокол, що дозволяє програмі, запущеній на одному комп'ютері бути викликаною на іншому комп'ютері без написання безпосередньо коду для цієї операції. • Асиметричність - одна із сторін є ініціатором • Синхронність - виконання процедури, що викликає віддалену процедуру, призупиняється з моменту видачі запиту і відновлюється тільки після повернення з викликаної процедури.
  • 20. 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)
  • 21. 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
  • 23. .NET Remoting • Прикладний програмний інтерфейс (API) від Microsoft для взаємодії між процесами. • Дозволяє програмі робити об'єкт (об'єкт ремоутінгу) доступним через границі ремоутінгу, такі як різні програмні домени (application domains), процеси чи навіть різні комп'ютери, з'єднані у мережу. • У клієнтській програмі всі запити до об'єкта ремоутінгу проксуються в .NET Remoting середовищі за допомогою Channel об'єктів, таким чином інкапсулюється спосіб транспортування (TCP потоки, HTTP потоки та іменовані канали(англ. named pipes)).
  • 25. Remote Objects • Будь-який об'єкт за межами домену (application domain) додатка, що викликає, слід вважати віддаленим, де об'єкт буде реконструйований. Локальні об'єкти, які не можуть бути серіалізовані не можуть бути передані в інший домен програми, і тому не віддалені. • Обєкт може стати віддаленим, якщо наслідується від MarshalByRefObject абоякщо він серіалізований через атрибут [Serializable] чи через імплементацію Iserializable.
  • 26. Типи .NET Remotable Objects • Single Call – обслуговують один вхідний запит. Корисні в ситуаціях, коли об'єкти необхідні, щоб зробити кінцевий обсяг роботи. Не можуть містити інформацію про стан між викликами методів. • Singleton Objects - об'єкти, які обслуговують безліч клієнтів, і, отже, обмін даними за рахунок збереження інформації про стан між клієнтським запусками. Вони корисні в тих випадках, коли данв повинні бути розділені між клієнтами в явному вигляді, а також в яких накладні витрати створення і підтримки об'єктів є істотними. • Client-Activated Objects - об'єкти на стороні сервера, які активуються за запитом клієнта. Коли клієнт відправляє запит на об'єкт сервера за допомогою оператора “new”, повідомлення із запитом на активацію відправляється на віддалений додаток. Потім сервер створює екземпляр запитуваного класу, і повертає ObjRef назад в клієнтську програму, що його викликала.
  • 27. Channels • Інфраструктура .NET Remoting забезпечує механізм, за допомогою якого потік байтів посилається від однієї точки до іншої (клієнта до сервера і т.д.). • Це досягається за допомогою каналу. Строго кажучи, це клас, який реалізує інтерфейс IChannel. • Є два зумовлених .NET Remoting канали в System.Runtime.Remoting.Channels -TcpChannel і HttpChannel. • Щоб використовувати TcpChannel, сервер повинен створити екземпляр і зареєструвати клас TcpServerChannel, а клієнт, клас TcpClientChannel.
  • 28. Channels • Інфраструктура .NET Remoting забезпечує механізм, за допомогою якого потік байтів посилається від однієї точки до іншої (клієнта до сервера і т.д.). • Це досягається за допомогою каналу. Строго кажучи, це клас, який реалізує інтерфейс IChannel. • Є два зумовлених .NET Remoting канали в System.Runtime.Remoting.Channels -TcpChannel і HttpChannel. • Щоб використовувати TcpChannel, сервер повинен створити екземпляр і зареєструвати клас TcpServerChannel, а клієнт, клас TcpClientChannel.
  • 29. eleks.com Демонстрація 1 • RPC Client with .NET Remoting
  • 31. © Denys Prylutskyi, 2015 Практичне завдання 1. Написати з допомогою сокетів клієнт-серверну програму-гру «Поле чудес». Кожні 3 хв починається нова гра, всі клієнти отримують питання і ******, де кількість символів – кількість букв у відповіді. Кожен користувач може виконати 4 команди: • exit – закриття клієнта • word <правильна відповідь> - у випадку вірної відповіді, користувач виграв, ні – програв (більше не бере участі у даному етапі) • letter <буква1, буква2, буква3> - букви у слові (максимум 3), за один етап (3хв) – одне відправлення, після виконання всім клієнтам відправляється відповідь з відкритими буквами (*А*А**) • stat – статистика зіграних/виграних матчів 2. Написати з допомогою .NET Remoting клієнт-серверну програму-гру «Мафія»