Ответы пользователя по тегу WCF
  • Почему функция объявленная на сервере как асинхронная генерируется на клиенте как синхронная?

    @mayorovp
    По поводу "что за фингя" - это нормально. Дело в том, что за передаваемые по сети данные отвечает только тип double, а Task - это лишь способ вызова (синхронный или асинхронный).

    Можно поискать в настройках Service Reference ключик, который отвечает за генерацию интерфейсов обратного вызова. Я точно не помню, можно ли этим управлять.

    Другой вариант, на случай если не найдете - просто исправьте double на Task<double> вручную.
    Ответ написан
    3 комментария
  • Как заменить стандартный JSONSerializer на JSON.Net в WCF сервисе?

    @mayorovp
    Ничего там не изменилось. Варианта проще нет - просто потому что тот вариант и так очень простой.
    Ответ написан
    Комментировать
  • Каких граблей стоит избегать при проектировании пошаговой клиент-серверной компьютерной игры?

    @mayorovp
    Начну с ответа на ответ выше. Remoting - это не очень-то и красивое решение, его абстракции всюду текут. "Расшаривание" объекта по сети приводит к сложности с определением времени жизни объекта, а простота вызовов методов соблазняет делать кучу мелких запросов вместо одного крупного - что неизбежно приведет к тормозам.

    WCF - идеальное решение. Оно куда проще, чем правильная работа с сокетами - и не страдает недостатками Remoting.

    Транспорт в этой задаче лучше использовать NetTcp - на нем проще реализуется двусторонняя связь. Соединение с клиентом можно поддерживать средствами ReliableSession - тут только выставьте правильные тайм-ауты, а то результат будет странным. Так, тайм-аут на чтение тут лучше поставить вообще бесконечным, а время жизни сессии, напротив, небольшим.
    Ответ написан
    3 комментария
  • Есть ли хорошие примеры Echo сервера на базе WCF службы и простого консольного Echo клиента?

    @mayorovp
    Для такой задачи затруднительно написать нерабочий пример. Вероятно, все примеры были рабочими, только вот вы не смогли их запустить.

    Сложности с запуском - на стороне сервера. Если вы используете http биндинг, то self-hosted сервису нужны права на прослушиваемый URL - а asp.net-hosted сервису нужен, собственно, работающий asp.net сайт, которому, в свою очередь, нужен веб-сервер.

    Приводите конкретный "нерабочий" пример - будем разбираться, что там не работает.
    Ответ написан
    Комментировать
  • Как с помощью ajax отправить данные службе RestFul?

    @mayorovp
    Проблема в том, что вы пытаетесь сделать кросс-доменный запрос, к тому же небезопасный (не являющийся GET или простым POST). Вероятно, это из-за того, что вы указали Content-Type.

    Для того, чтобы такой запрос мог быть сделан браузером, сервер должен уметь обрабатывать запрос OPTIONS, отвечая на него корректным заголовком Access-Control-Allow-Headers (ну и Access-Control-Allow-Origin, конечно же).

    По запросу "wcf rest options request" в гугле первая же ссылка ведет на вот этовот это. Не самое аккуратное решение (я бы лучше повесил обработку запроса OPTIONS и выдачу заголовков CORS на какой-нибудь атрибут уровня класса) - но и оно сойдет.

    PS осторожнее с этим решением - фактически, оно выключает защиту от CORS. Не следует держать приватное API и "обычные" веб-страницы в одном проекте с публичным API.
    Ответ написан
  • Как отладить падающую службу

    @mayorovp
    1. Попробуйте сделать self-host-службу. На ней такой проблемы не может быть по определению.

    2. Если вам нужно подключить к службе отладчик, но вы не успеваете это сделать из-за падения службы, то найдите в службе точку, которая однозначно успевает выполняется (скорее всего, это будет какой-нибудь конструктор), и добавьте туда код Debugger.Attach()
    Ответ написан