Networks 2013 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Ссылки)
(Лекции)
 
(не показано 8 промежуточных версий 4 участников)
Строка 2: Строка 2:
  
 
Практика - Антон Кузнецов
 
Практика - Антон Кузнецов
 +
 +
== Рейтинг ==
 +
 +
[https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dHVscFgwX3Z5c3QtNVZsdVY5MGZnM2c&output=html Рейтинг]
  
 
== Лекции ==
 
== Лекции ==
 +
 +
[[Медиа:Networks_2013_HTTP.ppt|HTTP]]
 +
 +
=== Cокеты ===
 +
[[Медиа:Networks_2013_Sockets_01.ppt|Сокеты-01]]<br />
 +
[[Медиа:Networks_2013_Sockets_02.ppt|Сокеты-02]]
 +
 +
[[Медиа:Networks_2013_REST_SOAP.pptx|Rest]]
 +
 +
=== Products & consumers ===
 +
 +
Это разновидность паттерна producer-consumer (производитель-потребитель). Один поток (или один модуль) отвечает за прием данных по сети. При прохождении десериализации данные превращаются в объекты (продукты). При конструировании продукты автоматически добавляются в соответствующую очередь (на каждый тип продукта - своя очередь). Потребитель (consumer) отвечает за обработку конкретного вида продуктов и в процессе своей работы получает данные из соответствующей очереди.<br />
 +
Основная цель паттерна - разграничение ответственности. Сетевой модуль не знает, каким образом необходимо обрабатывать каждый тип данных, поэтому он не должен об этом задумываться, что достигается за счет автоматического добавления продуктов при десериализации в соответствующую очередь. Для обработки данных есть потребители. Если возникнет необходимость добавить новый тип продуктов, то необходимо лишь добавить соответствующего потребителя.<br />
 +
У данного паттерна также есть разновидности - зачастую продукты помещаются не в несколько очередей, а в одну. А при обработке продукт предлагается последовательно всем потребителям. Если ни один из потребителей не обработал продукт, то клиенту возвращается ошибка...
  
 
== Домашние задания ==
 
== Домашние задания ==
Строка 17: Строка 35:
 
C, С++, С++ + Boost.Asio, Java, C#, Python, Haskell, Erlang
 
C, С++, С++ + Boost.Asio, Java, C#, Python, Haskell, Erlang
  
Дедлайн 25/10.
+
 
 +
Дедлайн 25/10
 +
 
 +
Домашнее задание -- сетевой чатик
 +
Добавить возможность считать метрики:
 +
* Среднее время обработки клиента;
 +
* Среднее время простоя потока
 +
Протокол:
 +
https://lh5.googleusercontent.com/-YQCK_bdGt8k/UnOKDDQL8MI/AAAAAAAABvk/uX_QN90tNDI/w1598-h899-no/20131011_152621.jpg
 +
 
 +
Еще две "четкие" фотографии:
 +
[https://drive.google.com/file/d/0B82SeuyS2ofNVGZVaHV1ODB3cWs/edit?usp=sharing раз],
 +
[https://drive.google.com/file/d/0B82SeuyS2ofNZE92Yld6QXdJMTA/edit?usp=sharing два]
 +
 
 +
 
 +
Если вы не используете паттерн Products and consumers в чате, то нужно сделать дополнительное задание.
 +
 
 +
Крайний срок для чата -- 15 ноября.
 +
 
 +
Посчитать метрики для чата:
 +
Среднее время обработки клиента и понять, с какого момента оно начинает резко расти;
 +
Среднее время простоя.
 +
 
 +
 
 +
Еще задание про REST. До конца ноября.
 +
Про REST читать здесь:
 +
http://www.vogella.com/articles/REST/article.html
  
 
== Список литературы ==
 
== Список литературы ==

Текущая версия на 20:51, 12 ноября 2013

Лектор - Антон Кузнецов

Практика - Антон Кузнецов

Рейтинг

Рейтинг

Лекции

HTTP

Cокеты

Сокеты-01
Сокеты-02

Rest

Products & consumers

Это разновидность паттерна producer-consumer (производитель-потребитель). Один поток (или один модуль) отвечает за прием данных по сети. При прохождении десериализации данные превращаются в объекты (продукты). При конструировании продукты автоматически добавляются в соответствующую очередь (на каждый тип продукта - своя очередь). Потребитель (consumer) отвечает за обработку конкретного вида продуктов и в процессе своей работы получает данные из соответствующей очереди.
Основная цель паттерна - разграничение ответственности. Сетевой модуль не знает, каким образом необходимо обрабатывать каждый тип данных, поэтому он не должен об этом задумываться, что достигается за счет автоматического добавления продуктов при десериализации в соответствующую очередь. Для обработки данных есть потребители. Если возникнет необходимость добавить новый тип продуктов, то необходимо лишь добавить соответствующего потребителя.
У данного паттерна также есть разновидности - зачастую продукты помещаются не в несколько очередей, а в одну. А при обработке продукт предлагается последовательно всем потребителям. Если ни один из потребителей не обработал продукт, то клиенту возвращается ошибка...

Домашние задания

Домашнее задание от 11/10

a) ICMP-типы 13 -- запрос синхронизации времени и 14 -- время отправки, получения и т.д. Нужно реализовать клиент и сервер. Проверить, чтобы работало со стандартными службами ОС.

б) ICMP-типы 17 и 18. В 17-ом пакете есть адрес, а в 18 -- маска, соответствующая его сети. Клиент и сервер. C, С++, С++ + Boost.Asio, Java, C#, Python, Haskell, Erlang


Дедлайн 25/10

Домашнее задание -- сетевой чатик Добавить возможность считать метрики:

  • Среднее время обработки клиента;
  • Среднее время простоя потока

Протокол: https://lh5.googleusercontent.com/-YQCK_bdGt8k/UnOKDDQL8MI/AAAAAAAABvk/uX_QN90tNDI/w1598-h899-no/20131011_152621.jpg

Еще две "четкие" фотографии: раз, два


Если вы не используете паттерн Products and consumers в чате, то нужно сделать дополнительное задание.

Крайний срок для чата -- 15 ноября.

Посчитать метрики для чата: Среднее время обработки клиента и понять, с какого момента оно начинает резко расти; Среднее время простоя.


Еще задание про REST. До конца ноября. Про REST читать здесь: http://www.vogella.com/articles/REST/article.html

Список литературы

Ссылки

TCP/IP Illustrated, Vol. 1



---Также (добавил не Антон): http://book.itep.ru/4/44/icmp_444.htm