【问题标题】:Is it possible to create a WCFService Contract using a class only (no interface)? [duplicate]是否可以仅使用类(无接口)创建 WCFService 合同? [复制]
【发布时间】:2013-10-10 18:39:21
【问题描述】:

在不创建接口的情况下,我们也可以通过将Contract放在实现的类中直接创建服务。那么为什么我们在WCF中创建接口。

[ServiceContract()]
public class SimpleCal
{
  [OperationContract()]
  public int Add(int num1, int num2)
  {
    return num1 + num2;
  }
}

更新 “我为什么要避免使用接口?只使用类有什么好处?”

【问题讨论】:

  • 我已经阅读了那篇文章,但我不满意'WCF 将客户端与服务完全分离,如果您将服务的实现指定为服务,您将客户端与服务紧密耦合。 '这是什么意思??

标签: c# asp.net wcf


【解决方案1】:

简单的答案:不。

使用接口是一般的开发良好实践。它在这里被强制执行,因为 ServiceContract 只是服务根据“方法”向客户提供的内容的“声明”。实现与它无关,因此,没有必要将实现“耦合”到服务契约。

另外,如果你看一下接口的定义(source):

[...] 术语“接口”通常用于定义抽象类型 不包含数据,但公开定义为方法的行为。

这正是 ServiceContract 所做的。要问自己的真正问题应该是:

“我为什么要避免使用接口?只使用类有什么好处?”

附加说明:如果您想查看最有用(在我看来)的接口应用程序之一,您应该看看这个:http://martinfowler.com/articles/injection.html

【讨论】:

    猜你喜欢
    • 2020-08-26
    • 2011-03-11
    • 2019-03-19
    • 2011-01-08
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多