Networks 2013 — различия между версиями
Antonk (обсуждение | вклад) (→Лекции) |
Antonk (обсуждение | вклад) (→Лекции) |
||
(не показано 7 промежуточных версий 4 участников) | |||
Строка 2: | Строка 2: | ||
Практика - Антон Кузнецов | Практика - Антон Кузнецов | ||
+ | |||
+ | == Рейтинг == | ||
+ | |||
+ | [https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dHVscFgwX3Z5c3QtNVZsdVY5MGZnM2c&output=html Рейтинг] | ||
== Лекции == | == Лекции == | ||
Строка 10: | Строка 14: | ||
[[Медиа:Networks_2013_Sockets_01.ppt|Сокеты-01]]<br /> | [[Медиа:Networks_2013_Sockets_01.ppt|Сокеты-01]]<br /> | ||
[[Медиа:Networks_2013_Sockets_02.ppt|Сокеты-02]] | [[Медиа:Networks_2013_Sockets_02.ppt|Сокеты-02]] | ||
+ | |||
+ | [[Медиа:Networks_2013_REST_SOAP.pptx|Rest]] | ||
+ | |||
+ | === Products & consumers === | ||
+ | |||
+ | Это разновидность паттерна producer-consumer (производитель-потребитель). Один поток (или один модуль) отвечает за прием данных по сети. При прохождении десериализации данные превращаются в объекты (продукты). При конструировании продукты автоматически добавляются в соответствующую очередь (на каждый тип продукта - своя очередь). Потребитель (consumer) отвечает за обработку конкретного вида продуктов и в процессе своей работы получает данные из соответствующей очереди.<br /> | ||
+ | Основная цель паттерна - разграничение ответственности. Сетевой модуль не знает, каким образом необходимо обрабатывать каждый тип данных, поэтому он не должен об этом задумываться, что достигается за счет автоматического добавления продуктов при десериализации в соответствующую очередь. Для обработки данных есть потребители. Если возникнет необходимость добавить новый тип продуктов, то необходимо лишь добавить соответствующего потребителя.<br /> | ||
+ | У данного паттерна также есть разновидности - зачастую продукты помещаются не в несколько очередей, а в одну. А при обработке продукт предлагается последовательно всем потребителям. Если ни один из потребителей не обработал продукт, то клиенту возвращается ошибка... | ||
== Домашние задания == | == Домашние задания == | ||
Строка 23: | Строка 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
Лектор - Антон Кузнецов
Практика - Антон Кузнецов
Содержание
Рейтинг
Лекции
Cокеты
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
Домашнее задание -- сетевой чатик Добавить возможность считать метрики:
- Среднее время обработки клиента;
- Среднее время простоя потока
Еще две "четкие" фотографии: раз, два
Если вы не используете паттерн Products and consumers в чате, то нужно сделать дополнительное задание.
Крайний срок для чата -- 15 ноября.
Посчитать метрики для чата: Среднее время обработки клиента и понять, с какого момента оно начинает резко расти; Среднее время простоя.
Еще задание про REST. До конца ноября.
Про REST читать здесь:
http://www.vogella.com/articles/REST/article.html
Список литературы
Ссылки
---Также (добавил не Антон):
http://book.itep.ru/4/44/icmp_444.htm