Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Работа с большим количеством контрактов / 8 сообщений из 8, страница 1 из 1
13.09.2010, 17:15
    #36844028
sladkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим количеством контрактов
Разрабатываю сервер приложений. Планируется более 20 контрактов.
Имеет ли смысл с точки зрения потребляемых ресурсов сделать один контракт(интерфейс),
который будет наследоваться от всех этих контрактов и соответственно сделать
один endpoint у сервиса?
Я так понимаю, если будет много endpoint'ов, то клиент будет открывать отдельное соединение для каждого контракта, а в случае одного суперконтракта я смогу из него получить любой интерфейс и сэкономить на количестве соединений. Что скажете?
...
Рейтинг: 0 / 0
13.09.2010, 17:31
    #36844069
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим количеством контрактов
От перестановки мест слагаемых сумма не меняется.
Конечные точки и производительность никак не связаны.

Производительность зависит от управления экземплярами службы и запросами.

Хотя, хорошим тоном будет отнаследовать.
...
Рейтинг: 0 / 0
13.09.2010, 17:53
    #36844127
sladkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим количеством контрактов
buredОт перестановки мест слагаемых сумма не меняется.
Конечные точки и производительность никак не связаны.

Производительность зависит от управления экземплярами службы и запросами.

Хотя, хорошим тоном будет отнаследовать.

Ну, рассмотрим оба случая на клиенте

public interface IContract1
{
void doSomthing1();
}

public interface IContract2
{
void doSomthing2();
}

public interface IMyService : IContract1, IContract2
{
}

// случай 1
ChannelFactory<IContract1> cf1 =
new ChannelFactory<IContract1>("Contract1");
IContract1 contract1 = cf1.CreateChannel();
ChannelFactory<IContract2> cf2 =
new ChannelFactory<IContract2>("Contract2");
IContract2 contract2 = cf2.CreateChannel();

// случай 2
ChannelFactory<IMyService> cf0 =
new ChannelFactory<IMyService>("MyService");
IMyService myService = cf0.CreateChannel();
IContract1 contract01 = myService;
IContract1 contract02 = myService;


В первом случае мы создали два канала. Во втором - один.
Я так понимаю что под каналом находится реальное физич. соединение(сокет). Во втором случае тогда получается выигрыш, так как я планирую не закрывать каналы после каждого вызова, а держать открытыми - кстати правильно ли это?
...
Рейтинг: 0 / 0
13.09.2010, 18:40
    #36844220
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим количеством контрактов
По идее да.
Но, повторюсь, многое зависит от настроек инстанса Сервера.
...
Рейтинг: 0 / 0
14.09.2010, 11:05
    #36844992
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим количеством контрактов
sladkov,

понятие канал есть только в реальном мире :)
в компьютерном,это просто на одном конце пушка стреляющая зарядами с идентификатором, а на другом конце ловушка для зарядов, различающая их по идентификатору.
...
Рейтинг: 0 / 0
14.09.2010, 14:38
    #36845561
sladkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим количеством контрактов
AlexeiKsladkov,

понятие канал есть только в реальном мире :)
в компьютерном,это просто на одном конце пушка стреляющая зарядами с идентификатором, а на другом конце ловушка для зарядов, различающая их по идентификатору.

Понятие существует только в голове, а не в реальном мире. И тот "реальный" канал, про который ты говоришь, еще менее реален, чем компьютерный, так состоит из пустоты, окруженной материей - бетоном или землей. Назвать его реальным, это все равно, что признать объективное существование дырки в бублике или дорожную яму. С другой стороны все вещи - "реальные" и компьютерные существует лишь в сознании, что делает их равнозначными.
...
Рейтинг: 0 / 0
03.10.2010, 11:30
    #36878927
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим количеством контрактов
sladkovотдельное соединение для каждого контракта, а в случае одного суперконтракта я смогу из него получить любой интерфейс и сэкономить на количестве соединений. Что скажете?

Нужен баланс. Причем главное - чтобы было просто читать код - на разбор завалов (что с сотней мелких сервисов, что с одним гигантским) уходит намного больше времени, чем на открытие-закрытие соединений.

К тому же - много мелких соединений - это совсем не плохо. Есть же пулл соединений - по умолчанию довольно большой. А можно и еще увеличить.

По опыту - увеличивать настройки WCF - безопасно. Код, который занимается ресурсами и буфферами сообщений - никогда не отьест больше, чем реально используется.
А изменить настройки - всегда можно потом.

Но 20 сервисов - это перебор, конечно. Замучаетесь адреса придумывать :)
...
Рейтинг: 0 / 0
03.10.2010, 22:11
    #36879318
GOAL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим количеством контрактов
sladkov,

Возможно это то, что доктор прописал - Creating Routing Service using WCF 4.0, .NET Framework 4.0 and Visual Studio 2010 RC

Из статьиRouting provides the mechanism of isolating one or more WCF services directly accessible from the client application. Client application have knowledge of only one WCF service which further routes call from the client to the specific WCF service, based upon filters. The architecture can be described as shown below:
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Работа с большим количеством контрактов / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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