1

我创建了一个 WCF 服务并通过自托管来托管它。此服务未发布任何元数据。

第一个问题

  1. 我可以通过 Visual Studio 使用它,添加服务参考吗?希望不会。
  2. 我可以通过创建手动代理来使用它,即ChannelFactory<ServiceContract>......吗?希望是的。

现在在第二种情况下,客户端必须是.Net,对吗?

所以这意味着,要在非.net 平台上使用 wcf 服务,我们必须公开它的元数据?

没有元数据的 WCF 服务不能被 Ajax 客户端消费,或者说 Java 客户端吗?

4

2 回答 2

3

使用 WCF 服务有 3 个选项:

  1. 如果服务公开了 WSDL,请使用 VS(或其他平台的等效项)中的“添加服务引用”。请注意,如果您不想公开 WSDL,您可以暂时公开它,将 WSDL 保存在文件中,然后将其发送给任何平台中的用户以从中生成代理。您可以在保存 WSDL 后立即关闭它。另请注意,即使 WSDL 未公开,您仍需要保护 Web 服务免受未经授权的访问。

  2. 如果这是一个 .Net 客户端,它可以使用相同的服务合同程序集进行编译并使用 ChannelFactory 等。

  3. 任何平台都可以向服务发送原始soap 消息(例如XML)。当然,他们需要知道什么是正确的格式。WSDL 可以提供帮助,但即使没有它,如果他们有一个工作示例,他们也可以模仿它。

于 2013-04-22T17:51:49.427 回答
1

WCF 提供 REST(表示状态传输)支持,以供非 .NET 客户端(如 JavaScript (AJAX)、java、Objective C、Web 浏览器等)使用它...

基本上,WCF REST 通过 HTTP 协议公开方法和传输数据,它支持所有 HTTP 操作(GET、POST、PUT 和 DELETE)。此功能使其独立于平台,并且不需要公开元数据。

请参考以下链接以获取有关 WCF REST 的更多信息:

使用 WCF 介绍 RESTful 服务

WCF REST 编程模型概述

WCF 休息与 WCF SOAP

创建 RESTful WCF 服务 API:分步指南

于 2013-04-23T05:20:10.797 回答