powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как опрашивать веб сервис по расписанию?
72 сообщений из 72, показаны все 3 страниц
Как опрашивать веб сервис по расписанию?
    #38535661
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

Вот думаю над следующей задачей: есть туристический сайт на asp.net.

Для этого сайта требуется каждую минуту обновлять квоты для гостиниц.

Источником данных выступает веб сервис.

Вопрос, каким образом лучше всего реализовать логику для этой операции?

Насколько я понимаю, в asp.net подходящих таймеров и scheduler'a нет.

В голову приходит только написание windows сервиса, который бы проводил скачивание квот и потом их импортировал в базу.

Я думаю в верном направлении, или данная задача может иметь другие пути решения?
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535665
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое простое: консольное приложение или батник на вин шедулере. Ну или вин сервис, да.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535666
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
свяжитесь с разработчиками вебсервиса, может у них есть возможность как-то "подписаться на обновления"
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535676
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель,

увы нет, там тоже сайт на asp.net и только pull метод.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535677
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

похоже, придётся пилить вин сервис.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535714
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cavaleroпохоже, придётся пилить вин сервис.
Идеально подходит для периодических задач, напр. выполнение задания каждые 2 часа. Для более гибкого шедулинга отлично подойдет нативный виндовой планировщик задач + консолина (чтобы не юзать всякий порожняк типа кварца).
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535716
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cavaleroМСУ,

похоже, придётся пилить вин сервис.
Первое его приложение, насчёт батника и шедулера, гораздо лучше.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535743
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

ок, понял, напишу сначала логику, а потом посмотрю куда ее удобнее засунуть будет.

Я описал общую задачу, но она сложнее, например сайтов может быть N и обработка запроса может длится дольше, чем время между ними и тд.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535748
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cavaleroДень добрый!

Вот думаю над следующей задачей: есть туристический сайт на asp.net.

Для этого сайта требуется каждую минуту обновлять квоты для гостиниц.

Источником данных выступает веб сервис.

Вопрос, каким образом лучше всего реализовать логику для этой операции?Лично я писал для переодической загрузки квот, стопов, цен, туров сервисы.

Случаем не в Мастер-Тур Вам надо квоты загружать? А то могу подсказать, где купить готовый модуль загрузки.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535754
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cavaleroсайтов может быть N и обработка запроса может длится дольше, чем время между ними и тд.Сервис.

Поставщиков данных может быть много, это да.

Кстати GUI для отслеживания загрузки тоже советую написать. Чтобы можно было посмотреть что загрузилось, откуда, как сопоставилось, что не сросрось, какие ошибки были. Подправить, догрузить, повторно загрузить определённые данные.

Ну и выполнить к примеру первую загрузку. Обновления квот будет уже сервис догружать лёгкими запросами.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535777
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cavaleroМСУ,

ок, понял, напишу сначала логику, а потом посмотрю куда ее удобнее засунуть будет.

Я описал общую задачу, но она сложнее, например сайтов может быть N и обработка запроса может длится дольше, чем время между ними и тд.

Да, всё правильно. Кстати, можешь взять мой готовый вин сервис для периодичских задач: http://codearticles.ru/articles/1238

Пишешь свою работу в виде IWorkItem и сервис её исполняет через время Seconds.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public interface IWorkItem
{
    // Период повтора задачи в секундах
    int Seconds { get; }

    // Задача в работе
    bool IsBusy { get; set; }
        
    // Выполнение задачи
    void ExecuteTask(CancellationToken token);

    void Cancel();
}
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535801
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

окей, спасибо! буду иметь в виду.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535804
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

нет, не в МТ, в проприетарное приложение одного из клиентов.

А в Зеленограде я знаю только одну фирму, которая разрабатывает модули для МТ - Зелсофт :) Угадал?
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535870
thresher8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУДа, всё правильно. Кстати, можешь взять мой готовый вин сервис для периодичских задач: http://codearticles.ru/articles/1238 ох итить... ну и архитектурко

вопрервых, ueukb topshelf и не изобретай лисапедов со StartDebug((

во=втолрых, вся логика внутри loadservice -- плохо и нетестируемо

и даже лень описывать тот ад, что творится внутри workitem.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38535953
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
thresher8,

а как правильно то?
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536002
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thresher8вопрервых, ueukb topshelf и не изобретай лисапедов со StartDebug((
Классический подход при разработке вин сервисов. Готов показать лучший способ?

thresher8во=втолрых, вся логика внутри loadservice -- плохо и нетестируемо
Какая там логика и что там тестировать? Три строчки кода для детского сада. Рассмешил.

thresher8и даже лень описывать тот ад, что творится внутри workitem.
Ты просто еще не дорос до него, поэтому "лень" описывать. И да, таки ждем вариант лучше.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536008
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://github.com/Topshelf/Topshelf/downloads

Зачем мне эта мертвая порнография в проекте?
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536022
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУчтобы не юзать всякий порожняк типа кварца

на кварц не кати бочку, тулузина хороша!
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536062
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttна кварц не кати бочку, тулузина хороша!
Хорошая, но бесполезная - всё есть в коробке.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536065
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cavaleroskyANA,

нет, не в МТ, в проприетарное приложение одного из клиентов.

А в Зеленограде я знаю только одну фирму, которая разрабатывает модули для МТ - Зелсофт :) Угадал?Да. Я раньше там и работал. Дёшево, быстро, качественно
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536076
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни, у вас дискуссия не в ту сторону пошла.

Основная часть работы - это слой доступа к данным: единый интерфейс шлюза (gateway) к поставщикам квот и N реализаций, где N - это количество различных типов поставщиков.
N мапперов из формата поставщика в формат проприетарного софта заказчика.
Диспетчер, что будет опрашивать M источников данных (конечных точек), и его конфигурация. M больше или равно N, так как у разных партнёров может стоять одинаковый софт.
Логирование всего этого.
GUI для просмотра результатов и управления всем этим хозяйтсвом пользователем (опционально).
Тестирование.

А куда это вкорячить: в windows-сервис, в планировщиу, в кварц, интегрировать в проприетарный софт в качетве плагина, - это уже гораздо меньший объём работ.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536079
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя можно всё это дело по быстрому на коленке по коду сервиса размазать
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536135
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУХорошая, но бесполезная - всё есть в коробке.

не бывает таких коробок ))

skyANAА куда это вкорячить: в windows-сервис, в планировщиу, в кварц, интегрировать в проприетарный софт в качетве плагина, - это уже гораздо меньший объём работ.

действительно. для начала надо реализовать задачу в виде модуля. а уж обёртку для него написать в виде консольки или сервиса, это задача на 3 копейки. интересно, что всё почему-то упёрлось в обёртку. это как про бизнес, который почему-то часто начинается с визиток
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536165
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttне бывает таких коробок ))
Бывает. Вот )

