|
Работа с большим количеством контрактов
|
|||
---|---|---|---|
#18+
Разрабатываю сервер приложений. Планируется более 20 контрактов. Имеет ли смысл с точки зрения потребляемых ресурсов сделать один контракт(интерфейс), который будет наследоваться от всех этих контрактов и соответственно сделать один endpoint у сервиса? Я так понимаю, если будет много endpoint'ов, то клиент будет открывать отдельное соединение для каждого контракта, а в случае одного суперконтракта я смогу из него получить любой интерфейс и сэкономить на количестве соединений. Что скажете? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 17:15 |
|
Работа с большим количеством контрактов
|
|||
---|---|---|---|
#18+
От перестановки мест слагаемых сумма не меняется. Конечные точки и производительность никак не связаны. Производительность зависит от управления экземплярами службы и запросами. Хотя, хорошим тоном будет отнаследовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 17:31 |
|
Работа с большим количеством контрактов
|
|||
---|---|---|---|
#18+
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; В первом случае мы создали два канала. Во втором - один. Я так понимаю что под каналом находится реальное физич. соединение(сокет). Во втором случае тогда получается выигрыш, так как я планирую не закрывать каналы после каждого вызова, а держать открытыми - кстати правильно ли это? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 17:53 |
|
Работа с большим количеством контрактов
|
|||
---|---|---|---|
#18+
По идее да. Но, повторюсь, многое зависит от настроек инстанса Сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 18:40 |
|
Работа с большим количеством контрактов
|
|||
---|---|---|---|
#18+
sladkov, понятие канал есть только в реальном мире :) в компьютерном,это просто на одном конце пушка стреляющая зарядами с идентификатором, а на другом конце ловушка для зарядов, различающая их по идентификатору. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2010, 11:05 |
|
Работа с большим количеством контрактов
|
|||
---|---|---|---|
#18+
AlexeiKsladkov, понятие канал есть только в реальном мире :) в компьютерном,это просто на одном конце пушка стреляющая зарядами с идентификатором, а на другом конце ловушка для зарядов, различающая их по идентификатору. Понятие существует только в голове, а не в реальном мире. И тот "реальный" канал, про который ты говоришь, еще менее реален, чем компьютерный, так состоит из пустоты, окруженной материей - бетоном или землей. Назвать его реальным, это все равно, что признать объективное существование дырки в бублике или дорожную яму. С другой стороны все вещи - "реальные" и компьютерные существует лишь в сознании, что делает их равнозначными. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2010, 14:38 |
|
Работа с большим количеством контрактов
|
|||
---|---|---|---|
#18+
sladkovотдельное соединение для каждого контракта, а в случае одного суперконтракта я смогу из него получить любой интерфейс и сэкономить на количестве соединений. Что скажете? Нужен баланс. Причем главное - чтобы было просто читать код - на разбор завалов (что с сотней мелких сервисов, что с одним гигантским) уходит намного больше времени, чем на открытие-закрытие соединений. К тому же - много мелких соединений - это совсем не плохо. Есть же пулл соединений - по умолчанию довольно большой. А можно и еще увеличить. По опыту - увеличивать настройки WCF - безопасно. Код, который занимается ресурсами и буфферами сообщений - никогда не отьест больше, чем реально используется. А изменить настройки - всегда можно потом. Но 20 сервисов - это перебор, конечно. Замучаетесь адреса придумывать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2010, 11:30 |
|
Работа с большим количеством контрактов
|
|||
---|---|---|---|
#18+
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: ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2010, 22:11 |
|
|
start [/forum/topic.php?fid=19&fpage=24&tid=1397581]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 153ms |
0 / 0 |