All streams
Search
Write a publication
Pull to refresh
20
0
Send message
Тут, как мне показалось, больше важна не величина задержки, а факт ее наличия. Час или сутки — принципиальной разницы нет. Проще уже сделать одну задачу, а результат посмотреть на следующий день, чем постоянно прыгать между задачами или курить бамбук, дожидаясь результатов.
Да и в реальном использовании наличие этой задержки практически не сказывается, она мешает только при «дебаге».
Google Analytics уже был прикручен, да и его хоть в глаза видели немного. Причины по сути только такие.
А они и не запрещали все СПО. Есть запрет только на GPL и похожие вирусные лицензии. Софт с под лицензиями Apache, BSD, MPL, и их аналогами изначально разрешен в маркете. Alizar просто немного преувеличил. Есть официальное пояснение от команды winphone и нет причин им не верить.
Есть еще один вариант отладки сервиса, без добавления Debugger.Break/Launch — указание отладчика в Image File Execution Options.
Мне здравый смысл подсказывал, что использовать TransactionScope — безопасно. У вас есть 100% уверенность, что в приложении косвенно не используется пул? Где граница использования потоков? TPL можно использовать? PLINQ? Как насчет стандартных Async Pages?
При исключении в таске в TPL — приложение падает при вызове финализатора, что еще интереснее в отладке.

Обычные Win приложения тоже падают при исключении на потоке из пула — но это не повод отказываться от многопоточности или исключений.

>> (Ну и IIS-то все равно не падает)
Я же проверил перед тем, как написать комментарий. И DevServer, и IIS7 под .NET 4 Integrated Mode падают при вписывании строчки в Page_Load на стандартном шаблоне сайта.
Где и кем не рекомендуется? В MSDN? Покажите ссылку, пожалуйста. Вы же не гуглите каждый метод CLR на предмет безопасности под IIS?
Пример валит IIS, в статье по QueueUserWorkItem предупреждения нет — этого достаточно, чтобы кто-то наступил на грабли.

Стандартный TransactionScope использует потоки из пула для реализации таймаутов. Любой зарегистрированный в нем ресурс может кинуть исключение в момент rollback-а, и точно так же утянет за собой w3wp. И, да, я видел такое на своем проекте, на живой системе. TransactionScope тоже не рекомендуется использовать?
Не обманули, скорее — очень раздули проблему. Например, исключение на потоке из пула убивает IIS, точнее, процесс, обслуживающий Application Pool:
ThreadPool.QueueUserWorkItem(delegate { throw new Exception(); });

И тут же в логах: Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2…

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

Да, я настраивал зеркалирование на практике, для большого количества баз одновременно. И точно знаю, что на самом деле все не так, как вы описали. Базы не обращаются друг к другу. Все отзеркалированные базы используют те же 5-6 постоянных соединений.

Аутентификация происходит при установлении соединения, один раз, это явно сказано в msdn.microsoft.com/en-us/library/ms186360.aspx: Connection requests from a partner or witness, if any, must be authenticated.

Соединения устанавливается один раз, при старте первой сессии. Попробуйте настроить зеркала для нескольких баз и сделать выборку из sys.dm_db_mirroring_connections. Соединения постоянные, никуда не пропадают. Из описания dmv тоже достаточно очевидно, что аутентификация — часть connection handshake, а не самого протокола передачи транзакций.
Аутентификация для mirroring endpoint в любом случае будет, но она же на скорость работы установленного соединения не влияет. Может притормаживать шифрование, но оно задается отдельной опцией.
Кстати, срок действия сертификатов по умолчанию — год, что может стать неприятным сюрпризом. И настройка для Windows Authentication немного проще — позволяет первые три пункта сделать через UI.
Раз уж обсуждем конкретный код — то лучше использовать стандартный статический System.Windows.Forms.Application.OpenForms, с поиском по имени.
Согласен, любая статья о ручном сборе мусора должна начинатся с внушительного предупреждения «никогда так не делайте».
Необходимость в ручном вызове естественно бывает, иначе возможности его сделать просто не было бы. Но в таких жестких условиях просто вызова GC — мало. Нужно полноценное ужимание приложения — ngen для шаринга native images, MemoryFailPoint-ы, и полное понимание всех деталей работы GC. К сожалению, обычно ручная сброка мусора используется «на всякий случай».
… а бывает — книга. Я тут тоже открыл Рихтера Garbage Collection Modes — в MSDN и у Робинса подробнее. Так что ж теперь, Рихтер мне не нужен?
IDisposable.Dispose() не освобождает память, и вообще не имеет отношения к управлению памятью. Он освобождает остальные ресурсы, а память так и остается занятой до сборки мусора.
Я иногда подсказываю планировщику запросов в SQL. FORCESEEK в моем текущем проекте местами очень помогает против дедлоков при read committed snapshot. Это плохо?
msdn.microsoft.com/en-us/library/0xy59wtx.aspx
Да, там надо пару раз по ссылкам пройтись. Но Рихтер с 70-ю страницами и 20+ разделами в главе тоже явно в формат статьи не впишется.
Глупо тратить время на Рихтера, когда есть MSDN. Рихтер просто пересказывает его своими словами. 21-ю главу заменить парой ссылок. Проблема решена.
Не перестраивайтесь. В .net более чем достаточно IDisposable-классов, которые нужно освобождать руками.
Некоторым достаточно статьи. Некоторым — недостаточно Рихтера.

Как ни грустно, но большинство разработчиков — непрофессионалы. Есть много студентов/джуниоров/просто не перечитывающих каждое издание Рихтера/Руссиновича/Робинса заново. Есть даже такие, что по it-тематике читают только хабр. Эта статья будет хотя бы на главной хабра, и в комментариях будет упоминаться Рихтер — уже этим она полезна.
Это аналог вызова EmptyWorkingSet. Он не освобождает память. Просто урезает private working set — значение, которое по умолчанию показывает task manager.
Естественно, последующий своп и тормоза при этом обеспечены. Иметь на среднем десктопе 4Gb памяти, и при этом принудительно заставлять приложение свопить и не выходить за пределы 10 мегабайт — преступление.

Посмотрите статью habrahabr.ru/blogs/windows/107605/ — там в разделе task manager есть даже скрипт для «оптимизации всего подряд», вместе с обоснованием «полезности» такой «оптимизации».

Information

Rating
Does not participate
Location
Беларусь
Date of birth
Registered
Activity