...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536360
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУБывает. Вот )

планирощик заданий в виндовс предназначен для обслуживания системы .
не для выполнения прикладных задач.

что, конечно, никого особо не напрягает
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536389
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпланирощик заданий в виндовс предназначен для обслуживания системы .
не для выполнения прикладных задач.
Какую-то чушь ты пишешь, даже не ожидал от тебя такого

Виндовой шедулер предназначен для выполнения любых заданий при помощи гибких триггеров с тремя типами действий - запустить программу, отправить email, отобразить сообщение. В данном случае нас 100% устраивает первое действие.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536400
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ Json.net встроили в каркас .net для веб апи) глядишь и кварц встроят еще не вечер))
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536424
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuМСУ Json.net встроили в каркас .net для веб апи) глядишь и кварц встроят еще не вечер))
Json.net никуда не встраивали ни в какой каркас .NET :) Во-вторых, я вообще в шоке от этой петрушки. Есть натив, есть Microsoft.AspNet.WebPages.dll с System.Web.Helpers.Json. Куда уже еще? С этим json могут работать даже дети, на кой ляд еще что-то? ))

P.S. Если встроят кварц в .NET, я только за. Но как отдельную какашку приблуду пользовать этот зоопарк не хочу.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536440
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕсть натив, есть Microsoft.AspNet.WebPages.dll с System.Web.Helpers.Json. Куда уже еще?

отвязаться от ASP.NET, вот какая задача.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536445
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВиндовой шедулер предназначен для выполнения любых заданий при помощи гибких триггеров с тремя типами действий - запустить программу, отправить email, отобразить сообщение. В данном случае нас 100% устраивает первое действие.

для выполнения служебных утилит -- самое то. для выполнения служб прикладных приложений ни о чём. используется для прикладухи в основном потому что первое что под руку подворачиваться, а извилиной лишний раз пошевелить лень.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536451
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУЕсть натив, есть Microsoft.AspNet.WebPages.dll с System.Web.Helpers.Json. Куда уже еще?
отвязаться от ASP.NET, вот какая задача.
Ну так отвязывайся, кто мешает? System.Runtime.Serialization.Json
Во-вторых, Microsoft.AspNet.WebPages продукт от MS, который может использоваться и вне контекста ASP.NET. Не знал?

hVosttдля выполнения служебных утилит -- самое то. для выполнения служб прикладных приложений ни о чём.
Я не понимаю, что такое "служебная утилита". На службе кому? Армии, президенту, райисполкому?

hVosttиспользуется для прикладухи в основном потому что первое что под руку подворачиваться, а извилиной лишний раз пошевелить лень.
Используется везде (подчеркиваю), где нужно выполнение по расписанию. Служба там у тебя, пляски под дудку или война.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536461
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу так отвязывайся, кто мешает? System.Runtime.Serialization.Json

неудачный дизайн, основанный на ридерах/врайтерах. не асинхронен.

МСУВо-вторых, Microsoft.AspNet.WebPages продукт от MS, который может использоваться и вне контекста ASP.NET. Не знал?

процитирую исходный посыл: МСУ Json.net встроили в каркас .net для веб апи

при чем тут вебпейджи? ))

МСУЯ не понимаю, что такое "служебная утилита". На службе кому? Армии, президенту, райисполкому?

системе. это для админов тулуза вобчето.

МСУИспользуется везде (подчеркиваю), где нужно выполнение по расписанию. Служба там у тебя, пляски под дудку или война.

"везде" понятие сильно растяжимое. ну и ради бога, знаю что пихали и будут пихать туда прикладухи. на улице тоже мусор большинство разбрасывают. это ещё не значит, что это правильно.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536465
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

и ещё System.Runtime.Serialization.Json прибит гвоздями к xml-ю.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536469
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

а вообще, System.Runtime.Serialization.Json ярчайший пиример костыля деревянного. криво-кособоко приделанного к серилизации.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536479
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttнеудачный дизайн, основанный на ридерах/врайтерах.
Обычный дизайн, такой же как и весь .NET. Какие ридеры-врайтеры?

Код: c#
1.
string json = new JavaScriptSerializer().Serialize(new Employee { EmployeeId = 123, Name = "Test" }); 



hVosttне асинхронен
Зачем? Во-вторых, есть же TPL.

hVosttпроцитирую исходный посыл: МСУ Json.net встроили в каркас .net для веб апи
при чем тут вебпейджи? ))
Процитирую идею: в .NET, и уж тем более в его каркас, ничего не встраивали. Там тупо зареференсили сборку для бездумных мартышек.

hVosttсистеме. это для админов тулуза вобчето.
А твою поделку на кварце админить не надо? Не вижу принципиальных отличий, админить вин сервис / консолину с кварцевым шедулингом или админить вин шедулер с консолиной. Там ко всему прочему у вин шедулера есть удобный гуй.


hVostt"везде" понятие сильно растяжимое. ну и ради бога, знаю что пихали и будут пихать туда прикладухи. на улице тоже мусор большинство разбрасывают. это ещё не значит, что это правильно.
У тебя мусор в голове. Серьезно.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536481
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
и собственно они зря это сделали (( стандартный от мс серилизатор дату хреначит к виду "\/Date(1239018869048)\/. а json.net в цивильный iso формат. В итоге на выходе asp mvc шлет херню , asp web api нормальный вид и спрашивает зачем 2 разных механизма.

п.с. последние версии веб апи без Json.net не заведутся. не правильно может выразился насчет встройки, но жёсткий референс там есть теперь
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536484
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, и ещё System.Runtime.Serialization.Json прибит гвоздями к xml-ю.
Садись, двойка.

hVosttМСУ, а вообще, System.Runtime.Serialization.Json ярчайший пиример костыля деревянного. криво-кособоко приделанного к серилизации.
На нем уже 100% как безперебойно работает SOA, всякие asmx сервисы, http(s) байдинги на wcf и прочие плюшки. Так что еще вопрос, что костыль.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536488
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuМСУ
и собственно они зря это сделали (( стандартный от мс серилизатор дату хреначит к виду "\/Date(1239018869048)\/. а json.net в цивильный iso формат. В итоге на выходе asp mvc шлет херню , asp web api нормальный вид и спрашивает зачем 2 разных механизма.
DateTimeConverter и получи любой формат :) Во-вторых, есть еще Microsoft.AspNet.WebPages, говорю же.

handmadeFromRuп.с. последние версии веб апи без Json.net не заведутся. не правильно может выразился насчет встройки, но жёсткий референс там есть теперь
Сомневаюсь, что не заведутся.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536490
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСадись, двойка.

вся серилизация так-то )


МСУНа нем уже 100% как безперебойно работает SOA, всякие asmx сервисы, http(s) байдинги на wcf и прочие плюшки. Так что еще вопрос, что костыль.

про это и речь. и ни на нём, а на интерфейсах серилизации. Json туда подпихнули как реализацию, типо XML/JSON взаимозаменяемые вещи. многим очень хочется в этом верить.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536492
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУDateTimeConverter и получи любой формат :)

костыль едет на костыле костылем погоняет
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536494
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНа нем уже 100% как безперебойно работает SOA, всякие asmx сервисы, http(s) байдинги на wcf и прочие плюшки. Так что еще вопрос, что костыль.

про это и речь. и ни на нём, а на интерфейсах серилизации. Json туда подпихнули как реализацию, типо XML/JSON взаимозаменяемые вещи. многим очень хочется в этом верить.[/quot]
Я не знаю, кто куда и чего пропихивал, я знаю, что в нативе есть штатный инструмент для работы с JSON и ничего больше не нужно. Вдобавок, есть родной хелпер в WebPages. Всё это продукты от вендора, в первом случае вообще сборка в гаке и доступна всем и вся. Вторую можно положить в гак, если хочется. Накуя тут педали от какого-то велосипедиста? http://www.nuget.org/profiles/jamesnk/
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536496
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУDateTimeConverter и получи любой формат :) Во-вторых, есть еще Microsoft.AspNet.WebPages, говорю же.

