【发布时间】:2012-01-23 18:47:09
【问题描述】:
这是我在一次采访中被问到的一个问题。
当你创建一个 WCF 服务时,你会得到两个文件; “IService.cs”和“Service.cs”。为什么它是实现接口的类而不是继承抽象类的类。不要回复说您不能将 [servicecontract] 属性放在抽象类上。我知道你只能将它应用于接口,但为什么呢?
【问题讨论】:
标签: wcf web-services servicecontract
这是我在一次采访中被问到的一个问题。
当你创建一个 WCF 服务时,你会得到两个文件; “IService.cs”和“Service.cs”。为什么它是实现接口的类而不是继承抽象类的类。不要回复说您不能将 [servicecontract] 属性放在抽象类上。我知道你只能将它应用于接口,但为什么呢?
【问题讨论】:
标签: wcf web-services servicecontract
一个人可以实现多个接口。只能继承一个抽象类。
【讨论】:
如果您将服务的实现指定为您已将客户端与服务紧密耦合的服务,WCF 会将客户端与服务完全分离。
【讨论】:
我能想到的几个原因:
[ServiceContract] 没有实现,为什么要浪费你拥有的一个继承槽呢?例如,我们所有的服务类都继承自一个抽象的ServiceBase 类,该类除了实现[ServiceContract] 接口外,还提供通用的上下文状态和方法。但是,即使不是这种情况,我仍然会保留基类插槽以供将来使用。[ServiceContract]。[ServiceContract],那么将服务类添加到同一继承树将毁掉它。【讨论】: