Re[4]: Singleton
От: Pavel M. Россия  
Дата: 17.10.08 17:10
Оценка:
Здравствуйте, drol, Вы писали:

D>Здравствуйте, Lloyd, Вы писали:


L>>А ты вместо того, чтобы советовать, что лучше, а что нет, лучше присоединяйся к дисскусии.

L>>Или ты тоже предлагаешь всюду за собой таскать контейнер?

D>Если при разработке действительно возникает потребность в конструкциях по типу синглтона, то значит сложность софта вполне себе доросла до использования контейнера. И я предлагаю взять вполне конкретную вышеуказанную библиотеку. Она достаточно легковесная, а по части использования — проще и удобнее просто некуда.


Я не спорю, но в своей дипломной использовал ServiceLocator, например. Там 7 KLOC, вроде, было суммарно, уж не скажу точно. В enterprise проектах хорошо использовать IoC реализации. Но насчет указанной Вами не знаю... Рисковано пользовать вещи с сомнительной поддержкой или сырые. Чтобы потом не было
--------------------------
less think — do more
Re[12]: Singleton
От: Aen Sidhe Россия Просто блог
Дата: 17.10.08 19:09
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Aen Sidhe, Вы писали:


AS>>Есть. NullLogger. Шлёт всё в /dev/null.


I>Понятно. Тем не менее можно иметь и аналогичные методам NullLogger-а статические методы и использовать их при реализации методов зависимых от log4net. И тогда тоже придётся не "переписывать", а "дописывать".


Сложно сделать это прозрачно для юзера логгера. Статические методы ведь не полиморфны.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[4]: Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.10.08 21:17
Оценка:
Здравствуйте, drol, Вы писали:

D>Если при разработке действительно возникает потребность в конструкциях по типу синглтона, то значит сложность софта вполне себе доросла до использования контейнера.


Совершенно не факт. Большинство теперешних контейнеров штука весьма специфичная и для всего подряд не очень подходит. Так что вполне оправдано использование голого service locator безо всяких контейнеров.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[5]: Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.10.08 21:17
Оценка: 1 (1)
Здравствуйте, Pavel M., Вы писали:

PM>1. Во-первых, ServiceLocator — паттерн, являющийся частью концепции EJB


Он используется в EJB, но точно так же используется и в куче других мест. И в BCL его реализация тоже есть.

PM> Не вижу больших минусов в использовании его в проектах малого-среднего размера.


Его это кого?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[13]: Singleton
От: igna Россия  
Дата: 18.10.08 08:21
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Сложно сделать это прозрачно для юзера логгера. Статические методы ведь не полиморфны.


Что значит сложно и зачем тебе здесь полиморфизм? Может быть пример в десять строчек приведешь?
Re[14]: Singleton
От: Aen Sidhe Россия Просто блог
Дата: 18.10.08 08:24
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Aen Sidhe, Вы писали:


AS>>Сложно сделать это прозрачно для юзера логгера. Статические методы ведь не полиморфны.


I>Что значит сложно и зачем тебе здесь полиморфизм? Может быть пример в десять строчек приведешь?


Затем, чтобы юзер логгера не менял код логирования, если ему понадобится другой логгер, а только выбрал нужный в конфиге. Что тут непонятного?
С уважением, Анатолий Попов.
ICQ: 995-908
Re: Singleton
От: fmadness Беларусь  
Дата: 18.10.08 08:30
Оценка:
Здравствуйте, EyfelFenk, Вы писали:

EF>Народ подскжаите как в C# создать Singleton класс?


Ну например так.
public sealed class SingletonDemo
{
    private static readonly SingletonDemo _instance = new SingletonDemo();
    private SingletonDemo()
    {
    } 
    public static GetInstance
    {
        get
         {
             return _instance;
         }
    }
}
Re[6]: Singleton
От: Pavel M. Россия  
Дата: 18.10.08 10:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Pavel M., Вы писали:


PM>>1. Во-первых, ServiceLocator — паттерн, являющийся частью концепции EJB


AVK>Он используется в EJB, но точно так же используется и в куче других мест. И в BCL его реализация тоже есть.


Да? А где?

PM>> Не вижу больших минусов в использовании его в проектах малого-среднего размера.


AVK>Его это кого?


ServiceLocator вместо использования IoC реализаций, вроде Spring.NET, если в них до конца нет необходимости.
--------------------------
less think — do more
Re[7]: Singleton
От: Lloyd Россия  
Дата: 18.10.08 12:11
Оценка: 1 (1) +1
Здравствуйте, Pavel M., Вы писали:

AVK>>Он используется в EJB, но точно так же используется и в куче других мест. И в BCL его реализация тоже есть.


PM>Да? А где?


IServiceProvider, IServiceContainer, ServiceContainer
Re[5]: Singleton
От: drol  
Дата: 18.10.08 14:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Большинство теперешних контейнеров штука весьма специфичная и для всего подряд не очень подходит.


Вот именно поэтому я веду речь о вполне конкретном контейнере. А не о монстроидальных убожествах типа Castle, или там Unity. Их вот, лично я, вообще никуда и никогда не возьму
Re[8]: Singleton
От: Pavel M. Россия  
Дата: 18.10.08 16:57
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Pavel M., Вы писали:


AVK>>>Он используется в EJB, но точно так же используется и в куче других мест. И в BCL его реализация тоже есть.


PM>>Да? А где?