1) эт костель чем решение. 2)так я и про JsonResult который и основан на мс серрилизаторе

МСУСомневаюсь, что не заведутся.
ну я пробовал )

п.с. мы уже с hVostt обсужали эту проблему (
http://stackoverflow.com/questions/726334/asp-net-mvc-jsonresult-date-format 2009 года и воз тамже
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536497
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЗачем? Во-вторых, есть же TPL.

при чем тут TPL. имеется в вижу конечный автомат. всёже это данные, они могут быть маленькими, а могут быть и большими. асинк нужен для реализации полностью асинхронного до мозга костей WebAPI.


МСУПроцитирую идею: в .NET, и уж тем более в его каркас, ничего не встраивали. Там тупо зареференсили сборку для бездумных мартышек.

прямой не заменяемый референс не сильно отличается от прямого встраивания. пакет придётся качать, хоть убейся. хоть што делай. а сборка для бездумных мартышек пойдёт деплой
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536498
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУDateTimeConverter и получи любой формат :)

костыль едет на костыле костылем погоняет
Одна строка кода и у тебя честный ISO 8601 - костыль?

Код: c#
1.
JavaScriptSerializer.RegisterConverters(new JavaScriptConverter[] { new DateTimeConverter() });



Тут можно вкорячить любые конфертеры на вкус и цвет, это даже более универсальное решение, чем от велосипедиста.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536501
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВсё это продукты от вендора, в первом случае вообще сборка в гаке и доступна всем и вся.

та с этим никто не спорит. понятно что в гаке, скокаж можно тыкать этим гаком
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536512
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОдна строка кода и у тебя честный ISO 8601 - костыль?

Код: c#
1.
JavaScriptSerializer.RegisterConverters(new JavaScriptConverter[] { new DateTimeConverter() });




Тут можно вкорячить любые конфертеры на вкус и цвет, это даже более универсальное решение, чем от велосипедиста.

а зачем мне велосипед для стандартного ISO-шного значения? почему мне аналогичный конвертер не надо пихать в XML? там-то всё ок.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536513
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУЗачем? Во-вторых, есть же TPL.
при чем тут TPL. имеется в вижу конечный автомат. всёже это данные, они могут быть маленькими, а могут быть и большими. асинк нужен для реализации полностью асинхронного до мозга костей WebAPI.
Вечно ты споришь о том, в чем полный ноль. Читай про Task.Factory.StartNew (более мощная штука) или async-await.

Код: c#
1.
2.
3.
4.
5.
6.
7.
public async ActionResult Index()
{
     var webClient = new WebClient();
     string json = await webClient.DownloadStringTaskAsync(FlightsService.Url);
     Flight[] flights = new JavaScriptSerializer().Deserialize<Flight[]>(json);
     return View("FlightList", flights);
}



Учи матчасть лучше.


hVosttпрямой не заменяемый референс не сильно отличается от прямого встраивания. пакет придётся качать, хоть убейся. хоть што делай. а сборка для бездумных мартышек пойдёт деплой
Именно поэтому у меня пока в веб апи предвзятое отношение. Всё-таки на WCF с различными байдингами и протоколами я смотрю более оптимистично.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536518
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУВсё это продукты от вендора, в первом случае вообще сборка в гаке и доступна всем и вся.
та с этим никто не спорит. понятно что в гаке, скокаж можно тыкать этим гаком
Так а в чем тогда вопрос? Ты же сам просил отвязаться от ASP.NET?

hVosttа зачем мне велосипед для стандартного ISO-шного значения? почему мне аналогичный конвертер не надо пихать в XML? там-то всё ок.
Не знаю зачем он тебе. Пиши любой ISO и юзай на здоровье. Причем тут XML?
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536520
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
господа мы ушли от темы топика, предлагаю закруглятся с лишним. хотя пятница ж)))
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536523
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВечно ты споришь о том, в чем полный ноль. Читай про Task.Factory.StartNew (более мощная штука) или async-await.

я не говорил, что синхронную фигню нельзя превратить в асинк. тем более с таскфектори надо связать канселлер, обрабоотку исключений... это всё должно быть внутрях. чтобы я сделал await, а не ипался с таском.

МСУВечно ты споришь о том, в чем полный ноль. Читай про Task.Factory.StartNew (более мощная штука) или async-await.

перечитай свой код и найди затык на 3-ей строчке кода функции Index()

МСУВсё-таки на WCF с различными байдингами и протоколами я смотрю более оптимистично.

всё ж простые не перегруженные решения двигаются быстрей. не смотря на мощь и возможности WCF. явно пошла трещина между энтерпрайзом и гибкими технологичными решениями ))
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536534
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТак а в чем тогда вопрос? Ты же сам просил отвязаться от ASP.NET?

в том, что гак это единственное преимущество. сомнительное если честно. так как нугет пакеты умеют часто обновляться, привнося кучу радостей в виде новых плюшек, повышенной скорости, усовершенстований, ну и весёлых багов не без этого , а фреймворк обновляется редко.

