Если у вас есть клиенты, которые не являются .NET (например, Java или PHP), ChannelFactory
не будет работать для них, как это характерно для .NET и WCF. В этом случае вам нужно будет либо опубликовать метаданные, либо отправить клиенту WSDL, чтобы они могли создавать прокси-сервер, используя любой способ выбора языка (я мало знаю о Java, PHP и т. Д. t сказать гораздо больше, чем это окончательно).
Что касается использования ChannelFactory
, я предполагаю, что вы говорите о ChannelFactory<T>
, так как ChannelFactory
сам является абстрактным классом и не может быть создан. Использование фабрики каналов дает большую степень контроля (как указывали другие) - для ChannelFactory<T>
клиенту потребуется контракт на обслуживание (интерфейс, а не реализация), поэтому либо с использованием общей сборки, доступной каждому, либо для предоставления интерфейса клиентам это два простых способа достичь этого.
Вы можете отключить публикацию метаданных (WSDL,), повернув httpGetEnabled
к «ложным» в файле конфигурации в <serviceMetadata>
тег:
<system.serviceModel>
<behaviors>
<serviceBehavior>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
</behavior>
</serviceBehavior>
</behaviors>
</system.serviceModel>
Вы бы затем ссылаться на это поведение, установив атрибут в конечной точке элемента behaviorConfiguration
к "MyServiceBehavior".
Вы также должны удалить конечные точки mex
, поскольку (на основе моего понимания) это новый способ для веб-сервисов разоблачить их метаданные. Если метаданные не отображаются, клиенты не могут создать прокси-сервер через WSDL и должны будут сделать это другим методом. Клиенты .NET специально не смогут использовать ссылку «Добавить службу».
Наконец, если вас беспокоит доступ к вашей службе, вы должны действительно реализовать какую-то схему аутентификации. Если вы просто хотите отключить публикацию метаданных (выставляете), то установите httpGetEnabled
на false и удалите любые конечные точки mex, чтобы сделать трюк.
_ «если другие люди знают мой URL-адрес службы, то они не смогут добавить мою службу в качестве ссылки на ссылку на услугу [...] Я хочу, чтобы другие люди не могли создавать прокси на своем конце, если они знают мою службу url "_ - **" Добавить ссылку на службу "также генерирует прокси-сервер **. Кажется, вы задаете неправильный вопрос. Что ты пытаешься сделать? Из вашей истории вопроса я настоятельно рекомендую вам забрать книгу WCF или учебный курс, так как вам, похоже, трудно понять основные понятия. – CodeCaster