Опрос не "неправильно" как таков.
Много зависит от того, как это реализовано и для какой цель. Если Вы действительно заботитесь о immedatly уведомлении об изменении, это очень эффективно. Ваш код находится в жестком цикле, постоянно опрашивая (выяснение) у ресурса, изменилось ли это / обновленный. Это означает, что Вы уведомляетесь, как только можно быть то, что что-то отличается. Но, Ваш код не делает ничего больше и существуют издержки с точки зрения многих много вызовов к рассматриваемому объекту.
, Если Вы менее обеспокоены в немедленном оповещении, что можно увеличить интервал между опросами, и это может также работать хорошо, но выбор корректного интервала может быть трудным. Слишком долго и Вы могли бы пропустить критические изменения, слишком короткие, и Вы вернулись к проблемам первого метода.
Альтернативы, такие как прерывания или сообщения, и т.д. могут обеспечить лучший компромисс в этих ситуациях. Вы уведомляетесь относительно изменения, как только практически возможно, но эта задержка не что-то, чем Вы управляете, она зависит от компонента tself быть своевременным о передаче изменений в состоянии.
, Что является "неправильным" с опросом?
, Но...
Как со всем, это зависит. Большая система высокой транзакции я продолжаю работать в настоящее время, использует уведомление с SQL (DLL, загруженный в SQL Server, который называет расширенный SP от, включает определенные таблицы. DLL тогда уведомляет другие приложения, что существует работа, чтобы сделать).
Однако мы переезжаем от этого, потому что мы можем практически гарантировать, что будет работа для делания непрерывно. Поэтому, чтобы уменьшить сложность и на самом деле ускорить вещи немного, приложения обработают свою работу и сразу опросят DB снова относительно новой работы. Не должен там быть ни один, что это попробует еще раз после маленького интервала.
Это, кажется, работает более быстрое и намного более просто. Однако другая часть приложения, которое является большим количеством пониженной громкости, не извлекает выгоду из увеличения скорости с помощью этого метода - если интервал опроса не является очень маленьким, который приводит к проблемам производительности. Таким образом, мы оставляем его, как для этой части. Поэтому это - хорошая вещь, когда это является соответствующим, но общие потребности отличаются.
Я соглашаюсь, что предотвращение опроса является хорошей политикой. Однако В отношении сообщение Robert , я сказал бы, что простота опроса может сделать его лучшим подходом в экземплярах, где проблемами, упомянутыми здесь, не является такая большая проблема, поскольку асинхронный подход часто значительно менее читаем и более труден поддержать, не говоря уже об ошибках, которые могут закрасться к его реализации.
Это не отвечает на Ваш вопрос. Но реалистично, особенно в этот "день и возраст" то, где циклы процессора являются дешевыми, и пропускная способность, является большим, опрос является на самом деле довольно хорошим решением для некоторых задач.
преимущества:
Я вижу много ответов здесь, но я думаю, что самый простой ответ является ответом это сам:
, поскольку (обычно) намного более просто кодировать цикл опроса, чем сделать инфраструктуру для обратных вызовов.
Затем Вы получаете более простой код, который, если это оказывается узким местом позже, может быть понятным и перепроектировал/осуществил рефакторинг во что-то еще.
Вещь об опросе состоит в том, что он работает! Его надежное и простое для реализации.
затраты на объединение могут быть высокими - при сканировании базы данных для изменений каждую минуту, когда существует только два изменения в день, Вы используете много ресурсов для очень маленького результата.
Однако проблема с любым уведомлением technoligy состоит в том, что они намного более сложны для реализации и мало того, что они могут быть ненадежными, но и (и это - большое, НО), Вы не можете легко сказать, когда они не работают.
Поэтому, если Вы действительно отбрасываете опрос для некоторого другого technoligy, удостоверяются, что это применимо средними программистами и крайнее надежный.
Я иногда использую опрос для определенных ситуаций (например, в игре, я опросил бы клавиатуру, указывает каждый кадр), но никогда в цикле, который ТОЛЬКО делает опрос, скорее я сделал бы опрос как проверку (имеет ресурс X измененный? Если да, сделайте что-то, иначе обработайте что-то еще и проверьте снова позже). Вообще говоря, хотя, я стараюсь не опрашивать в пользу асинхронных уведомлений.
причины, являющиеся этим, я не трачу ресурсы (процессорное время, безотносительно) ожидающий, что что-то произойдет (особенно, если те ресурсы могли бы ускорить ту вещь, происходящую во-первых). Случаи, где я использую опрос, я не сижу сложа руки, ожидая, я использую ресурсы в другом месте, таким образом, это - надуманный вопрос (для меня, по крайней мере).
Его простое - опрос плох - неэффективный, трата ресурсов, и т.д. всегда существует некоторая форма возможности соединения на месте, которая контролирует для какого-то события так или иначе, даже если 'опрос' не выбран.
Итак, почему идут дополнительная миля и помещают дополнительный опрос на месте.
Обратные вызовы являются наилучшим вариантом - просто должен волноваться о, согласуются обратный вызов в Вашем текущем процессе. Базовый, там опрашивает продолжение видеть, что соединение все еще на месте во всяком случае.
, Если Вы продолжаете звонить/звонить своей девушке и она никогда не ответы, тогда почему продолжают звонить? Просто оставьте сообщение и ожидайте, пока она не 'перезвонит';)
Я думаю, что люди должны понять, что в большинстве случаев, на некотором уровне там опрашивает быть сделанным, даже в событии или управляемых прерыванием ситуациях, но Вы изолируетесь от фактического кода, делающего опрос. Действительно, это - самая желательная ситуация... изолируют себя от implementaion, и просто имеют дело с событием. Даже если необходимо реализовать опрос себя, запишите код так, чтобы это было изолировано, и с результатами имеют дело независимо от реализации.
Опрос легко сделать, очень легкий, его столь же легкий как любой процессуальный кодекс. Не опрос означает ввод мира Асинхронного программирования которое не является как до полусмерти легко, и могло бы даже стать сложным время от времени.
И как со всем в любой системе, путь меньшего сопротивления обычно чаще всего берется, таким образом, всегда будут программисты, использующие опрос, даже великих программистов, потому что иногда нет никакой потребности усложнить вещи с асинхронными шаблонами.
я для каждый всегда процветает, чтобы не опрашивать, но иногда я делаю опрос так или иначе, особенно когда фактические усиления асинхронной обработки не являются настолько большими, такой, действуя против некоторых маленьких локальных данных (конечно, Вы становитесь немного быстрее, но пользователи не заметят различия в случае как это). Таким образом, существует комната для обеих методологий, по моему скромному мнению.
Примеры вещей, которые используют опрос в этот день и возраст:
Иногда просто нет никакого способа получить асинхронные уведомления: например, для замены RSS системой нажатия сервер должен был бы знать обо всех, кто читает канал, и имейте способ связаться с ними. Это - список рассылки - точно одна из вещей, которых RSS был разработан для предотвращения. Следовательно то, что большинством моих примеров являются сетевые приложения, где это, скорее всего, будет проблемой.
Другие времена, опрос является достаточно дешевым для работы даже там, где существует асинхронное уведомление.
Для локального файла, уведомление об изменениях, вероятно, будет более оптимальным вариантом в принципе. Например, Вы, сила (могла) бы предотвратить диск, вращающийся вниз, если Вы навсегда вводите его по абсолютному адресу, хотя с другой стороны ОС могла бы кэшироваться. И если Вы опрашиваете каждую секунду на файле, который только изменяется раз в час, Вы могли бы напрасно занимать 0,001% (или безотносительно) вычислительной мощности Вашей машины. Это звучит крошечным, но что происходит, когда существует 100 000 файлов, необходимо ли опросить?
На практике, тем не менее, издержки, вероятно, будут незначительны, какой бы ни Вы делаете, будучи сложно приходить в восторг от изменяющегося кода, который в настоящее время работает. Лучшая вещь состоит в том, чтобы не упустить определенные проблемы, что опрашивающие причины в системе, которую Вы хотите изменить - при нахождении кого-либо тогда повышают тех вместо того, чтобы пытаться привести общий аргумент против всего опроса. Если Вы не находите никого, то Вы не можете зафиксировать то, что не повреждается...
Существует две причины, почему опрос мог считать плохим принцип.
Это - трата ресурсов. Вероятно, что Вы проверите для разнообразия, в то время как никакое изменение не произошло. Циклы/пропускная способность ЦП тратят на это действие, не приводит к изменению и таким образом, возможно, был лучше, тратят на что-то еще.
Опрос сделан на определенном интервале. Это означает, что Вы, won’t знают, что изменение происходило до следующего раза, когда интервал передал.
было бы лучше быть уведомленным относительно изменений. Этот путь you’re не опрашивающий относительно изменений, что haven’t произошел и you’ll, знает об изменении, как только Вы получаете уведомление.
Если Вы опрашиваете относительно изменений в файле, то я соглашаюсь, что необходимо использовать уведомления о файловой системе, которые доступны для того, когда это происходит, которые доступны в большинстве операционных систем теперь.
В базе данных Вы могли включить, обновляют/вставляют и затем называют Ваш внешний код, чтобы сделать что-то. Однако могло бы просто случиться так, что у Вас нет требования для мгновенных действий. Например, Вы, возможно, только должны были бы получить данные из Базы данных к Базе данных B в различной сети в течение 15 минут. База данных B не могла бы быть доступной от Базы данных A, таким образом, Вы заканчиваете тем, что делали опрос от, или как автономная программа, работающая рядом, База данных B.
кроме того, Опрос является очень простой вещью программировать. Это - часто реализация первого шага, сделанная, когда ограничения времени коротки, и потому что это работает достаточно хорошо, это остается.
I gave my client a little manual on how to make links including a screenshot of the menu(s). Then it becomes quite easy! I wouldn't know of any extensions for that, then again I don't know all joomla extensions ;)
--121 --- 4044063--Опрос клиента не масштабируется так же, как уведомления сервера. Представьте себе, что тысячи клиентов спрашивают у сервера «какие-нибудь новые данные?» каждые 5 секунд. Теперь представьте, что сервер ведет список клиентов для уведомления о новых данных. Уведомление сервера масштабируется лучше.
Here is a good summary of relative merits of push and pull: https://stpeter.im/index.php/2007/12/14/push-and-pull-in-application-architectures/
I wish I could summarize it further into this answer but some things are best left unabridged.