по сути в родном селизаторе нет ни LINQ, ни асинка, и стандарты не держит, требуется какие-то форматеры подключать, которые ещё написать надо.

МСУНе знаю зачем он тебе. Пиши любой ISO и юзай на здоровье. Причем тут XML?

ну как при чём. взаимозаменяемость призрачная. попрошу в WCF дату и получу хрен с маслом, пока форматер не подрублю. костыли наше всё? ))
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536536
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttя не говорил, что синхронную фигню нельзя превратить в асинк.
А что ты говорил? Внятно сформулируй мысль - для какой задачи и что тебе надо?

hVosttтем более с таскфектори надо связать канселлер, обрабоотку исключений...
Пипец как сложно, просто неподъемная задача

Код: c#
1.
2.
3.
4.
5.
6.
7.
var tokenSource = new CancellationTokenSource();
tokenSource.Token.Register(() => instance.Cancel());
var task = Task.Factory.StartNew(() => instance.ExecuteTask(tokenSource.Token), tokenSource.Token)
                     .ContinueWith(t => 
                     { 
                        // log exception
                     }, TaskContinuationOptions.NotOnFaulted);




hVosttэто всё должно быть внутрях. чтобы я сделал await, а не ипался с таском.
Не знаю, вот сколько уже работаю с дотнетом и сериализацией/десериализацией, мне такого еще не понадобилось. Ты там терабайты json что-ли пилишь, признавайся? Тогда точно TPL нужен

hVosttперечитай свой код и найди затык на 3-ей строчке кода функции Index()
И в чем там затык?

hVosttМСУВсё-таки на WCF с различными байдингами и протоколами я смотрю более оптимистично.
всё ж простые не перегруженные решения двигаются быстрей. не смотря на мощь и возможности WCF. явно пошла трещина между энтерпрайзом и гибкими технологичными решениями ))
Серьезно, лично я бы не стал нигде применять web api, не вижу в нем смысла. REST? Дык WCF тоже так умеет. Роутинг? Тоже самое и там. Почитай мои рецепты на эту тему, если интересно. WCF мощнее и продвинутее.

handmadeFromRuгоспода мы ушли от темы топика, предлагаю закруглятся с лишним. хотя пятница ж)))
+1, офтоп сплошной
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536539
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuгоспода мы ушли от темы топика, предлагаю закруглятся с лишним. хотя пятница ж)))

пятница, и некого даже потроллить ))
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536546
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttв том, что гак это единственное преимущество. сомнительное если честно. так как нугет пакеты умеют часто обновляться, привнося кучу радостей в виде новых плюшек, повышенной скорости, усовершенстований, ну и весёлых багов не без этого , а фреймворк обновляется редко.
Да я не против нугет пакетов, я против сторонних колхозных грабель, если есть нативные решения. Пусть даже в нативе я больше строк кода напишу, но это будет родной механизм, о котором мне не нужно думать - он всегда работал и будет работать.

hVosttпо сути в родном селизаторе нет ни LINQ, ни асинка, и стандарты не держит, требуется какие-то форматеры подключать, которые ещё написать надо.
Ничего этого не надо. Вообще. Для сериализации и десериализации достаточно одной строчки кода. Всё. Остальное пользуешь дальше, исходя из возможностей .NET. И LINQ, и TPL, и прочего.

hVosttМСУНе знаю зачем он тебе. Пиши любой ISO и юзай на здоровье. Причем тут XML?
ну как при чём. взаимозаменяемость призрачная. попрошу в WCF дату и получу хрен с маслом, пока форматер не подрублю. костыли наше всё? ))
Ты не понял, я говорю о штатном сериалайзере + кастомная десериализация. В случае с WCF там всё само делается, ты вообще ничего не пишешь. Так всё в коробке, в том числе кодогенерация сервиса и прокси классов. Всё типизированно и четко.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536560
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВнятно сформулируй мысль - для какой задачи и что тебе надо?

если следовать за мыслью вендора, то асинхронный код должен юзать асинхронные методы. типо так можно построить эффективный автомат. если он будет вываливаться когда надо что-то серилизовать/десирилизовать, это нехорошо.

МСУПипец как сложно, просто неподъемная задача

ну у тебя на любой затык найдётся рецептик, но не об этом же речь. надо лепить сверху обвязку, в виде форматеров, чтобы получить ISO, или таски, чтобы получить асинк. так-то всё решаемо, да

МСУТы там терабайты json что-ли пилишь, признавайся? Тогда точно TPL нужен

да при чём тут я. ты сам можешь назвать хоть одну причину, почему майкрософт заюзала мартышкин json.net вместо тёплого лампового нативного?

МСУСерьезно, лично я бы не стал нигде применять web api, не вижу в нем смысла. REST? Дык WCF тоже так умеет. Роутинг? Тоже самое и там. Почитай мои рецепты на эту тему, если интересно. WCF мощнее и продвинутее.

спору нет, мощнее. но веб-апи гибче. проще. хостится без IIS. последнее вообче критично до немогу. прям щас работаю над проектом, где используется WebAPI для реализации АПИ, селфхост. мегаудобно, и кода кот наплакал
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536587
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДа я не против нугет пакетов, я против сторонних колхозных грабель, если есть нативные решения. Пусть даже в нативе я больше строк кода напишу, но это будет родной механизм, о котором мне не нужно думать - он всегда работал и будет работать.

есть и в этом истины зерно :)

МСУНичего этого не надо. Вообще.

так и знал, что так скажешь

МСУТы не понял, я говорю о штатном сериалайзере + кастомная десериализация. В случае с WCF там всё само делается, ты вообще ничего не пишешь. Так всё в коробке, в том числе кодогенерация сервиса и прокси классов. Всё типизированно и четко.

гибкое апи (под чужую среду) и версионность? селфхост? не?
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536695
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли следовать за мыслью вендора, то асинхронный код должен юзать асинхронные методы. типо так можно построить эффективный автомат. если он будет вываливаться когда надо что-то серилизовать/десирилизовать, это нехорошо.
Если следовать здравой логике, то асинхронный код нужен только там, где этого требует задача. Писать асинхронный код для асинхронного кода - кретинизм высшего пилотажа. Как часто ты через async парсишь json? Только честно.

hVosttну у тебя на любой затык найдётся рецептик, но не об этом же речь. надо лепить сверху обвязку, в виде форматеров, чтобы получить ISO, или таски, чтобы получить асинк. так-то всё решаемо, да
Рецептики сами по себе не рождаются - для их применения нужна конкретная задача и конкретны случай. Обвязок никаких лепить не нужно, нужно уметь пользоваться функционалом, а не тупо по-кодемански бегать за горящими рекламными лампочками. Я уважаю идею минималиста, то есть используешь только то, что требуется для задачи. Мне не нужен комбайн для того, чтобы вскопать квадратный метр грядки картошки. Понимаешь о чем речь?

