powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Разочаровывает производительность WCF
8 сообщений из 8, страница 1 из 1
Разочаровывает производительность WCF
    #36648393
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
Разочаровывает производительность WCF
    #36779839
Artem Prudnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да делал тест такая же фигня...
...
Рейтинг: 0 / 0
Разочаровывает производительность WCF
    #36780196
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Разочаровывает производительность WCF
    #36781191
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

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

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

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


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