在非.NET平台上使用WCF服务(没有元数据)

时间:2013-04-22 17:20:40

标签: wcf metadata

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

第一个问题

  1. 我可以通过Visual Studio,添加服务参考来使用它吗?希望不是。
  2. 我可以通过创建手动代理来消费它,即ChannelFactory<ServiceContract> ....?希望是的。
  3. 现在在第二种情况下,客户端必须是.Net,对吗?

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

    没有元数据的WCF服务,不能使用Ajax客户端,或者说Java客户端?

2 个答案:

答案 0 :(得分:2)

使用WCF服务有3个选项:

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

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

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

答案 1 :(得分:1)

WCF提供REST(Representational State Transfer)支持,以便非JavaScript客户端使用它,如JavaScript(AJAX),Java,Objective C,Web浏览器等......

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

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

An Introduction To RESTful Services With WCF

WCF REST Programming Model Overview

WCF Rest vs. WCF SOAP

Create RESTful WCF Service API: Step By Step Guide