hVosttМСУТы там терабайты json что-ли пилишь, признавайся? Тогда точно TPL нужен
да при чём тут я. ты сам можешь назвать хоть одну причину, почему майкрософт заюзала мартышкин json.net вместо тёплого лампового нативного?
Ну как это причем тут ты. Я же не со стенкой дискутирую. А почему майкрософт заюзала мартышкин труд - это вопрос к тем упоротым индусам, которые делают из темплейтов новогодние елки. Такие же люди типа тебя, что в гугле попалось самое простое, то и вкорячили. Почему в надежном мощном WCF нет этих пионерских штучек? Потому что это стабильная устоявшаяся технология. А эти все веб апи появляются как грибы по утру, еще только до конца не сформировавшаяся технология. Я не против неё, я против тех дилентантов, кто её пилит.

hVosttспору нет, мощнее. но веб-апи гибче. проще. хостится без IIS. последнее вообче критично до немогу. прям щас работаю над проектом, где используется WebAPI для реализации АПИ, селфхост. мегаудобно, и кода кот наплакал
Да чем оно гибче, я тебя умоляю. WCF тоже хостится без IIS и в селфхосте :) Уууу, хвост, сколько же ты не знаешь и сколько же тебе еще учить и учить... Это веб-сервисы asmx могли хоститься только в IIS ))

hVosttМСУДа я не против нугет пакетов, я против сторонних колхозных грабель, если есть нативные решения. Пусть даже в нативе я больше строк кода напишу, но это будет родной механизм, о котором мне не нужно думать - он всегда работал и будет работать.
есть и в этом истины зерно :)
Ну дык

hVosttтак и знал, что так скажешь
Видишь как тут всё прозрачно :)

hVosttгибкое апи (под чужую среду) и версионность? селфхост? не?
1. Да, гибкое апи (под чужую среду) было доступно еще со времен царя гороха (веб серфисов asmx). Даже фееричная 1С может кодогенерировать свои прокси по WS-ссылке. Знаешь, что такое WS-ссылка? Ладно... у кого я спрашиваю :)
2. Конечно, версионность есть.
3. Селфхост тоже есть.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536696
thresher8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУКлассический подход при разработке вин сервисов. Готов показать лучший способ?даад, тебе ж только костыли подвлстны.

кури, как ты выражаешься, Environment.UserInteractive, Debugger.IsAttached. как вариант можно добавить поддержку ключа "--interactive" и запусткатьбся интерактивно. или взять топшелф и не изобретать велосипед:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class Program
{
    public static void Main()
    {
        HostFactory.Run(x =>                                 //1
        {
            x.Service<TownCrier>(s =>                        //2
            {
               s.ConstructUsing(name=> new TownCrier());     //3
               s.WhenStarted(tc => tc.Start());              //4
               s.WhenStopped(tc => tc.Stop());               //5
            });
            x.RunAsLocalSystem();                            //6

            x.SetDescription("Sample Topshelf Host");        //7
            x.SetDisplayName("Stuff");                       //8
            x.SetServiceName("stuff");                       //9
        });                                                  //10
    }
}



МСУКакая там логика и что там тестировать? Три строчки кода для детского сада. Рассмешил.кодер-ковбой? хотя да, ошибочк, в таком детском говнокоде и правда нечего тестировать..

МСУТы просто еще не дорос до него, поэтому "лень" описывать. И да, таки ждем вариант лучше.
оке, для затравочки:

почему сам workitem рещает, с какой перодичностью ему исполняться? это должно приходить извне

ты надеюсь понимаешь, чтьо твой код там -- схинронный и аццкие проверки на IsBusy ваапще не к месу, поскольку пока выполняется Run() до них дело не дойдет?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
while (true)
{
    if (((TimeSpan)(DateTime.UtcNow.Subtract(lastRunTime))).TotalSeconds >= Seconds)
    {
        lastRunTime = DateTime.UtcNow;
    }

    var sleep = new TimeSpan(0, 0, Seconds);

    // Задача выполнилась
    if (!IsBusy)
    {
        Run(token);
        IsBusy = false;
    }
    // Задача еще не выполнилась за указанный интервал времени
    else
    {
        // Выделение дополнительного времени
        sleep = new TimeSpan(0, 0, 7);
    }

    Thread.Sleep(sleep);   
}



а если ты пукнешь, что в Run должен создаватьс отдельнй поток, в котором вся работа и должна происходить, то опять низачот по архитектурге, ибо работа с потоками не есть задача workitemа, там должна быть только логика работы, а не возня с потоками.

с while(true) ты красава, конечно. кондовый busy wait. почитай про wait handle'ы в перерывах межлду говнокодингом

а теперь как надо.

предполодим у нас есть N задач T1...TN. получается, что у нас есть к примеру следующее расписние:

через 5 мин надо выполнать задачу T2
через 12 мин после этого -- T7
через 1 мин после этого - T1
и т.д.

по сути -- бесконечное расписание, очень удобно рализуемое через yield

в отдельном потоке итерируешься по этому расписанию и через ThreadPool.RegisterWaitForSingleObject ждешь наступления момента, когда нужн будет выполнить очередную задачу (или опка не изменится расписание). в коллбэке создаешь новый таск или пхаешь в ThreadPool и в дамках.

и в том жк коллбэке можнро проверить, что изменилось расписание и соответственно все обработать
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536725
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thresher8кури, как ты выражаешься, Environment.UserInteractive, Debugger.IsAttached. как вариант можно добавить поддержку ключа "--interactive" и запусткатьбся интерактивно. или взять топшелф и не изобретать велосипед
Рассмешил. Твой высер просто шедеврален, те же яйца, приправленные флюентом. Ты действительно считаешь, что этот код лучше обычного штатного конфигурирования вин сервиса?

thresher8кодер-ковбой? хотя да, ошибочк, в таком детском говнокоде и правда нечего тестировать..
Косолапый кодер-бэтмен, покрывающий своей властью этот мир? Нет, просто упоротая мартышка с гранатой в руке в виде флюента. Точно.

thresher8почему сам workitem рещает, с какой перодичностью ему исполняться? это должно приходить извне
Я понимаю, что ты гавнокодер, но не да такой же степени. Ну ладно, если нет мозгов осилить код из 3 строчек, отвечу на вопрос. А кто запретил этому workitem решать, с какой периодичностью ему работать? Если хочешь брать это значение извне (база, конфиг), напиши в геттере Seconds обращение к конфигу. Вот тебе и ивзне.
Собственно, у меня так и работает. Это код сокращенный до максимума, даже реализации IWorkItem вышиты в код сервиса для простоты. Или ты ожидаешь от рецепта какого-то полного 100% решения под все задачи мира? Там просто идея.

