Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Понадобилось сделать crop + resize на стороне клиента. Если клиентский браузер поддерживает FileStream, картинку перед манипуляциями можно отобразить сразу, без участия сервера. Но для поддержки не самых свежих браузеров приходится загружать файл через AJAX и после отображать клиенту в <img /> по выданному сервером URL. Картинка загружается и хранится как временный файл. Рано или поздно файл должен быть удален, чтобы не загаживать папку тонной загруженных картинок. Вот как это сделал я: Код: 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. Объект TempImage запихивается в сессию пользователя и хранится там по ключу. Прямого обращения к файлу нет, только через Action по переданному ключу после аплоада. Мои тесты показали, что все файлы до единого рано или поздно удаляются. Правда не всегда сразу после смерти сессии, а когда происходит уборка «мусора» в памяти. Подскажите, есть в данном решении какие-нибудь подводные камни? Может надо как-то по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 16:43 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
имхо сессия зло. я б сделал фоновую службу и там бы чистил бы по времени жизни к примеру вызывал бы её раз в 1 час и по папке проходился бы все что больше часа валяется удалял бы, писать минимум кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 16:53 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
handmadeFromRu, некий Петя загрузил картинку и приготовился её кропать. в это время на сервере служба берет и чистит все временные файлы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:03 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
а ну да, не заметил, если учитывать время создания файла... но хотелось бы обойтись средствами ASP.NET, без службы. почему сессия — зло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:05 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
сильно упрощенный код контроллера: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:13 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, бросается в глаза ошибочная реализация финализатора. В момент его исполнения значения TempPath/ContentType уже могут быть удалены сборщиком мусора так что нужна проверка на null. Ты проверял удаляются ли файлы если происходит перезапуск пула приложений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:30 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
bazile, На сколько я понимаю, до выполнения финализатора внутренние объекты еще живые в понимании менеджера памяти. Тесты показали, что единственный вариант, когда финализатор не срабатывает, это убить процесс в памяти, ну или какой-то фатальный сбой (пока не наблюдалось). В других случаях, даже с исключениями, допалзающими до базового объекта приложения, файлы удаляются. Остановка и перезапуск пула вызывает немедленную сборку мусора и все временные файлы удаляются. В идеале хотелось бы уничтожения файлов при смерти сессии, но пока не знаю как это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:36 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
http://msdn.microsoft.com/en-us/library/ms244737(v=vs.80).aspx где перегрузка Dispose))) раз по паттерну. так камешек мелкий) ну можно на Session_End кинуть , но там траблы могут быть если память не изменяет. фоновый процесс и не мучать мозг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:40 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttНа сколько я понимаю, до выполнения финализатора внутренние объекты еще живые в понимании менеджера памяти. Нас должно больше волновать что происходит во время его выполнения, а не в непонятный момент времени "до выполнения". Когда выполняется ~TempImage() экземплярные поля могут уже быть удалены. hVosttОстановка и перезапуск пула вызывает немедленную сборку мусора и все временные файлы удаляются. Это вызывает сомнение т.к. зачем выполнять сборку мусора если процесс завершается и вся память будет освобождена ОС в любом случае. hVosttВ идеале хотелось бы уничтожения файлов при смерти сессии, но пока не знаю как это сделать. Увы нет способа отловить момент завершения сессии. Есть событие Application.SessionEnd, но на него полагаться не стоит. Можно в фоновом потоке удалять ненужные файлы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:48 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Удалять должен отдельный сервис - вин сервис через определенный интервал времени либо консольная утилита по шедулеру. Веб приложение не должно знать ни о каких там периодических заданиях. За деструктуризацию через тильду ~ уволить без выплаты выходного пособия. Точка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:54 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
bazile, handmadeFromRu, можно ли считать временный файл нативным ресурсом (ведь я храню всего лишь путь, что является вполне себе управляемым ресурсом) и делать сложную реализацию паттерна IDisposable, как указано в примере на MSDN, или то, что все при нынешней реализации все работает можно считать обыкновенным везением, и не всегда это будет работать? про Session_End тоже думал, для верности видимо можно производить ещё и там очистку. интересует паттерн и родные возможности фреймворка и .NET внешняя служба не укладывается в webdeploy и на некоторых хостингах (shared) попросту нет возможности в такой реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:56 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ, я посмотрю как ты на шареде пропихнешь свой чудо-сервис. не у всех есть VDS/VPS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:57 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ, а про вызов деструктора в финализаторе, иди лучше поучи лопоухих ламеров из майкрософт: Код: c# 1. 2. 3. 4. 5. ..из примера на MSDN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 17:59 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, тогда гибридный вариант для случая с шаредхостингом. сделать джобу на кварце(ну либ поток на худой конец фоновый) и при старте апп пусть чекает каждые 5 минут на наличия мусора и все ок. если апп выгрузиться и загрузиться почистить полюбак. профит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:05 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttпочему сессия — зло? И всегда злом была. Почитай Microsoft Application Architecture: http://codearticles.ru/articles/2327 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:10 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
bazileКогда выполняется ~TempImage() экземплярные поля могут уже быть удалены. Выдержка из книжки Рихтера (держу сейчас в руках): Финализацией называется поддерживаемый CLR механизм, позволяющий объекту выполнить корректную очистку, прежде чем сборщик мусора освободить занятую им память . Finalize всегда исполняется в блоке finally. Основное отличие финализатора от деструктра — недетерминированность. В моём случае это не критично. Главное чтобы файл удалился. При смерти сессии удаление файла наилучший вариант, можно сделать это в Session_End. Но для верности, можно положиться на сборщик мусора. Предложите другой вариант, кроме отдельного сервиса, службы или шедулера — это вообще не вариант для моего случая. Нет доступа к службам и шедулерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:10 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, ... а вообще, это принципиально, сохранять временные изображения в виде файлов? ... Я имею в виду, если все преобразования выполнить в MemoryStream, потом вылить его в какую-то пустую страницу через Response, а в качестве урла отдаваемой картинки указать эту страницу? ... я не уверен, как это отработает в MVC, но в Web Forms работает ... Тогда и удалять ничего не надо ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:11 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
handmadeFromRuhVostt, тогда гибридный вариант для случая с шаредхостингом. сделать джобу на кварце(ну либ поток на худой конец фоновый) и при старте апп пусть чекает каждые 5 минут на наличия мусора и все ок. если апп выгрузиться и загрузиться почистить полюбак. профит прям в мвц сайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:12 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, про деструкторы и шедулеры я спорить не буду, подрастешь, сам поймешь. У меня нет времени обучать тупоголового правильным практикам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:12 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУhVosttпочему сессия — зло? И всегда злом была. Почитай Microsoft Application Architecture: http://codearticles.ru/articles/2327 Где? Ты скинул какую-то копипасту неизвестно откуда и назвал её Microsoft Application Architecture. Кроме того, без единой строчки объяснений почему именно так (сам-то хоть понимаешь? или тупо руководствуешься по принципу: чукча не писатель, чукча мсдн-читатель), что снижает ценность этих строк до абсолютного нуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:15 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ, типичная детская отговорка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:16 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
carrotikhVostt, ... а вообще, это принципиально, сохранять временные изображения в виде файлов? ... Я имею в виду, если все преобразования выполнить в MemoryStream, потом вылить его в какую-то пустую страницу через Response, а в качестве урла отдаваемой картинки указать эту страницу? ... я не уверен, как это отработает в MVC, но в Web Forms работает ... Тогда и удалять ничего не надо ... преобразования выполняются только после кропа. сперва надо получить, и сразу же отдать тот же самый файл, потом получить параметры ресайза и кропа, выполнить их над файлом, старый файл удалить, а новый уже обработанный сохранить где надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:20 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ если его ограничивают шарехостинг то надо как то ж выкручиваться (про шедулеры), а вот про деструкторы поясни что не так? Вообще понятие деструктуризации в нете не корректно либ детерминированный вызов (Dispose) либо недетерминированный (Finalizer). hVostt , сессия зло тут нечего даж говорить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:21 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
handmadeFromRu, да я понимаю. известная на весь мир истена. не понятно только как это зло попало в ASP.NET и почему грамотное использование сессий всегда давало ощутимый профит. например, пишут в рекомендациях, что корзинку в интернет-магазинах не надо хранить в сессии — не понятно зачем такое писать ? это же итак логично и должно быть понятно без этих рекомендаций. а писать «зло» бессмысленно. любой инструмент и возможность можно использовать так, что это будет злом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:28 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttполучить параметры ресайза и кропа, выполнить их над файлом, старый файл удалить, а новый уже обработанный сохранить где надо.Новый файл и есть временный файл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:31 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
skyANAhVosttполучить параметры ресайза и кропа, выполнить их над файлом, старый файл удалить, а новый уже обработанный сохранить где надо.Новый файл и есть временный файл? 1. на странице пользователь нажимает «загрузить файл», выбирает файл с картинкой 2. файл загружается через AJAX, возвращается временный УРЛ на картинку 3. картинка отображается пользователю и он её кропает и расайзит, нажимает «сохранить» 4. на сервер уходят параметры кропа и ресайза в JSON, сервер выполняет кроп и ресайз по параметром над уже ранее загруженным файлом, результат сохраняет куда надо (допустим, как аватарку пользователя), временный файл убивается иной сценарий должен предусматривать, что пользователь передумает кропать и вернется к серфингу или вообще уйдет с сайта. рано или поздно временный файл должен быть уничтожен. зачем тут нужен какой-то сервис, если это делается штатными средствами — не понятно. я тещу уже 3 день, все работает как часы. но я подумал, что я мог что-то не учесть, и может возникнуть ситуация, когда это не сработает, вот и возник вопрос, все ли я правильно делаю. а мне начали советовать какие-то сервисы, и не понятно почему именно вот только ТАК, через сервис правильно, но объяснить толком почему никто не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:39 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Есть такая штука, шедулер (aka cron) называется. Запускается раз в сутки и удаляет всё ненужное. А про шаред хостинг и asp.net это наверное шутка была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:40 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
а ну да, сессия это зло. самое зачетное объяснение из всего, что я когда-либо слышал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:42 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
st_stЕсть такая штука, шедулер (aka cron) называется. Запускается раз в сутки и удаляет всё ненужное. А про шаред хостинг и asp.net это наверное шутка была. забейте. особенно с кроном в виндах и на шаредах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:46 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
кста, спасибо handmadeFromRu за ссыль на описание Dispose паттерна, надо детальнее с этим разобраться, чтобы исключить любое необъяснимое поведение (хотя пока такого небыло). ну и спасибо МСУ, просто за то что почтил своим присутствием )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:52 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Я к тому, что данный вопрос как раз таки по похожей к нам задаче, где тоже юзерами грузятся фотки на сервер (*.nix), остаётся мусор, который и удаляется по крону раз в сутки php-скриптом. Подобная система у нас на паре сайтов используется уже несколько лет, проблем не было. Городить какие-то сессии для этого, ну не знаю, тут уж на любителя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 18:56 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
p.s. а если сервер повиснет и ребутнётся, енто самое dispose произойдёт или мусор навсегда останется висеть в папках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 19:01 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
st_stЯ к тому, что данный вопрос как раз таки по похожей к нам задаче, где тоже юзерами грузятся фотки на сервер (*.nix), остаётся мусор, который и удаляется по крону раз в сутки php-скриптом. Подобная система у нас на паре сайтов используется уже несколько лет, проблем не было. Городить какие-то сессии для этого, ну не знаю, тут уж на любителя. Я понимаю. Но на Win-шаредах нет доступа к шедулеру. Можно слезно попросить техподдержку и даже добиться результатов, но это не тру-вей. Кроме того PHP и ASP.NET работают совершенно по разному принципу. После обработки запроса PHP умирает, а ASP.NET живёт. И моё решение работает, и вот что удивительно: пока никто не удосужился написать почему так неправильно, какими проблемами это может обернуться — вот что меня интересует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 19:02 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
st_stp.s. а если сервер повиснет и ребутнётся, енто самое dispose произойдёт или мусор навсегда останется висеть в папках? при запуске пула приложения (грубо говоря в Global.asax) папка чистится. как раз для таких случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 19:04 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, ниче вы нагородили, у меня была ситуация раз в сутки отправлять sms оповещения, я просто раз в сутки после 12 ночи отправлял всем что надо, инициализатором являлся первый запрос в новых сутках, работает уж три года как часы, тоже была мысль через сессию с отложенной отправкой на сервере sms, тык никогда сессиями не пользовался и тут решил что не нужна.., а что если первый запрос не придет никогда? - ну видно не судьба, с такой низкой активностью сайта.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 19:48 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, выполнение какой-то работы по расписанию как раз больше подходит для различных демонов, сервисов и шедулеров. если ожидать первого запроса, то этого запроса может и не произойти очень долго — теоретически. хотя я по логам смотрел, постоянно шарятся всякие гугло, яндекс и другие боты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 20:55 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, так то да, но демонов не захотелось, просить провайдера что бы пинал сайт по расписанию тем более, а написать пару строк кода абсолютно труда не составило, тем более тут ведь можно отправлять смс первым сообщением каждого часа, или каждые 10 минут, как душе удобно, а на сайте да - постоянно ктонить лазит, тем более время отправки не критично ибо они приходят на 2-3 день после отправки с сайта потребителю ( отложенная отправка у провайдера смс), у вас ведь тоже лимит по диску не горит= 1-2 гигабайта - мелочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 21:14 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
carrotikhVostt, ... а вообще, это принципиально, сохранять временные изображения в виде файлов? ... Я имею в виду, если все преобразования выполнить в MemoryStream, потом вылить его в какую-то пустую страницу через Response, а в качестве урла отдаваемой картинки указать эту страницу? ... я не уверен, как это отработает в MVC, но в Web Forms работает ... Тогда и удалять ничего не надо ...проблема в том, что файл отправляется как POST, а <img> может получить на себя картинку только через GET. можно отправить форму с файлом в iframe. На сервере просто отдать полученные данные обратно: Код: c# 1. 2. 3. 4. 5. на клиенте отловить загрузку фрейма и картинки в нем (браузер сам создает простейшую разметку внутри фрейма, в ней - img), после чего задать фрейму размеры картинки. в этом варианте временные файлы не нужны. Правда, придется потом ещё раз файл отправлять, но это ведь нечасто, да и большинство юзеров пользуются нормальными браузерами, люде тоже не дураки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 21:34 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
зачем вообще здесь временные файлы? для тех операций, которые перечислены, их не надо вообще... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 23:22 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
a_titeev, ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 00:52 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Яростный Меч, в современных браузерах есть FileStream, и лишняя передача на сервер не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 00:53 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttМСУпропущено... И всегда злом была. Почитай Microsoft Application Architecture: http://codearticles.ru/articles/2327 Где? Ты скинул какую-то копипасту неизвестно откуда и назвал её Microsoft Application Architecture. Кроме того, без единой строчки объяснений почему именно так (сам-то хоть понимаешь? или тупо руководствуешься по принципу: чукча не писатель, чукча мсдн-читатель), что снижает ценность этих строк до абсолютного нуля. Если для тебя Microsoft Application Architecture ничего не значит, то я сожалею об этом. http://codearticles.ru/articles/1522 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 00:54 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ, facepalm.jpg на мой взгляд, ты просто ищешь повод лишний раз ссылку на свой ресурс запулить. не важно как это относится к заданной теме и вопросу. да, наверное планируется масштабная монетизация. желаю успехов конечно,.. ну и чтобы модераторы этого форума так и продолжали смотреть на твою прокачку сквозь пальцы. только смысла в твоих сообщениях по прежнему -0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 02:06 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttЯростный Меч, в современных браузерах есть FileStream, и лишняя передача на сервер не требуется.FileReader, ты хотел сказать? Ну да, где он есть, там все просто, читаем бейс64, и превед. Топик-то о старых браузерах, будь они неладны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 03:41 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, тебе просто нечем понимать, как обычно. Я тебе дал полную информацию что, как и почему. Ты спросил откуда инфа. Я дал инфу. Если ты не вкуриваешь, что такое майкрософтский архитектурный гайд - сходи в сад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 11:12 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, а про вызов деструктора в финализаторе, иди лучше поучи лопоухих ламеров из майкрософт: Код: c# 1. 2. 3. 4. 5. ..из примера на MSDN Причем тут возможности деструктора и зло их использования? ...Программист не может управлять моментом вызова деструктора, потому что момент вызова определяется сборщиком мусора. Сборщик мусора проверяет наличие объектов, которые больше не используются приложением. ...В целом, язык C# не требует управления памятью в той степени, в какой это требуется в случае разработки кода на языке, не рассчитанном на среду выполнения со сборкой мусора. Это связано с тем, что сборщик мусора платформы .NET Framework неявным образом управляет выделением и высвобождением памяти для объектов. Однако при инкапсуляции приложением неуправляемых ресурсов, например окон, файлов и сетевых подключений, для высвобождения этих ресурсов следует использовать деструкторы. Если объект требует уничтожения, то сборщик мусора запускает выполнение метода Finalize этого объекта. У тебя есть резервирование неуправляемых ресурсов? Нету. Начинай уже думать головой, а не задом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 12:25 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttна мой взгляд, ты просто ищешь повод лишний раз ссылку на свой ресурс запулить. не важно как это относится к заданной теме и вопросу. 1. Если на моем ресурсе есть ответ на тему, я эту ссылку предоставляю. 2. Никогда и нигде я не использую ссылки не по теме. То, что у тебя трудности с пониманием - не мои проблемы. 3. Если это запрещено или будет запрещено правилами форума, я перестану это делать. 4. Если тебе что-то не нравится, можешь пожаловаться модератору. hVosttда, наверное планируется масштабная монетизация. Не планировалась и не планируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 12:31 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ, мил человек, объект в своём финализаторе удаляет файл. когда будет выполнен финализатор точно не известно, но по задаче этот как раз и не критично: главное гарантированное удаление файла, момент не так важен. так вот, ответь на вопрос: к каким проблемам это может привести? почему так неправильно? что в этом плохого? если будешь тыкать гайдом, а не ответишь прямо на вопросы, то ты сути происходящего вообще не понимаешь, и гайдов своих тоже не понимаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 17:41 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, А Вы знаете, что финализатор и может не вызываться в некоторых случаях, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 20:18 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttобъект в своём финализаторе удаляет файл. Это плохая архитектура. Причем, критически плохая. hVosttтак вот, ответь на вопрос: к каким проблемам это может привести? почему так неправильно? что в этом плохого? Я уже ответил. Финализатор приемлем только для неуправляемых ресурсов, если в процессе работы класса ты наоткрывал всякие хендлы и дескрипторы. Строить бизнес логику на деструкторах - это верх ламеризма. hVosttесли будешь тыкать гайдом, а не ответишь прямо на вопросы, то ты сути происходящего вообще не понимаешь, и гайдов своих тоже не понимаешь. Ты их сначала научись читать правильным местом. Тогда от тебя будет толк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 20:29 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ, Вернее применим как правило, в патерне IDisposable, остальное это как бы эквилибристика хака и к промышленному коду отношение иметь не должно, говорить что тут реализован паттерн IDisposable не приходится , ибо его тут нет и в помине ( есть только знакомый интерфейс IDisposable) а вот тут мне кажется очень тонкое место Log.DebugException(ex.Message, ex) мы ошибку заносим в очередь на запись, удалится ли this из памяти вот вопрос... или перейдет в долгоживущие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 21:09 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, у него сама идея с временными файлами утопична. Никто и не сомневался в способностях топикстартера - выдумать полуработающий велосипед и не замечать бревен в ресницах. Почему бы не хранить это темповое изображение в БД (varbinary / filestream). Никакого оверхеда в файловой системе - все операции на лету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 21:35 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ, Ну почему утопична, она ведь работает, про базу данных разумно, ибо у хостеров размер баз как правило не ограничен, не в пример дисковой квоте, я уже одного поймал на этом.. Все дело когда... и как... то что не оптимально ( ну с нашей точки зрения , да бог с ним), вот при детальном рассмотрении реализации диспозе ( я то думал там есть такая) а там нет ничего, вот это и настораживает. Ведь по существу весь патерн замыкается на удаление неуправляемых ресурсов при помощи синтаксического сахара using ну и сам финализатор, там же ясно сказано "Метод Finalize используется для операций очистки неуправляемых ресурсов, хранимых в текущем объекте до его удаления" там нет слова как правило.. там по существу вся конструкция держится за счет using - поставил программист его - выполнился метод Dispose(), по наитию, не поставил ( ну забыл) выполнился метод через вызов финализатора( когда то может быть),( защита от разгильдяйства) при using так же выполняется деректива к уборщику GC.SuppressFinalize, и он помечает объект, что при удалении его - финализатор вызывать не надо, это ж ему легче, это ж не хилая операция прибраться в памяти.., а тут получается что и диспозе не нужен, обыкновенную функцию влепи чистить папку и все, а финализатор что так вызовется что так.. ну и про запись в лог, терзают смутные сомнения.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 22:04 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 22:15 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostta_titeev, ? попробовай юзер-профиль использовать для этого. грузи сразу в базу. файлы то зачем? я так в свое время делал. нормально вышло. плюс еще даже - несклько разных может быть иображений. с каждым отдельно можно работать. также как и с корзиной, кстати, по примеру... а дальше зависит от того как используется аутентификация. если все анонимы, то можно и чистить, как заведено, либо мож даже оставлять, сохранив последнюю модификацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 22:16 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Где-то в степи Как применять IDisposable и финализаторы: 3 простых правила О чем я и говорил, финализатор зло, тема баян - холиварили лет 5 назад на форуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2013, 22:20 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
соленые огурцы — зло! при употреблении с кислым молоком (которое тоже кстати зло еще то), вызывает приступы диареи. про кухонные ножи говорить не приходится, зло! сколько пальцев пострадало в результате их использования, да и уголовщины, связанной с ними тоже не мало. а, ну и финализотры, с сессиями тоже зло... конечно же. непонятно почему правда, до сих пор никто не пояснил. правильно, зачем объяснять, это же итак должно быть понятно! ну и пусть, что в гайдах ни прямым, ни кривым текстом не сказано, что сессии — зло или финализаторы — зло. ну и правильно, писали же толерантные люди. будут они еще нарываться на неприятности. но мы то знаем! зло!!!!!! МСУ. я понял. ты просто НЕ ЗНАЕШЬ почему. а жаль. так бы может научил бы нас уму разуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 12:20 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
кстати, уже больше недели... полет нормальный. прошло через операцию больше тысячи файлов. папка чистенькая. в логе ни единой ошибки. исключений, связанных с менеджером памяти не замечено. все тип-топ. можно конечно с бараньей упёртостью талдычить, что так неправильно, но почему это изумитель работает? кто знает? как же так?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 12:23 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, тебе уже десять раз пережевали, почему сессия - это зло и почему логика в деструкторах - это зло. Если для тебя гайд по архитектуре от MS не аргумент, можешь сходить убить себя об стену. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 12:34 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, сделать можно как угодно и будет работать, но ты уперся хз чем...тебе не только МСУ говорит что кривая архитектура, но ты не хочешь соглашаться упорно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 13:02 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
handmadeFromRuhVostt, сделать можно как угодно и будет работать, но ты уперся хз чем...тебе не только МСУ говорит что кривая архитектура, но ты не хочешь соглашаться упорно да я готов принять это, но как можно согласиться без каких-либо доказательств? без каких-либо объяснений? я специально топик и создал, так как понимаю, что всего не знаю и могу ошибаться. но одних только слов «так неправильно» или «это зло» недостаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 14:05 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУ, ты сказочный.... где ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 14:06 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, ты сказочный.... где ???? Перечитай все мои ответы заново. Ищущий да обрящет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 14:20 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt ссылка о том как использовать финализаторы не помогла осмыслить корявость твоего способа очистки файлов? по моему прям четко расписанное объяснение. твой финализатор занимается не тем, не нужен он вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 14:29 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, Нормально. Если всё работает - ты выиграл. Вопли про "плохую архитектуру" - большей частью полная фигня. п..деть - не мешки ворочать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 14:42 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, про финализаторы мы еще продолжаем выбивать твою тупость из башки, это ладно. Ну а по поводу "сессия - зло", смотрю, согласился уже? Так мы медленными, но уверенными темпами научим тебя программировать, и не просто программировать, а писать качественный код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 14:49 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
пробегаллоhVostt, Нормально. Если всё работает - ты выиграл. Вопли про "плохую архитектуру" - большей частью полная фигня. п..деть - не мешки ворочать... говнокод+костыли работают всегда, но это ничего не меняет, оно также попахивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 15:12 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
значит, я услышу любые оправдывающие свои слова аргументы из области болтологии, но так и не получу объяснений, так? «зло», «так плохо», «попахивает», «папуня майкрософт сказал», ни о чем мне не говорят. если вы считаете, что это убедительные аргументы, тогда я просто обязан признать, что вы меня убедили. дискуссию можно сворачивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 19:37 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
в общем я разобрался с вопросом. в моём случае, класс не владеет управляемыми ресурсами , которые необходимо освобождать. но он владеет неуправляемым ресурсом — файл . и хоть это не так очевидно на первый взгляд, ибо я храню не IntPtr, а имя файла, — не имеет значения. для ортодоксальных приверженцев «букве закона и примеров с MSDN», можно хранить хендл файла. но это уже дурка. реализация IDisposable не требуется для работы финализатора, но имеет смысл, если мне понадобиться удалить файл вручную. конечно, надо это делать уже прямым вызовом Dispose(), а не «на стороне». приведенный на MSDN пример с дополнительными методом Dispose(bool) — бэд практикс . больше не рекомендуйте его никому. он нужен при наличии сразу двух видов ресурсов: управляемых и неуправляемых , что уже само по себе плохо из-за сложности в реализации гарантированной последовательности очистки, что ведет прямой дорогой в ад. на этапе выполнения финализатора полностью гарантировано доступны свойства типа string (точно также, как и int и др.). если б присутствовали управляемые ресурсы (объекты IDisposable, коллекции и т.п.), таких гарантий не предоставляется. по всем принципам и догматам, использование финализатора в данном случае полностью оправдано и не приведет к нарушениям работы, при этом он полностью инкапсулирует понятие «временный файл, который должен умереть» , а также не вредит ни в коей мере архитектуре приложения. кто с этим не согласен, жду конкретных аргументов. П.С. ну и так, для отдушины :) — МСУ! ну ты и ламак! гоу вагоны разгружать, в программировании тебе не место ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2013, 21:52 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVostt, о блин такого неадекватного состояния я не ожидал. перечитай что ты пишешь. такая белиберда. Твой финализатор не уместен и не должен освобождать(чистить файлы) ничего. ты на него свалил эту задачу искусственно и пытаешься доказать что это профит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 09:58 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
hVosttв общем я разобрался с вопросом. Ты не разобрался ни с вопросом, ни с проблемой. Ты не в состоянии сформулировать мысль, о чем ты говоришь? hVosttно он владеет неуправляемым ресурсом — файл . и хоть это не так очевидно на первый взгляд, ибо я храню не IntPtr, а имя файла, — не имеет значения. для ортодоксальных приверженцев «букве закона и примеров с MSDN», можно хранить хендл файла. но это уже дурка. Иди в детский сад сходи, порадуй детишек своим фееричным умозаключением. Садись, двойка. FileStream - это управляемый ресурс, CreateFile (win api) - это неуправляемый ресурс. Уровень твоей безбашенной логики ниже плинтуса. hVosttреализация IDisposable не требуется для работы финализатора Да ты просто само откровение. Кто подсказал или научился с документацией работать? hVosttприведенный на MSDN пример с дополнительными методом Dispose(bool) — бэд практикс . больше не рекомендуйте его никому. Замечательно, сам же его привел, а теперь признался, что это плохо. Молодцом! Во-вторых, это не плохо, такой подход нужен для определенных ситуаций при работе с неуправляемыми ресурсами, например, unmanaged соединение с БД. hVosttна этапе выполнения финализатора полностью гарантировано доступны свойства типа string (точно также, как и int и др.). если б присутствовали управляемые ресурсы (объекты IDisposable, коллекции и т.п.), таких гарантий не предоставляется. Само выполнение финализатора не гарантировано, о каких ты так гарантиях свистишь? hVosttпо всем принципам и догматам, использование финализатора в данном случае полностью оправдано и не приведет к нарушениям работы, при этом он полностью инкапсулирует понятие «временный файл, который должен умереть» , а также не вредит ни в коей мере архитектуре приложения. Бред сивой кобылы. Выводы на уровне детского сада. hVosttкто с этим не согласен, жду конкретных аргументов. Тебе целый форум битый день приводит аргументы, ты не видишь и не понимаешь. Так что можешь ждать дальше, объяснять идиоту, что он идиот - глупо. Не поймет и будет сопротивляться. hVosttП.С. ну и так, для отдушины :) — МСУ! ну ты и ламак! гоу вагоны разгружать, в программировании тебе не место Тут дело не в вагонах, ситуация с тобой ослажнена тем, что даже врачи бессильны. Без хирургического вмешательства, разумеется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 10:06 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
Иди в детский сад сходи, порадуй детишек своим фееричным умозаключением. Садись, двойка. FileStream - это управляемый ресурс, CreateFile (win api) - это неуправляемый ресурс. Уровень твоей безбашенной логики ниже плинтуса. Все чудесатее и чудесатие Муслимка, а это для чего? Stream.Dispose - метод , Strem.Finalize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 11:13 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
SeVaИди в детский сад сходи, порадуй детишек своим фееричным умозаключением. Садись, двойка. FileStream - это управляемый ресурс, CreateFile (win api) - это неуправляемый ресурс. Уровень твоей безбашенной логики ниже плинтуса. Все чудесатее и чудесатие Муслимка, а это для чего? Stream.Dispose - метод , Strem.Finalize Опа, основной ламер подтянулся. Разницу между "ресурсом" и "unmanaged ресурсом" понимаем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 11:36 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
МСУSeVaпропущено... Все чудесатее и чудесатие Муслимка, а это для чего? Stream.Dispose - метод , Strem.Finalize Опа, основной ламер подтянулся. Разницу между "ресурсом" и "unmanaged ресурсом" понимаем? Не могу поверить, что наш Великий Гонокодер не знает, что net - всего лишь обвертка на системными вызовами. В частности, FileStream - именно подобный случай Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Тупое животное, this._handle.Dispose() как по твоему для чего нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 12:22 |
|
||
|
[ASP.NET MVC] Ленивая очистка временных файлов
|
|||
|---|---|---|---|
|
#18+
SeVaНе могу поверить, что наш Великий Гонокодер не знает, что net - всего лишь обвертка на системными вызовами. В частности, FileStream - именно подобный случай Не могу поверить, что наш форумный клон долбосева не в курсе, что такое namaged и unmanaged ресурсы, а так же что делает с managed ресурсами сборщик мусора и в каком поколении. SeVaТупое животное, this._handle.Dispose() как по твоему для чего нужно? Глупое чудовище, ты хочешь сказать, что любой экземпляр класса, реализующий IDisposable - это unmanaged ресурс? Убей себя об стену! P.S. Новые отжиги говнокодера продолжаются: долбосева взялся за изучение IDisposable... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 12:30 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1358419]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
99ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 431ms |

| 0 / 0 |
