Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
С наступающим, коллеги! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 02:37 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
МСУС наступающим, коллеги! ...наступившим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 02:38 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
МСУiscrafm, почему не используете кеширование + ленивая загрузка (она и так уже впринципе есть)? С Новым Годом! Ленивая загрузка по умолчанию не используется чтобы не грузить информацию, которая может не понадобиться вообще. Дело в том, что значения "лукапов", о которых был вопрос, загружаются из БД уже в основной записи. Сами списки - по требованию. Предлагаемая модель проектирования приложений во многих случаях, за счет механизмов автозаполнений, исключает необходимость в таких требованиях. Т.е. только если пользователя по каким-то причинам не удовлетворит то, что заполнил за него разработик, то тогда он конечно "предъявит требование" и нужный список подгрузится с сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2011, 12:35 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
С Новым Годом! iscrafmЛенивая загрузка по умолчанию не используется чтобы не грузить информацию, которая может не понадобиться вообще. Суть lazy loading заключается как-раз в том, "чтобы не грузить информацию, которая может не понадобиться вообще" :) P.S. Про кешинг ни слова... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2011, 19:28 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
МСУС Новым Годом! iscrafmЛенивая загрузка по умолчанию не используется чтобы не грузить информацию, которая может не понадобиться вообще. Суть lazy loading заключается как-раз в том, "чтобы не грузить информацию, которая может не понадобиться вообще" :) да, извините. Перечитал предложение, поправил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2011, 22:50 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
iscrafm, Что означает "подгружается в основной записи"? основная запись -вью? можно ли в гриде редактировать? как описывается само понятие "лукап" в метаданных? насколько глубоко лукапность простирается? кешируются ли лукапы для использования в разных формах с одинаковыми требованиями лукапам? ну поговори немного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2011, 22:57 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
может ли быть лукапом динамический union? если да то как автозаполнение срабатывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2011, 23:03 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
в методах обработчиков (вну в расчетных задачах) используются стандартные функции загрузки деталь записей предусмотренных для юзер интерфейса или СКЛ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2011, 23:06 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
iПутаница в показаниях, полное отсутствие профтерминологии. Кто кого заполняет и удовлетворяет понять невозможно ошибка в предложении исправлена, ты просто не дочитала. Скажи, какая у тебя профтерминология - переведу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 11:44 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
iscrafmда, извините. Перечитал предложение, поправил. Ок. iscrafm Во многих случаях поможет кеширование. Приведу копипаст из Application Architecture Guide: КэшированиеКэширование может улучшить производительность и время отклика приложения. Однако неправильно спроектированная стратегия кэширования может негативно сказаться на этих показателях. Кэширование должно применяться для оптимизации поиска используемых данных, сокращения количества обращений к сети и предотвращения ненужной или повторной обработки. При реализации кэширования необходимо принять решение о том, когда загружать кэшированные данные, а также как и когда удалять устаревшие кэшированные данные. Предварительная асинхронная загрузка в кэш часто используемых данных или применение пакетной обработки помогут избежать задержек на стороне клиента . При проектировании стратегии кэширования руководствуйтесь следующими рекомендациями: Выберите подходящее размещение для кэша. Если приложение развертывается на Веб-ферме, избегайте применения локальных кэшей, для которых необходима синхронизация. В этом случае рекомендуется использовать систему управления транзакционными ресурсами, такую как Microsoft® SQL Server®, или продукт, поддерживающий распределенное кэширование, такой как технология Memcached производства компании Danga Interactive или механизм кэширования Velocity от компании Microsoft (больше информации по этому вопросу можно найти в разделе Дополнительные источники в конце данной главы). При работе с кэшем в памяти применяйте кэширование данных в готовом к использованию виде. Например, кэшируйте не просто необработанные данные базы данных, а используйте специализированные объекты необходимые приложению. Реализуйте кэширование в памяти с помощью Microsoft Velocity. Не кэшируйте часто изменяющиеся данные и незашифрованные конфиденциальные данные. Не полагайтесь на кэшированные данные, они могут быть удалены. Реализуйте механизм обработки сбоев кэша, возможно, путем повторной загрузки элемента из источника. Будьте особенно осторожны при работе с кэшем из нескольких потоков. В случае использования множества потоков для обеспечения непротиворечивости данных убедитесь, что любой доступ к кэшу является потокобезопасным. Хороший движок - Caching Application Block (щас уже есть более свежий - Microsoft Enterprise Library 5.0 ). Ну это что касается .NET. Для дельфей, думаю, тоже есть какие вещи. На крайний случай, можно самому написать простенький движок кешей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 12:07 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
Валерий, думаю, тоже будет интересно почитать - Caching Architecture Guide for .NET Framework Applications ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 12:27 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
iscrafm, вся архитектурная нить, о которой я спрашивал Вас, находится ниже. Руководствуясь данным манускриптом (из того же Application Architecture Guide), нужно выбрать свою стратегию кеширования: Этапы проектирования стратегии кэшированияКэширование может играть решающую роль в повышении производительности. Исключительно важно спроектировать соответствующую стратегию кэширования, потому что неправильный выбор методик может негативно сказаться на производительности. Рассматриваемые далее этапы проектирования помогут выработать правильную стратегию кэширования для приложения. Шаг 1 – Выбор данных, подлежащих кэшированию В ходе проектирования приложения важно определиться с тем, какие данные годятся для кэширования. Для каждого слоя приложения создайте список данных, которые могут быть кэшированы. Рассмотрите возможность кэширования следующих типов данных: Общие данные приложения. Рассмотрите возможность кэширования статических данных, которые используются всеми пользователям приложения. Примерами таких данных являются списки продуктов и сведения о продуктах. Относительно статические данные. Рассмотрите возможность кэширования полностью статических данных или данных, которые меняются нечасто, например, константы или фиксированные значения, считываемые из конфигурационного файла или базы данных. Относительно статические Веб-страницы. Рассмотрите возможность кэширования вывода Веб-страниц или частей Веб-страниц, которые меняются нечасто. Параметры хранимых процедур и результаты запросов. Рассмотрите возможность кэширования часто используемых параметров и результатов запросов. Шаг 2 – Выбор места кэширования данных При принятии решения о месте кэширования данных обычно необходимо рассмотреть два вопроса: физическое размещение кэша и его логическое размещение. Физически кэш размещается либо в памяти, либо на диске в файлах или базе данных. Кэширование в памяти может осуществляться с помощью механизма кэширования ASP.NET, Enterprise Library Caching Application Block или механизма распределенного кэширования в памяти, такого как проект Microsoft под кодовым названием Velocity или технология Memcached от компании Danga Interactive . Размещайте кэш в памяти, если приложение часто использует данные; если кэшированные данные относительно часто меняются, и их приходится довольно часто запрашивать повторно; и если объем кэшированных данных относительно мал. Размещайте кэш в системе или базе данных, если использовать данные из хранилища кэша более эффективно по сравнению с их запросом из исходного хранилища; если кэшированные данные относительно редко меняются; и если сервисы для повторного запроса данных не всегда доступны. Подход с хранением кэша на диске также идеален при большом объеме кэшированных данных, или если кэшированные данные должны сохраняться при перезапусках процесса или компьютера. Логическое размещение кэша – это его место в логике приложения. Важно кэшировать данные в максимальной близости к месту их использования. Это обеспечит снижение объема необходимой обработки, сокращение количества обращений к сети и времени отклика приложения и повышение производительности. Принимая решение о логическом размещении кэша данных, руководствуйтесь следующими рекомендациями: Кэшируйте на клиенте данные, характерные для страницы или пользователя; данные, не содержащие конфиденциальных сведений; и данные небольшого объема. Кэшируйте на прокси-сервере или Веб-сервере (для Веб-приложений) относительно статические страницы, часто запрашиваемые клиентами; страницы, обновляемые с известной периодичностью; или результаты, возвращаемые Веб-сервисами. Также используйте этот подход для страниц, которые могут формировать разный вывод в зависимости от параметров HTTP, и эти параметры меняются нечасто. Это особенно полезно при небольшом диапазоне выходных данных. Кэшируйте в слое представления относительно статический вывод страниц; небольшие объемы данных, касающиеся предпочтений пользователей для небольших групп пользователей; или если имеются элементы UI, создание которых достаточно ресурсоемко. Также используйте этот подход для ресурсоемких данных, отображаемых пользователю, например, списков продуктов или сведений о продуктах Кэшируйте данные в бизнес-слое, если необходимо сохранять состояние сервиса, бизнес-процесса или рабочего процесса; или если для обработки запросов от уровня представления требуются относительно статические данные, создание которых достаточно ресурсоемко. Кэшируйте данные в слое доступа к данным при наличии коллекции входных параметров для часто вызываемых хранимых процедур или небольших объемов необработанных данных, возвращаемых часто выполняемыми запросами. Рассмотрите варианты кэширования для типизированных наборов данных в слое данных. Кэшируйте в отдельную таблицу базы данных любые данные, для получения которых требуется выполнение достаточно сложного и ресурсоемкого запроса. Этот вариант кэширования поможет также обеспечить повышение производительности, если требуется кэшировать очень большие объемы данных при реализации механизма разделения на страницы. Шаг 3 – Определение формата кэширования данных Теперь, определившись с данными, которые необходимо кэшировать, и приняв решение о месторасположении кэша, важно выбрать формат для кэшированных данных. При кэшировании храните данные в формате, оптимизированном для предполагаемого использования и не требующем дополнительной или повторной обработки или преобразования. Этого правила следует придерживаться, если данные кэшируются в памяти, если кэш не будет использоваться совместно разными процессами или компьютерами, если нет необходимости перемещать кэшированные данные в разные участки памяти, и если приходится кэшировать необработанные данные, такие как объекты DataSet, DataTable и Веб-страницы. Если необходимо хранить или передавать кэшированные данные, рассмотрите возможность их сериализации. Сериализация кэшированных данных – хороший выбор для кэширования данных на диск или для хранения состояния сеансов на отдельном сервере или базе данных SQL Server. Это также хороший подход, если необходимо обеспечить совместное использование кэша разными процессами или компьютерами, перемещать кэшированные данные в разные участки памяти или кэшировать собственные объекты. Сериализация может осуществляться с помощью механизма сериализации XML или механизма бинарной сериализации. Механизм сериализации XML подойдет, если определяющим фактором является возможность взаимодействия. Если основной упор делается на производительность, используйте механизм бинарной сериализации. Шаг 4 – Выработка подходящей стратегии управления кэшем Необходимо определить соответствующую политику срока действия кэша и сброса кэша. И удаление по истечении срока действия, и сброс данных являются стратегиями удаления кэшированных данных из хранилища кэша. Отличаются они тем, что при сбросе могут удаляться действительные данные для высвобождения памяти под более часто используемые элементы, тогда как удаление данных по истечении срока их действия означает, что эти данные стали недействительными. Проверьте возможности используемой базовой системы кэширования, не все реализации кэша предлагают все возможные варианты. Стратегия срока действия кэша должна обеспечивать, чтобы в кэше находились только действительные данные и элементы. Политика срока действия может использовать как срок действия по времени, так и срок действия по уведомлению: При использовании политики срока действия по времени кэшированные данные устаревают или становятся недействительными по прошествии определенного интервала времени в абсолютных или относительных показателях. Такую политику рекомендуется применять для часто меняющихся данных, если кэшированные данные регулярно обновляются, или если кэшированные данные остаются действительными лишь в течение определенного промежутка времени или до определенного времени. Выбирая политику срока действия по времени, можно остановиться на политике срока действия по абсолютному времени или по скользящему временному интервалу. Политика срока действия по абсолютному времени позволяет определять время жизни кэшированных данных через задание времени истечения их срока действия. Политика срока действия по скользящему временному интервалу определяет время жизни кэшированных данных путем задания промежутка времени с момента последнего доступа к кэшированным данным, через который они будут считаться устаревшими. При использовании политики срока действия по уведомлению кэшированные данные устаревают или становятся недействительными на основании уведомлений от внутренних или внешних источников. Такая политика подойдет при работе с нечасто меняющимися кэшированными данными, если кэшированные данные обновляются через непостоянные промежутки времени, или если данные остаются действительными до тех пор, пока не будут изменены внешними или внутренними системами. Обычно в качестве источников уведомлений выступают модули записи файлов на диск, события WMI, уведомления об изменениях в базе данных и операции бизнес-логики. Поступление уведомления означает истечение срока действия или устаревание всех соответствующих элементов кэша. Стратегия сброса кэша должна обеспечивать эффективное использование хранилища, памяти и других ресурсов. Стратегия сброса кэша может быть явной или в результате сборки мусора: Для явного сброса кэша необходимо задать, когда элемент должен быть удален. Такая политика используется, если требуется поддерживать сценарий удаления поврежденных или устаревших кэшированных данных, если используются хранилища, не поддерживающие сборки мусора, или при работе с кэшем на диске. Для сборки мусора необходимо определить условия и набор эвристических правил, согласно которым элемент должен быть удален в ходе сборки мусора. Эту политику рекомендуется применять, если требуется автоматически активировать сборку мусора при устаревании ресурсов системы, если требуется обеспечить автоматическое удаление редко используемых или маловажных элементов из кэша, или при работе с кэшем в памяти. Рассмотрим общие правила сборки мусора: Алгоритм вытеснения по давности использования (Least Recently Used) обеспечивает удаление элементов, которые не использовались в течение наибольшего периода времени. Алгоритм вытеснения по частоте использования (Least Frequently Used) обеспечивает удаление элементов, которые с момента загрузки использовались реже всего. При использовании алгоритма вытеснения по приоритетности (Priority) всем кэшированным элементам присваиваются приоритеты, и сборка мусора выполняется на основании этих приоритетов с сохранением элементов, имеющих более высокий приоритет. Шаг 5 – Выбор метода загрузки кэшированных данных Правильный выбор способа наполнения кэша позволит увеличить производительность и сократить время отклика приложения. Принимая решение о том, как будет заполняться кэш, учитывайте, сколько данных должно быть доступно при запуске приложения или при исходной загрузке кэша, а также то, какое влияние это будет иметь на время запуска и производительность приложения. Например, можно выполнять предварительную загрузку данных в кэш при запуске приложения или извлекать кэшированные данные, только когда они запрашиваются. Загрузка данных в кэш при запуске приложения может сократить время отклика приложения, но при этом увеличить время загрузки. С другой стороны, загрузка данных в кэш только по необходимости способствует сокращению времени запуска приложения, но может увеличить время отклика при первом обращении к этим данным. При проектировании стратегии заполнения кэша может использоваться упреждающая или реактивная загрузка: Упреждающая загрузка обеспечивает извлечение всех данных приложения при его запуске и их кэширование на весь период выполнения приложения. Упреждающая загрузка подойдет для относительно статических данных, или если известны заранее частота их обновления, время жизни и размер. Если размер данных неизвестен, их загрузка может привести к истощению ресурсов системы. Используйте этот вариант загрузки также, если в качестве источника кэшированных данных предполагается медленная база данных, или данные извлекаются по медленной сети или из ненадежного Веб-сервиса. Реактивная загрузка обеспечивает извлечение данных при запросе приложением и их кэширование для запросов в будущем. Реактивная загрузка подойдет для относительно непостоянных данных, когда время жизни кэшированных данных неизвестно, объем кэшированных данных велик и источник данных надежен и всегда доступен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 13:53 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
МСУДля дельфей, думаю, тоже есть какие вещи. На крайний случай, можно самому написать простенький движок кешей. Что и требовалось доказать: delphimemcache Requires:• Delphi 2010 • Indy 10 P.S. Почему не юзаем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 13:58 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
ViPRosiscrafm, Что означает "подгружается в основной записи"? основная запись -вью? можно ли в гриде редактировать? как описывается само понятие "лукап" в метаданных? насколько глубоко лукапность простирается? кешируются ли лукапы для использования в разных формах с одинаковыми требованиями лукапам? ну поговори немного "подгружается в основной записи" означает то, что необходимые для лукапа значения отбираются запросом из БД, а не формируются на клиенте или сервере приложений (см. рис). По большому счету так, как ты сказал: "основная запись -вью" На рис. также показан фрагмент того, как описывается лукап в метаданных. Насчет "глубины лукапности" уточни плз, что имеется ввиду? Для разных форм данные лукапов на сервере не кешируются. После того как провайдер отдал записи, он закрывает набор данных, по-умолчанию, в режиме "Пользователь" оставляет только элементы метаданных. Хотя, это искуственно, можно кеш и не чистить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 14:00 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
МСУ, спасибо за материал. Выскажусь чуть позже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 14:05 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
iscrafm, "глубина лукапности" :) ну это когда поля для расшифровки идентификатора находятся на несколько уровней выше по дереву. Допустим, есть Юрлицо(ИД, Наименование(лукап)), дальше есть Предприятие(ИД, Юрлицо.ИД(лукап), [Дата присоединение к холдингу]), т.е. и для Предприятия и для Юрлица значением лукап явялется Юрлицо.Наименование. Или еще хуже - Предприятие(ИД, Юрлицо.ИД(лукап), Холдинг.ИД(лукап), [Дата присоединение к холдингу]), где Холдинг(ИД, Юрлицо.ИД(лукап), [Дата создания]), где лукап для Предприятия формируется как (Холдинг)Юрлицо.Наименование + "."+ (Предприятие)Юрлицо.Наименование Ну для примера все структуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 18:27 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
случай еще сложнее Спецификация([Составное изделие],[Сборочная единица],...), где поля [Составное изделие],[Сборочная единица] классификаторы, объединяющие несколько типов (Комплект,Комплекс,...,Деталь,Материал,...), которые тоже могут быть унаследовали лукапы + количество лукап полей для разных типов разное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 18:35 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
ViPRosiscrafm, "глубина лукапности" ну это когда поля для расшифровки идентификатора находятся на несколько уровней выше по дереву. понял. Конечно. Можно использовать все, что ты можешь "вытянуть" средствами используемой СУБД, ограничений в этом плане нет. На картинке первое, что под рукой было: выбирается Категория, все остальное по "дереву" формируется от нее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 19:17 |
|
||
|
Что почитать чтобы научится программировать в асинхронной манере.
|
|||
|---|---|---|---|
|
#18+
iscrafm"подгружается в основной записи" означает то, что необходимые для лукапа значения отбираются запросом из БД, а не формируются на клиенте или сервере приложений (см. рис). По большому счету так, как ты сказал: "основная запись -вью" На рис. iscrafm, непонятно, но здорово. У тебя смесь из двузвенки и трехзвенки? Какой-то винегрет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 20:40 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=37044885&tid=1442524]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 19ms |
| total: | 177ms |

| 0 / 0 |
