wcf servicecontract属性如何在内部工作

时间:2014-05-31 03:47:50

标签: wcf

我开发了wcf服务。我很想知道servicecontract属性如何在内部更改简单的接口或类,以便它可以暴露给外部世界。

我想知道它如何更改类或接口的默认结构?

1 个答案:

答案 0 :(得分:1)

为了理解ServiceContractAttribute在WCF上下文中扮演的角色,首先要了解基于属性的编程在.NET中的作用是很重要的。

通过将属性应用于程序中的某个实体,您将其他元数据嵌入到该类型,成员等的程序集中。但它基本上没用一个软件使用反射来查询该信息。

应用ServiceContractAttribute时,您要添加元数据以指示接口(或类)定义服务合同。使用此属性,您还可以通过设置各种属性(NameNamespaceProtectionLevel等)来控制生成的元数据的内容。此信息向WCF运行时发出信号,告知如何生成所需的元数据和WSDL,以查找合同支持的操作以及管理来自客户端的实际运行时调用。

此属性发出的元数据有几个额外的奖励。一个典型的例子是运行时检查,以查看合同指定的ProtectionLevel是否被配置的绑定所尊重。想象一下,如果服务合同指定ProtectionLevel.EncryptAndSign并且绑定设置为使用BasicHttpSecurityMode.None - 这可能是一种可能暴露敏感信息的灾难。