Здравствуйте, Lloyd, Вы писали:
AV>>Когда я упонянул первый раз про синглтон, я имел в виду, что его реализовать без использования статик нельзя и спрашивал, что, фрейморк нигде не содержит ни одного синглтона (если содержит, значит есть статик). Т.е. реализация синглтона обязана содержать статик.
L>Утверждение неверное, смотри комментарий по поводу хранения экземпляра синглтона в HttpApplication.Items
Жизнь ломает. И я уже спокойно в энный раз пишу, что я про статик и бизнес-логику. И в зн+1-й раз я про статик во фпеймворке. При чем здесь HttpApplication.Items? Я в эн +2-й раз я про статик в бизнес-логике, которую можно подсоединять хоть в веб. хоть в форм, хоть в консоль. В эн +3-й раз я про статик и синглтоны во фреймворк-классах, если есть снглтон в таких классах и их можно использовать в бизнес-логике, такие синглтоны обязаны содержать статик.
В эн +4-й раз: мой главный вопрос — можно ли использовать статик в бизнес логике? Если для форм — OK, то для веб — похоже такую библиотеку подсоединять нельзя, а логику следут писать только с передачей параметров в ф-ии (при этом для сохранения параметры, пердаваемые в бизнес-логику можно хранить используя состояние приложения, состояние сеанса, — это к моему вопросу никак не относится). В н+273-й раз: можно ли использовать статик в бизнес локике (которая ничего не знает про HttpApplication.Items), зная, что она может быть прикручена к обработке веб?
AV>>Когда отвечал предыдущему автору, почему-то решил (ошибочно), что автор тоже про реализацию, про синглтон на основе статических классов (я таких не видел),
L>Что такое "синглтон на основе статических классов"?
Я ж сказал, что ошибся, подумав что автор, которому отвечал, написал про реализацию синглтонов на основе классов (не объектов) помеченных как статик. Про это и написал, что таких не видел.
L>Что такое "статик объект"?
Я имел в виду статическую переменную типа какого-нибудь класса. А ты б как назвал?
AV>>>>Но слово static в реализации синглтона в любом случае присутствует.
L>>>Смотря что вы имеете в виду под "в любом случае присутствует". Если у вас веб приложение, то ничто не меашет класть синглтон в Application и в этом случае "слово static" присутствовать не будет.
Я в н+5-й раз..., и в н+13-й раз..., и в н+последний китайский, и в н+ 114, и в н+ 6-й...
AV>>"Вопрос в следующем: есть не readonly статические переменные во фреймворке?
L>Есть
AV>>Да, — тогда такой класс использовать в ASP.NET нельзя.
L>Почему?
Я как-то вклинился в тему
http://www.sql.ru/forum/actualthread.aspx?tid=560684&hl , — тоже Andrej-V, может там сформулировал более ясно?
Посмотри ответ от
stump (3-й от начала), прочти статью указанную в нем. Там полно сленга. Фраза,которую мне помогли перевести:
So for your business objects, either you're stuck with the "if(HttpContext.Current!=null)" and the System.Web reference (yuck) or you've got to come up with some kind of provider model for your static persistence, which will need setting up prior to the point that any of these singletons are accessed. Double yuck.
Итак, для ваших бизнес-объектов, вам либо ничего не остается, кроме как использовать "if(HttpContext.Current!=null)" и System.Web reference (фу, какая гадость), либо вам придется придумать какую-то provider model для вашей static persistence, которую нужно будет установить/проинициализировать до попыток доступа к любому из этих singletons. Тьфу два раза.
Насколько я понял, атрибут [TreadStatic] действителен для потока. Но бизнес-логика может выполняеться для одного запроса (а не для сеанса, — там тем более) сначала в одном, а потом в другом потоке. Поэтому такая статик не сохраняется в течение обработки запроса. И надо делать чего-то еще, кроме ее инциализации и реализации очиски по окнчании запроса. В любом случае, как я понял, если вы написали класс для бизнес-логики со статик (или используете готовый класс фреймворка со статик) — могут быть проблемы.
Вот почему.
Или я неправ?
AV>>(Или нет ни одного синглтона?)"
L>Это тут при чем?
Я в н+ -й раз..., и в н+...Зря этот форум не читает Жванецкий.
AV>>Спасибо. 1.Почему-то в рефлекторе не видно System.Transactions.dll, не подскажите как посмотреть.
L>File -> Open cache -> System.Transactions
СПАСИБО.
AV>>2.Но вы уверены что их нет в других классах, и таких, которые можно воткнуть в код биснес-логики? И есть где-то рекомендация (а с учетом полученных в начале ответов даже требования), что при разработке библиотеки для бизнес-логики нельзя использовать не readonly статик.
L>Опять ничего не понял, переформулируй вопрос.
Да ну его на хрен, этот вопрос.
L> смортри комментарий про HttpApplication.Items
Обязательно посмотрю.
AV>>А ответы, как всегда, пишутся по мере возможности, желания и наличия времени.
L>Это ты про чьи ответы? Про мои или про свои?
Понедельник. Сплошной. Ты меня спросил, на что ответить. Я намекнул, что желательно на все по-порядку, при наличии того, что указал. (Хотя, в общем, фраза применима ко всем, в том числе и ко мне).