我开发了wcf服务。我很想知道servicecontract属性如何在内部更改简单的接口或类,以便它可以暴露给外部世界。
我想知道它如何更改类或接口的默认结构?
答案 0 :(得分:1)
为了理解ServiceContractAttribute
在WCF上下文中扮演的角色,首先要了解基于属性的编程在.NET中的作用是很重要的。
通过将属性应用于程序中的某个实体,您将其他元数据嵌入到该类型,成员等的程序集中。但它基本上没用一个软件使用反射来查询该信息。
应用ServiceContractAttribute
时,您要添加元数据以指示接口(或类)定义服务合同。使用此属性,您还可以通过设置各种属性(Name
,Namespace
,ProtectionLevel
等)来控制生成的元数据的内容。此信息向WCF运行时发出信号,告知如何生成所需的元数据和WSDL,以查找合同支持的操作以及管理来自客户端的实际运行时调用。
此属性发出的元数据有几个额外的奖励。一个典型的例子是运行时检查,以查看合同指定的ProtectionLevel
是否被配置的绑定所尊重。想象一下,如果服务合同指定ProtectionLevel.EncryptAndSign
并且绑定设置为使用BasicHttpSecurityMode.None
- 这可能是一种可能暴露敏感信息的灾难。