thresher8ты надеюсь понимаешь, чтьо твой код там -- схинронный и аццкие проверки на IsBusy ваапще не к месу, поскольку пока выполняется Run() до них дело не дойдет?
1. Учи матчасть TPL и не говори глупостей, код выполняется в отдельных тредах.
2. IsBusy как-раз и нужен, чтобы понять, что задача завершена. В момент выполнения Run не нужно проверять IsBusy. Ты хотя бы логику понял для начала, чтобы сопли пускать.

thresher8а если ты пукнешь, что в Run должен создаватьс отдельнй поток, в котором вся работа и должна происходить, то опять низачот по архитектурге, ибо работа с потоками не есть задача workitemа, там должна быть только логика работы, а не возня с потоками.
И опять двойка. Ты код каким местом читал? Задницей? Оно и видно. Учи TPL - поток создается в самом сервисе через Task.Factory.StartNew и уже в его Action вызывается ExecuteTask(CancellationToken). IWorkItem ничего не знает о потоках, бестолочь.

thresher8с while(true) ты красава, конечно. кондовый busy wait. почитай про wait handle'ы в перерывах межлду говнокодингом
Не вижу проблем с while(true). Что именно смущает? Или просто мочу не удержать?

thresher8а теперь как надо.

предполодим у нас есть N задач T1...TN. получается, что у нас есть к примеру следующее расписние:

через 5 мин надо выполнать задачу T2
через 12 мин после этого -- T7
через 1 мин после этого - T1
и т.д.

по сути -- бесконечное расписание, очень удобно рализуемое через yield

в отдельном потоке итерируешься по этому расписанию и через ThreadPool.RegisterWaitForSingleObject ждешь наступления момента, когда нужн будет выполнить очередную задачу (или опка не изменится расписание). в коллбэке создаешь новый таск или пхаешь в ThreadPool и в дамках.

и в том жк коллбэке можнро проверить, что изменилось расписание и соответственно все обработать
Какой-то околопоносный гавно-алгоритм, лишенный самосознания. Давай готовый проект, а там обсудим твоё высер больного воображения.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536744
thresher8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУРассмешил. Твой высер просто шедеврален, те же яйца, приправленные флюентом. Ты действительно считаешь, что этот код лучше обычного штатного конфигурирования вин сервиса?да, лучше. потому что в топшелфе ты из коробки получеешь возможность работы из консоли, в качестве винсервиса, функционал по установке и деинсталляции, установки разных инстансов итд. ты такой же функционал говнокодить будешь неделю.

МСУА кто запретил этому workitem решать, с какой периодичностью ему работать? Если хочешь брать это значение извне (база, конфиг), напиши в геттере Seconds обращение к конфигу. Вот тебе и ивзне. потому что single responsibility. и что делать, если тебе один и тот же класс воркитема нужно запланировать на "каждые 13" минут и "каждые 3 часа"?

МСУ1. Учи матчасть TPL и не говори глупостей, код выполняется в отдельных тредах.
ты никак дитер болен или ваще упорот. покажи, где в этом куске отдельные треды:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
while (true)
{
    if (((TimeSpan)(DateTime.UtcNow.Subtract(lastRunTime))).TotalSeconds >= Seconds)
    {
        lastRunTime = DateTime.UtcNow;
    }

    var sleep = new TimeSpan(0, 0, Seconds);

    // Задача выполнилась
    if (!IsBusy)
    {
        Run(token);
        IsBusy = false;
    }
    // Задача еще не выполнилась за указанный интервал времени
    else
    {
        // Выделение дополнительного времени
        sleep = new TimeSpan(0, 0, 7);
    }

    Thread.Sleep(sleep);   
}



МСУНе вижу проблем с while(true). Что именно смущает? Или просто мочу не удержать?у тебя потоки (ценный ресурс между прочим) большую часть времени страдают х*итой и ничего не делают. это на деццких нагрузках не понять, тут просто придется поверить на слово.

МСУКакой-то околопоносный гавно-алгоритм, лишенный самосознания. Давай готовый проект, а там обсудим твоё высер больного воображения.ты хоть понял, что я говорю-то?
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536756
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕсли следовать здравой логике, то асинхронный код нужен только там, где этого требует задача. Писать асинхронный код для асинхронного кода - кретинизм высшего пилотажа. Как часто ты через async парсишь json? Только честно.

ты похоже не понимаешь о чём речь идёт вообще. есть параллельные вычисления, а есть асинхронный подход по принципу построения цепочки для работы конечного автомата. не обязательно код будет исполняться параллельно. суть в том, что грамотно распределять критичный ресурс в .NET -- потоки. почитай что происходит при переключении контекста, чего стоит выделить отдельный поток и управлять им. для решения этой проблемы МС придумала (точнее она ничего не придумала, а реализовала) специальный механизм, позволяющий максимально эффективно использовать пул рабочих потоков. поэтому await это совершенно не тоже самое, что запустить задачу и передать ей делегат, который исполнится по завершению.

именно поэтому все новые интерфейсы включая тот же EF обзаводятся дополнительными методами *Async(). или думаешь, просто у кого-то где-то зачесалось и хрен знает почему это стало вдруг важным?

МСУМне не нужен комбайн для того, чтобы вскопать квадратный метр грядки картошки. Понимаешь о чем речь?

и в тоже время ты предпочитаешь рассекать на комбайнах, потому что это круто :) (пас в сторону WCF)

МСУДа чем оно гибче, я тебя умоляю. WCF тоже хостится без IIS и в селфхосте

тогда я не понимаю какое конкретно различие ты проводишь между WebAPI и WCF. чем тебе не угодил веб апи, но угодил ВЦФ.

МСУЗнаешь, что такое WS-ссылка?

конечно знаю. но это архитектура построенная на декларативных интерфейсах. в случае веб-апи не нужно ничего генерить или получать по ссылке. если мне нужна только одна REST-функция из всего многообразия, я дёрну только её, а о других мне ничего знать не надо и ничего генерить не нужно. это значит, я могу получить данные хоть из холодильника самым простейшим способом. этот способ однозначно завоевал популярность в очень короткие сроки. да так, что сама МС озаботилась этой проблемой и побежала делать веб-апи как можно быстрей. а зачем оно ей надо было? ведь было крутое WCF и никто не жаловался

в конце концов, вот этот подход морально устарел и подходит только для неповоротливого етерпрайза:

