что происходит на фоне хостинга отдыхающего веб-сервиса с использованием wcf - PullRequest
0 голосов
/ 17 июня 2011

Я пытался понять, что происходит в фоновом режиме, когда я пишу следующий фрагмент кода для размещения веб-службы REST в WCF:

RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(),
                                       typeof(MyConcreteService)));

Кроме того, определение класса выглядит примерно так:

public class MyConcreteService : IService

, где IService определяет ServiceContract и OperationContract с WebGET и т. Д.

При настройке маршрутов я нигде не упоминаю IService.Как сервер узнает, какие контракты использовать?Может кто-нибудь разобрать секрет, который происходит в фоновом режиме, который заставляет веб-сервис работать?

1 Ответ

3 голосов
/ 17 июня 2011

WebServiceHostFactory возвращает экземпляр WebServiceHost.Этот класс увидит, украшен ли сам класс обслуживания [ServiceContract] - если это так, он будет использовать его в качестве типа контракта.В противном случае он будет искать интерфейсы, реализованные классом обслуживания, чтобы увидеть, какие из них украшены [ServiceContract].Если он находит только один (что имеет место в вашем примере), то это будет тот, который используется в качестве типа контракта.Если он находит 0 или больше 1, он должен выдать исключение.

Имея тип контракта, WebServiceHost добавит конечную точку с этим типом контракта, соответствующую привязку (WebHttpBinding) и пустой родственникадрес.Это также добавит соответствующее поведение для веб-конечных точек (WebHttpBehavior).Это по сути это;он может выполнять другие функции, такие как настройка сопоставителя типов контента, если это необходимо, и т. д., но прелесть класса WebServiceHost (и WebServiceHostFactory) в том, что вам не нужно знать об этом (в большинстве случаев).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...