WCF RIA через привязку Net.TCP?

Я пытаюсь улучшить производительность приложения Silverlight 4 WCF RIA. Поскольку он предназначен только для использования в интрасети, я решил, что переключение с двоичной HTTP-привязки по умолчанию на привязку Net.TCP может немного улучшить производительность.

Однако мне сложно получить простое доказательство работоспособности концептуального приложения. У меня есть:

  • переключил приложение Proof of Conecpt с Cassini на IIS (7)
  • добавлены соответствующие привязки и включенные протоколы в IIS
  • добавил файл clientaccesspolicy.xml в мой корень IIS

Теперь, когда я создаю такой контекст:

var context = new DomainService1(
new Uri(
    "net.tcp://localhost:4502/BusinessApplication/BusinessApplication2.Web/ClientBin/BusinessApplication2-Web-DomainService1.svc"));

... я получаю следующую ошибку:

The provided URI scheme 'net.tcp' is invalid; expected 'http'. Parameter name: via

Теперь я в тупике. Насколько я могу судить, проблема в том, что клиенту, создаваемому автоматически сгенерированным кодом WCF RIA, нужно сообщить, что он использует конечную точку Net.TCP, но я не уверен, как это сделать.

Я нашел множество сообщений в блогах, объясняющих, как заставить службы WCF работать через Net.TCP, но я не нашел ни одной, говорящей о WCF RIA, и я не могу найти никакой официальной документации. Все эти объяснения включают изменения в файле web.config, которые кажутся неподходящими для приложения WCF RIA.

Может ли кто-нибудь объяснить мне, как это настроить, или указать мне какую-то документацию?


person Duncan Bayne    schedule 17.08.2010    source источник
comment
Пока это не выглядит возможным: ... Службы RIA не поддерживают изменение (по крайней мере, не в соответствии с сообщением MS в другом потоке) типа привязки DomainContext. на forum.silverlight.net/forums/p/149151/332402.aspx.   -  person Duncan Bayne    schedule 18.08.2010


Ответы (1)


Службы WCF RIA зависят от HttpContext, который недоступен с привязкой Net.TCP.

Что касается проблем с производительностью, не могли бы вы рассказать немного подробнее? Что такое запрос / операция "узкое место"? Каков размер данных (размер объекта x количество объектов)? Какова разница между вашими требованиями к производительности и текущей производительностью?

Возможно, есть другие способы, не связанные с Net.TCP?

Спасибо.

Динеш

(Менеджер программы WCF RIA Services)

person Dinesh    schedule 18.08.2010
comment
Динеш, спасибо за ответ. Примерно 600 символов: мы получаем точки для диаграммы с сервера, затем вызываем сервер для выполнения статистических операций несколько раз, каждый раз получая новый набор точек. Это заменяет устаревшее приложение VBA, которое должно выполняться почти мгновенно из-за количества статистических операций, запрашиваемых в режиме реального времени. Задержка 30 мс оказалась приемлемой в тестах прототипа. Мы извлекаем от 30 до 100 объектов после каждой операции, всего около 12 КБ, согласно Fiddler. Текущее путешествие туда и обратно составляет ›100 мс. - person Duncan Bayne; 19.08.2010
comment
Да, и если вам интересно, мы не знали об абсолютных требованиях к производительности до, когда начали свой путь архитектуры WS. Оглядываясь назад, мы должны были создать прототипы с разной производительностью в первую очередь, тем самым определив некоторые точные цифры для требуемой производительности и включив их (в качестве автоматизированных тестов производительности?) С самого начала. - person Duncan Bayne; 19.08.2010