Определения = Новый WSОпределения(" http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL");
Прокси = Новый WSПрокси(Определения, " http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536768
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thresher8МСУРассмешил. Твой высер просто шедеврален, те же яйца, приправленные флюентом. Ты действительно считаешь, что этот код лучше обычного штатного конфигурирования вин сервиса?да, лучше. потому что в топшелфе ты из коробки получеешь возможность работы из консоли, в качестве винсервиса, функционал по установке и деинсталляции, установки разных инстансов итд. ты такой же функционал говнокодить будешь неделю.
Ты упал, что-ли? В обычном вин сервисе точно так же можно "работать" из консоли, по сути это такая же консоль. Установка и деинсталляция - это ты про "InstallUtil MyService.exe"? Даже не смешно - иди расскажи эти бредни своей бабушке
Что там говнокодить, уже всё есть в коробке. Зачем мне разные инстансы, ты упорот?

thresher8МСУА кто запретил этому workitem решать, с какой периодичностью ему работать? Если хочешь брать это значение извне (база, конфиг), напиши в геттере Seconds обращение к конфигу. Вот тебе и ивзне. потому что single responsibility. и что делать, если тебе один и тот же класс воркитема нужно запланировать на "каждые 13" минут и "каждые 3 часа"?
Причем тут single responsibility? Если мне нужно один воркайтем запланировать на "каждые 13" минут и "каждые 3 часа", я либо заюзаю дубликат с новым временем (быстро) или сделаю новый WorkItemBase со своей логикой (дольше). Пока такого не требовалось. Нужно будет, там делов на 10 минут. В WorkItemBase и нужен для замороченных планирований заданий. А IWorkItem - это уже то, с чем работает сам сервис. Не доперло?

thresher8МСУ1. Учи матчасть TPL и не говори глупостей, код выполняется в отдельных тредах.
ты никак дитер болен или ваще упорот. покажи, где в этом куске отдельные треды:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
while (true)
{
    if (((TimeSpan)(DateTime.UtcNow.Subtract(lastRunTime))).TotalSeconds >= Seconds)
    {
        lastRunTime = DateTime.UtcNow;
    }

    var sleep = new TimeSpan(0, 0, Seconds);

    // Задача выполнилась
    if (!IsBusy)
    {
        Run(token);
        IsBusy = false;
    }
    // Задача еще не выполнилась за указанный интервал времени
    else
    {
        // Выделение дополнительного времени
        sleep = new TimeSpan(0, 0, 7);
    }

    Thread.Sleep(sleep);   
}



Ты упорот? Это код самого воркайтема, он ничего не должен знать про отдельные треды. Отдельные треды в методе Execute<T> самого сервиса.

thresher8МСУНе вижу проблем с while(true). Что именно смущает? Или просто мочу не удержать?у тебя потоки (ценный ресурс между прочим) большую часть времени страдают х*итой и ничего не делают. это на деццких нагрузках не понять, тут просто придется поверить на слово
Тут вопрос не про нагрузки, а про количество задач.

thresher8МСУКакой-то околопоносный гавно-алгоритм, лишенный самосознания. Давай готовый проект, а там обсудим твоё высер больного воображения.ты хоть понял, что я говорю-то?
Понял. Ты высрал какой-то кал и пытаешься его втереть мне в мозг. Зачем?
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536778
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttименно поэтому все новые интерфейсы включая тот же EF обзаводятся дополнительными методами *Async(). или думаешь, просто у кого-то где-то зачесалось и хрен знает почему это стало вдруг важным?
Жжешь :) Ты предлагаешь на каждый парсинг или конвертацию писать свой асинк?

Код: c#
1.
2.
Encoding.Unicode.GetBytes("123")
Encoding.Unicode.GetBytesAsync("123")



hVostt, что ты там куришь?

hVosttи в тоже время ты предпочитаешь рассекать на комбайнах, потому что это круто :) (пас в сторону WCF)
Да, пока я не вижу реальной альтернативы. Веб апи они до сих пор там пилят, постоянно вбрасывают что-то новое, что-то тестируют и мутят. Зачем мне этот зоопарк? Когда устоится, тогда и будем думать. Да и что думать, тоже непонятно. Взяли и тупо сделали урезанного клона. Накуя?

hVosttтогда я не понимаю какое конкретно различие ты проводишь между WebAPI и WCF. чем тебе не угодил веб апи, но угодил ВЦФ.
Прочитай про байдинги WCF, про кодогенерацию прокси, про гибкие настройки коих тьма тьмущая, про dual режим и много чего.

hVosttведь было крутое WCF и никто не жаловался
Мдя... ))
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38536895
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, я вам тут не помешаю?

У меня в первом приближении получилась такая вещь (подвешено на 2 таймера):

Оно вообще в таком раскладе имеет право на жизнь? Вроде работает...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
        private void refreshactiveconnections_Tick(object sender, EventArgs e)
        {
            List<ActiveConnection> tmpactiveconnections = new List<ActiveConnection>();
            foreach (DataRow dr in GetData.GetConnections().Rows)
            {
                ActiveConnection ac = new ActiveConnection();
                ac.dbname = dr["dbname"].ToString();
                ac.wsaddress = dr["wsaddress"].ToString();
                ac.wslogin = dr["wslogin"].ToString();
                ac.wspassword = dr["wspassword"].ToString();
                ac.dbname = dr["dbname"].ToString();
                ac.supplierid = (int)dr["supplierid"];
                ac.id = (Guid)dr["id"];
                ac.isbusy = false;
                tmpactiveconnections.Add(ac);

                if (!activeconnections.Any(a => a.id == ac.id))
                {
                    activeconnections.Add(ac);
                }
            }
            activeconnections.RemoveAll(x => !tmpactiveconnections.Any(y => y.id == x.id));
        }

        private void refreshquotas_Tick(object sender, EventArgs e)
        {
            foreach (ActiveConnection ac in activeconnections)
            {
                if (!ac.isbusy)
                {
                    BackgroundWorker bw = new BackgroundWorker();
                    bw.WorkerReportsProgress = true;
                    bw.DoWork += new DoWorkEventHandler(delegate(object o, DoWorkEventArgs args)
                    {
                        ac.isbusy = true;
                        QuotasRetriever.GetQuotas(ac.wspassword, ac.wslogin, ac.wspassword, ac.id);

                    });
                    bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
                    delegate(object o, RunWorkerCompletedEventArgs args)
                    {
                        ac.isbusy = false;
                    });
                    bw.RunWorkerAsync();
                }
            }
        }
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38537105
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЖжешь :) Ты предлагаешь на каждый парсинг или конвертацию писать свой асинк?

