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

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

Хотя, хорошим тоном будет отнаследовать.
...
Рейтинг: 0 / 0
Работа с большим количеством контрактов
    #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
Работа с большим количеством контрактов
    #36844220
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее да.
Но, повторюсь, многое зависит от настроек инстанса Сервера.
...
Рейтинг: 0 / 0
Работа с большим количеством контрактов
    #36844992
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sladkov,

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

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

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

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

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

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

Но 20 сервисов - это перебор, конечно. Замучаетесь адреса придумывать :)
...
Рейтинг: 0 / 0
Работа с большим количеством контрактов
    #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
8 сообщений из 8, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Работа с большим количеством контрактов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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