Доступ к localhost WCF с другого устройства?

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

Я понимаю, что веб-сервис Cassini является только локальным, я хочу иметь возможность запускать службу WCF в моей системе клиентов, когда им нужна эта услуга в моем настольном приложении.

Кто-нибудь знает простой способ сделать это без того, чтобы клиент установил что-то большее, чем .NET Framework?

Спасибо

Ответ 1

Используйте самостоятельный хостинг для размещения в вашем собственном приложении/службе. Если у вас уже есть служба WCF, должно быть просто создать службу Windows и разместить ее там (см. Ссылку).

Ответ 2

WCF не нуждается в веб-сервере для размещения службы. Однако что-то должно быть запущено, либо приложение консоли/хоста, либо служба Windows. Затем при запуске он может открыть службу, создав экземпляр класса ServiceHost. См. Образец MSDN в http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost.aspx

Ответ 3

Чтобы запустить службу WCF, вам нужен хост-процесс. Нет никакого способа обойти это.

Если хост-процесс может (в зависимости от того, какие требования, модель развертывания, ограничения сети и т.д. применимы к вашему делу), будет таким же, как и ваше настольное приложение, а затем внедрить службу в ваше настольное приложение. Этот метод называется хостингом WCF in-proc. Это в основном "Self Hosting" - это сервис в клиентском приложении. Если вы примете это решение, используйте привязку IPC (net.pipe), поскольку это более оптимально, и устраните все возможные проблемы с сетью/брандмауэром.

Если служба должна быть запущена на другом компьютере или в другом процессе, вам необходимо использовать или реализовать приложение-хост. IIS, WAS, AppFabric и WCFServiceHost (не хост производственного класса) являются примерами готовых к использованию хостов, которые вы можете использовать. Если вы не можете или не хотите их использовать, вам нужно будет реализовать свое собственное хост-приложение и "Self Host" в нем службу WCF. Ваше приложение может быть любым: консоль, рабочий стол, служба Windows и т.д. Если вы не хотите, чтобы пользователи беспокоились о том, как и когда запускать хост, убедитесь, что он работает в любое время. Рекомендуется использовать службу Windows, которая запускается автоматически.

Если служба должна быть запущена на компьютере, отличном от клиента, убедитесь, что все сетевые устройства и программное обеспечение (брандмауэры, маршрутизаторы, шлюзы и т.д.) между сервером и клиентом настроены правильно для привязки к Работа. Будьте в курсе протокола (http, tcp и т.д.) И порта (80, 443, 808 и т.д.), На которое действует привязка.

Ответ 4

Вы можете попробовать сделать шаг хостинга из следующей статьи.

http://www.codeproject.com/Articles/34668/GeoPlaces-Hybrid-smart-client-involving-RESTful-WC

Чтобы проверить свою услугу, сделайте запрос к ней и проверьте ответ. Иногда вы не сможете загрузить WSDL, если вы не выставили метаданные своих сервисов.

Бирс!

Ответ 5

Здесь может быть предложение, если оно не подходит, пожалуйста, проигнорируйте его: используйте самообслуживание, как указано в @driis. Это ваш лучший вариант для вашего сценария. О размещении HTML-страницы внутри вашей службы WCF... да, это возможно, но это не простое решение. Чтобы подвести итог в одном предложении, вам необходимо создать свой собственный формирователь сообщений и обойти по умолчанию, предоставленный WCF. Вы должны создать HtmlBehavior, который должен наследовать от WebHttpBehavior, HtmlBehaviorExtension, который должен наследовать от BehaviorExtensionElement и, наконец, HtmlFormater, который будет реализовывать IDispatchMessageFormatter. На следующей ссылке вы найдете замечательную статью о пользовательских форматах: http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspx