Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Разочаровывает производительность WCF / 8 сообщений из 8, страница 1 из 1
25.05.2010, 17:22
    #36648393
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочаровывает производительность WCF
Работал до сего момента с веб-проеrтами и там в проектах хостились http-хэндлеры для работы с бд - типа сервисы. их производительность была доли милисекунд при вызове со страницы при помощи JavaScript HttpWebRequest.

Написал простой WCF сервис который хостится в IIS7
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
namespace DALService
{
  [ServiceContract(Namespace = "DALService")]
  public interface  IService
  {
    [OperationContract(Name = "Hello")]
    string Hello(string name);
  }

  
  public class Service : IService
  {
    public string Hello(string name)
    {
      return "Hello" + ((name == null) ? "" : " " + name);
    }

  }

binding = basicHttpBinding

так вызов его с клиента занимает 508 милисекунд и это уже повторный вызов!!!!
почему так долго? этоже неприемлемо для нормальной работы!

что я делаю не так?
...
Рейтинг: 0 / 0
06.08.2010, 16:53
    #36779839
Artem Prudnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочаровывает производительность WCF
Да делал тест такая же фигня...
...
Рейтинг: 0 / 0
06.08.2010, 20:46
    #36780196
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочаровывает производительность WCF
spРаботал до сего момента с веб-проеrтами и там в проектах хостились http-хэндлеры для работы с бд - типа сервисы. их производительность была доли милисекунд при вызове со страницы при помощи JavaScript HttpWebRequest.

Написал простой WCF сервис который хостится в IIS7
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
namespace DALService
{
  [ServiceContract(Namespace = "DALService")]
  public interface  IService
  {
    [OperationContract(Name = "Hello")]
    string Hello(string name);
  }

  
  public class Service : IService
  {
    public string Hello(string name)
    {
      return "Hello" + ((name == null) ? "" : " " + name);
    }

  }

binding = basicHttpBinding

так вызов его с клиента занимает 508 милисекунд и это уже повторный вызов!!!!
почему так долго? этоже неприемлемо для нормальной работы!

что я делаю не так?

а если тот же сервис захостить под своим консольным приложением?
...
Рейтинг: 0 / 0
08.08.2010, 19:59
    #36781191
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочаровывает производительность WCF
sp,

WCF - "фундаментальная" среда, а "Написал простой WCF сервис" - это добрая дюжина (если не больше) параметров по-умолчанию со стороны WCF плюс "...вызов его с клиента занимает 508 милисекунд и это уже повторный вызов!!!!" (т.е. это не сотня/тыща клиентов и одновременных запросов от них - так?) - со стороны разработчика... так это...эээ... разве это тест?

для начала надо бы определиться что тестировать... WCF - множество разнообразных моделей (поведения сервиса), по-умолчанию WCF сервис - это новый (сервисный) объект на каждый вызов, "...там в проектах хостились http-хэндлеры для работы с бд - типа сервисы. их производительность была доли милисекунд..." - возможно это соответствует синглтону (в WCF), попробуй...
...
Рейтинг: 0 / 0
09.08.2010, 19:36
    #36782956
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочаровывает производительность WCF
LRsp,
для начала надо бы определиться что тестировать... WCF - множество разнообразных моделей (поведения сервиса), по-умолчанию WCF сервис - это новый (сервисный) объект на каждый вызов, "...там в проектах хостились http-хэндлеры для работы с бд - типа сервисы. их производительность была доли милисекунд..." - возможно это соответствует синглтону (в WCF), попробуй...

Спасибо, попробую
...
Рейтинг: 0 / 0
11.08.2010, 18:29
    #36786823
Leonid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочаровывает производительность WCF
Та же фигня :(

В смысле - полное разочарование в скорости работы WCF.

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

Использовал якобы "быстрый" NetTcpBinding.
Разве что только TransferMode установить в Streaming не удалось, поскольку совместно с "SessionMode = SessionMode.Required" эта хрень не пашет.

Для сравнения использовалось время получения того же результата путем прямого подключения через ADO.NET к удаленному SQL серверу, находящемуся на той же машине, где и т.н. сервер приложений с WCF.

Так вот скорость получения данных через WCF оказалась катастрофически низкой.
Она была в десятки раз медленее ( контретно в примере ~ 12 sec против ~ 200 ms )

Танцы с бубном вокруг настроек пока не помогли :(

Чувствую, что придется реализовывать свой собственный протокол обмена поверх TcpClient/TcpListner
Т.к. в аналогичном тесте скорость обмена уже сопоставима со скоростью прямого чтения через ADO.NET

Если здесь есть гуру по WCF, то pls откликнитесь на пару вопросов.
А-то может решение где-то рядом...
...
Рейтинг: 0 / 0
11.08.2010, 18:59
    #36786908
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочаровывает производительность WCF
народ чето не то у вас.
у меня правда хост на консольке.
но у меня по несколько транзакций пролетает в 1 мс.
...
Рейтинг: 0 / 0
22.08.2010, 17:22
    #36805061
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочаровывает производительность WCF
Leonid Та же фигня :(

В смысле - полное разочарование в скорости работы WCF.

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

Использовал якобы "быстрый" NetTcpBinding.
Разве что только TransferMode установить в Streaming не удалось, поскольку совместно с "SessionMode = SessionMode.Required" эта хрень не пашет.

Для сравнения использовалось время получения того же результата путем прямого подключения через ADO.NET к удаленному SQL серверу, находящемуся на той же машине, где и т.н. сервер приложений с WCF.

Так вот скорость получения данных через WCF оказалась катастрофически низкой.
Она была в десятки раз медленее ( контретно в примере ~ 12 sec против ~ 200 ms )

Танцы с бубном вокруг настроек пока не помогли :(

Чувствую, что придется реализовывать свой собственный протокол обмена поверх TcpClient/TcpListner
Т.к. в аналогичном тесте скорость обмена уже сопоставима со скоростью прямого чтения через ADO.NET

Если здесь есть гуру по WCF, то pls откликнитесь на пару вопросов.
А-то может решение где-то рядом...
ну это тогда не ситрим передача,
ничего бы не изменилось если бы передавали byte[]
насколько я понял для стрим передачи нужен именно стрим режим и передавать именно частями, т.е. для данных из базу нужно написать свой стримкласс, при чтении которого читался бы датаридер, а не тупо начитать данные, сериализовать в массив байт а потом передать, в этом нет смысла, точнее это получается не стримпередача.
стрим это типа return new FileStream("c:\test.rar"), а на клиенте читаешь.
Или я чего не понял?
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Разочаровывает производительность WCF / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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