L>IServiceProvider, IServiceContainer, ServiceContainer


На самом деле там реализация простейшая и совсем не Singleton, так что разве что оттуда полезное, что интерфейс из стандартной библиотеки.
--------------------------
less think — do more
Re[6]: Singleton
От: Pavel M. Россия  
Дата: 18.10.08 17:00
Оценка:
Здравствуйте, drol, Вы писали:

D>Вот именно поэтому я веду речь о вполне конкретном контейнере. А не о монстроидальных убожествах типа Castle, или там Unity. Их вот, лично я, вообще никуда и никогда не возьму


А потом придется в чужом коде вылавливать баги. К сомнительным проектам нужно осторожнее относиться. "Монстры" чаще обновляются и фиксятся.
--------------------------
less think — do more
Re[10]: Singleton
От: _FRED_ Черногория
Дата: 18.10.08 19:21
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Я и не ратую за чрезмерное использование синглтонов. Один глобальный ServiceLocator — наш выбор.


А теперь посмотри, например, на Component Model во фреймворке (классы из System.ComponentModel). В многих их методах требуется IServiceProvider, но синглетона нигде нет, и все обходятся без него и не знаю ни одного примера, где бы это мешало. Всё дело в грамотном проектировании: есть IComponent, в котором есть Site (ISite: наследник IServiceProvider).

Site ни одному компоненту (из известных мне) ещё не помешал. Когда же требуется, он заботливо выставляется environment-ом и предоставляет доступ ко всему. А почти всё, что крутится вокруг обработки компонентов имеет доступ к какому-либо компоненту и, следовательно, к его сайту и сервисам. Там же, где компонентов в явном виде нет, в методы передаются _необходимые_ контексты (важно отметить, что контексты нужны независимо от того, есть у нас сервис-провайдер или нет), и какой-то ServiceProvider можно вытащить из такого контекста. Опять же проблем с тем, что "приходится что-то ненужное таскать повсюду" нет: всегда приходится что-то да таскать, передавать данные из одного кода в другой. Часть таких данных и мождно сделать IServiceProvider или любой другой контейнер. Даже то, что зачастую в методы передаётся "голый" IServiceProvider всё-таки не порит какртину, по крайней мере, никакого удивления\неприятия у мен оно не вызывало.
Help will always be given at Hogwarts to those who ask for it.
Re[10]: Singleton
От: _FRED_ Черногория
Дата: 18.10.08 19:30
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Я и не ратую за чрезмерное использование синглтонов. Один глобальный ServiceLocator — наш выбор.


Кстати, у вас же ASP, если не ошибаюсь: чем определяются границы "глобальности": доменом или чем-то ещё?
Help will always be given at Hogwarts to those who ask for it.
Re[9]: Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.10.08 22:12
Оценка:
Здравствуйте, Pavel M., Вы писали:

PM>На самом деле там реализация простейшая


Глядя на CommonServiceLocator, приходится признать, что это скорее плюс, чем минус.

PM> и совсем не Singleton


И слава богу. В BCL вообще немного синглтонов, особенно неувязанных с TLS.

PM>, так что разве что оттуда полезное, что интерфейс из стандартной библиотеки.


На базе этого интерфейса даже в самой BCL довольно много построено (в основном в System.ComponentModel)
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[6]: Singleton
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.10.08 22:12
Оценка:
Здравствуйте, drol, Вы писали:

D>Вот именно поэтому я веду речь о вполне конкретном контейнере.


Какой бы он не был конкретный, все одно его надо применять, если нужен именно контейнер, а не реализация service locator.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[15]: Singleton
От: igna Россия  
Дата: 19.10.08 07:28
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Затем, чтобы юзер логгера не менял код логирования, если ему понадобится другой логгер, а только выбрал нужный в конфиге.


OK, это аргумент. Правда не сказать, что решение дать пользователю возможность в конфигурационном файле задавать используемую библиотеку протоколирования является особо ортодоксальным.
Re[16]: Singleton
От: Aen Sidhe Россия Просто блог
Дата: 19.10.08 08:49
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Aen Sidhe, Вы писали:


AS>>Затем, чтобы юзер логгера не менял код логирования, если ему понадобится другой логгер, а только выбрал нужный в конфиге.


I>OK, это аргумент. Правда не сказать, что решение дать пользователю возможность в конфигурационном файле задавать используемую библиотеку протоколирования является особо ортодоксальным.



Это не user-scope настройка => при нормальной системе администрирования доступ к этой настройке имеет только системный администратор заказчика.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[17]: Singleton
От: igna Россия  
Дата: 19.10.08 08:55
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Это не user-scope настройка => при нормальной системе администрирования доступ к этой настройке имеет только системный администратор заказчика.


Тем не менее и решение дать администратору возможность в конфигурационном файле задавать используемую библиотеку протоколирования несколько необычно.
Re[6]: Singleton
От: Dog  
Дата: 20.10.08 07:41
Оценка:
AVK>>Большинство теперешних контейнеров штука весьма специфичная и для всего подряд не очень подходит.
D>Вот именно поэтому я веду речь о вполне конкретном контейнере. А не о монстроидальных убожествах типа Castle, или там Unity. Их вот, лично я, вообще никуда и никогда не возьму
Написали бы лучше сравнение Unity c Autofac. Был гораздо белее интресный аргумент.
... << RSDN@Home 1.2.0 alpha rev. 730>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.