这是我在面试中被问到的一个问题。
当您创建一个WCF服务时,您会得到两个文件:"IService.cs"和"Service.cs"。为什么是实现接口的类而不是继承抽象类的类。不要回答说您不能在抽象类上放置[servicecontract]属性。我知道您只能将其应用于接口,但为什么?
这是我在面试中被问到的一个问题。
当您创建一个WCF服务时,您会得到两个文件:"IService.cs"和"Service.cs"。为什么是实现接口的类而不是继承抽象类的类。不要回答说您不能在抽象类上放置[servicecontract]属性。我知道您只能将其应用于接口,但为什么?
一个类可以实现多个接口。但只能继承一个抽象类。
WCF完全将客户端与服务解耦,如果您指定服务的实现作为服务,那么您已经将客户端紧密地耦合到了服务。
我能想到几个原因:
[ServiceContract]
没有实现,为什么要浪费你唯一的继承位置呢?例如,我们所有的服务类都继承自一个抽象的ServiceBase
类,它提供了公共上下文状态和方法,此外还实现了[ServiceContract]
接口。然而,即使不是这种情况,我也会保留基类位置以备将来使用。[ServiceContract]
。[ServiceContract]
继承的严格合同版本控制系统,则将服务类添加到同一继承树中将破坏它。