Код: c#
1.
2.
Encoding.Unicode.GetBytes("123")
Encoding.Unicode.GetBytesAsync("123")




hVostt, что ты там куришь?

ты понял о чём я

МСУВзяли и тупо сделали урезанного клона. Накуя?

даже рядом не клон. вообще другое. для других задач. просто тебе нужен комбаин, как не крути )) ты комбайнёр!

МСУПрочитай про байдинги WCF, про кодогенерацию прокси, про гибкие настройки коих тьма тьмущая, про dual режим и много чего.

да знаю, крутая вещь, крутая... но где-то это всё нужно, а где-то нет.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38537144
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttты понял о чём я
Нифига я не понял. Ты не можешь до сих пор сформулировать мысль, нафига мне эта байда? :)

Код: c#
1.
2.
3.
string > new JavaScriptSerializer().Serialize(new Employee { EmployeeId = 123, Name = "Test" }); 
void > new JavaScriptSerializer().SerializeAsync(new Employee { EmployeeId = 123, Name = "Test" }); 
Task<string> > new JavaScriptSerializer().SerializeTaskAsync(new Employee { EmployeeId = 123, Name = "Test" }); 



Просто, чтобы было? В топку. Тем более при надобности это и так можно распараллелить прямыми руками во внешнем вызове. Только кому это нах надо.

hVosttдаже рядом не клон. вообще другое. для других задач. просто тебе нужен комбаин, как не крути )) ты комбайнёр!
Надо, для других задач, нужно / не нужно, комбайн... Ты там код конкретный пишешь или коллекционируешь фичи библиотеки?

hVosttда знаю, крутая вещь, крутая... но где-то это всё нужно, а где-то нет.
Ну на WCF не экономят. Поднял его в отдельной песочнице и не хай живёт. WCF сила.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38537161
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПросто, чтобы было? В топку. Тем более при надобности это и так можно распараллелить прямыми руками во внешнем вызове. Только кому это нах надо.

вот тут всё што надо по этому поводу сказано http://james.newtonking.com/archive/2012/03/20/json-net-4-5-release-1-iso-dates-async-metro-build

кроме того, если позырить в исходниках, там тупо обёртrи с Task.Factory.StartNew(). но это удобно для написания под полностью асинк платформу, типа WebAPI или WindowsStore.

МСУНадо, для других задач, нужно / не нужно, комбайн... Ты там код конкретный пишешь или коллекционируешь фичи библиотеки?

стараюсь выбирать оптимальное решение, а не универсальное =) ну а вообще я люблю читать чужой код, смотреть как и что люди делают и учиться на чужих ошибках, а не на своих.

МСУНу на WCF не экономят. Поднял его в отдельной песочнице и не хай живёт. WCF сила.

гг по счастью МС живёт за счёт ентерпрайза, так что WCF-у ещё жить и жить. а так бы и пусть развиваются обе технологии. только не думаю, что стоит считать вебапи урезанной версией WCF. разные решения так то.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38537179
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУПросто, чтобы было? В топку. Тем более при надобности это и так можно распараллелить прямыми руками во внешнем вызове. Только кому это нах надо.

вот тут всё што надо по этому поводу сказано http://james.newtonking.com/archive/2012/03/20/json-net-4-5-release-1-iso-dates-async-metro-build

кроме того, если позырить в исходниках, там тупо обёртrи с Task.Factory.StartNew(). но это удобно для написания под полностью асинк платформу, типа WebAPI или WindowsStore.
Я же тебе уже показал, как на 2 щелчка сделать асинк. В чем проблема? Мало того, ты это 100% не используешь (не притворяйся), а просто рогом уперся. Так еще ты мне тут гавнокод навязываешь. Зачем?

hVosttстараюсь выбирать оптимальное решение, а не универсальное =) ну а вообще я люблю читать чужой код, смотреть как и что люди делают и учиться на чужих ошибках, а не на своих.
Ну так читай код и учись. Но зачем тянуть всякое гавно в рабочий проект? :)

hVosttгг по счастью МС живёт за счёт ентерпрайза, так что WCF-у ещё жить и жить. а так бы и пусть развиваются обе технологии. только не думаю, что стоит считать вебапи урезанной версией WCF. разные решения так то.
У веб апи есть одно вкусное расширение - одата. Если бы ты был в теме, ты бы сразу козырнул этой фишкой. Да, WCF не поддерживает одата, к сожалению. Но одата еще сыро и уныло. Будем ждать.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38537191
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЯ же тебе уже показал, как на 2 щелчка сделать асинк. В чем проблема? Мало того, ты это 100% не используешь (не притворяйся), а просто рогом уперся. Так еще ты мне тут гавнокод навязываешь. Зачем?

кто навязывает? я навязываю? брось! просто там 2 щелчка, тут 2 щелчка, так и получается портянка ненужной обвязки, которой при иных обстоятельствах просто бы не потребовалась.

МСУНу так читай код и учись. Но зачем тянуть всякое гавно в рабочий проект? :)

а что делать... истиный программер должен быть достаточно ленив, чтобы не писать код, который уже написан кем-то другим, пусть даже и не вендором

МСУУ веб апи есть одно вкусное расширение - одата. Если бы ты был в теме, ты бы сразу козырнул этой фишкой.

сырая и не полная. тем более это не фишка самого вебапи, это его расширение.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38537260
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttкто навязывает? я навязываю? брось! просто там 2 щелчка, тут 2 щелчка, так и получается портянка ненужной обвязки, которой при иных обстоятельствах просто бы не потребовалась.
Зачем мне щелчки по поделке от пионера? Я лучше пощелкаю натив :)

hVosttа что делать... истиный программер должен быть достаточно ленив, чтобы не писать код, который уже написан кем-то другим, пусть даже и не вендором
Согласен про ленность. Но всё и так уже написано и левотня мне не нужна.

hVosttсырая и не полная. тем более это не фишка самого вебапи, это его расширение.
Вообщем, пока в топку. Потом будет что-то вменяемое, посмотрим, как это можно будет есть.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38537830
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вы блин мужики даете. 3 страницы постов, а по теме НОЛЬ.

Предлагаю убить тему.
...
Рейтинг: 0 / 0
Как опрашивать веб сервис по расписанию?
    #38538896
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хвост, handmadeFromRu
Друзья, вообщем, ваша правда :) Кварц - счастье. Посему был выложен честный рецептик. Долго ипался и изучал мукулатуру, как грамотно обвязать всю конфигурацию в нормальном конфиге (а не в унылом флюенте).

P.S. ТС, сорри за офф ))
...
Рейтинг: 0 / 0
72 сообщений из 72, показаны все 3 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как опрашивать веб сервис по расписанию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]