powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Конструктор классы службы.
13 сообщений из 13, страница 1 из 1
Конструктор классы службы.
    #38058990
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто знает как WCF инстанцирует класс службы ? Каждый раз или один раз при первом обращении ? К чему вопрос ? Надо инициализировать некоторые статические данные. Хочу сделать это в конструкторе. Это гуд или глупость ?
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38059053
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2,

это ты сам задаешь с помощью атрибута ServiceBehavior и его свойства InstanceContextMode
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38059083
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,

Спасибо дружище.
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38059353
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2статические данные
Вот это часто бывает бэд, независимо от того, где их инициализировать.
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38060629
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtor,
У меня мало опыта работы со службами, поэтому пока не все тонкости исследованы. Но в данном случае, храниться минимальный набор данных. Совсем чуть-чуть.
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38060964
PropertSys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно использовать синглетную службу
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
class MySingleton:
{.....}
но....синглетная служба - заклятый враг масштабируемости. в любой момент времени с синглетом может работать только один клиент. например, если операция с синглетом занимает 1/10 секунды, то синглет сможет обслуживать только 10 клиентов в секунду синглетные службы неприемлемы для систем сколько-нибудь нормального размера. Лёве рекомендует по возможности избегать синглетов и поискать средства совместного использования состояния синглета вместо самого синглетного экземпляра. Но могут быть случаи, в которых применение синглетных экземпляров оправдано.
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38061023
PropertSys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос возник. Лёве или Лоуи, как правильней??? ) (Juval Lowy)
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38061520
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PropertSysвопрос возник. Лёве или Лоуи, как правильней??? ) (Juval Lowy)

Правильней будет читать до конца. Есть еще конкурентный режим ConcurrencyMode.Multiple, в котором не делается синхронизация контекста и никаких очередей вызова не будет
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38062061
PropertSys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVa,

благими намерениями вымощена дорога в ад. дочитаю.
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38064641
PropertSys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVa,

при использовании ConcurrencyMode.Multiple в случае синглетной службы необходимо обязательно устанавливать атрибут ReleaseServiceInstanceOnTransactionComplete=false (по умолчанию true)

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single),
СoncurrencyMode=ConcurrencyMode.Multiple,
ReleaseServiceInstanceOnTransactionComplete=false
]
class MySingleton: MySingletonIsTrueAnswer
{.....}
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38064722
PropertSys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtorthunder2статические данные
Вот это часто бывает бэд, независимо от того, где их инициализировать.

Но вот это тоже резонно. Lowy рекомендует использовать Single и PerSession - only if you need, а PerCall - everyways.
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38075081
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2 Надо инициализировать некоторые статические данные.

Не нужно этого делать.

При создании сервиса добавь свои данные в описание хоста

Код: c#
1.
2.
3.
4.
   MyServiceBehavior sharedData = new MyServiceBehavior();
   ServiceHost host = new ServiceHost(typeof(MyService));
   host.Description.Add(sharedData);
   host.Open();



и потом в сервисе доставай их из контекста операции:

Код: c#
1.
MyServiceBehavior sharedData = OperationContext.Current.Host.Description.Behaviors.Find<MyServiceBehavior>();



как-то так
...
Рейтинг: 0 / 0
Конструктор классы службы.
    #38076865
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюдthunder2 Надо инициализировать некоторые статические данные.

Не нужно этого делать.

При создании сервиса добавь свои данные в описание хоста

Код: c#
1.
2.
3.
4.
   MyServiceBehavior sharedData = new MyServiceBehavior();
   ServiceHost host = new ServiceHost(typeof(MyService));
   host.Description.Add(sharedData);
   host.Open();



и потом в сервисе доставай их из контекста операции:

Код: c#
1.
MyServiceBehavior sharedData = OperationContext.Current.Host.Description.Behaviors.Find<MyServiceBehavior>();



как-то так

По мне, если Behavior, то уж лучше взять готовые для unity или mef
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Конструктор классы службы.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]