【问题标题】:WCF and one function to rule them all?WCF 和一个功能来统治它们?
【发布时间】:2014-08-07 10:36:24
【问题描述】:

这是一个架构问题。

我们有一个客户端-服务器的情况。我们希望摆脱远程桌面解决方案(如 Citrix、Propalms 等)。 SOA 似乎是解决方案。出于安全考虑,我们不能使用直接 SQL 连接。

因此,我们使用一个函数创建了一个 WCF Web 服务,该函数可以将查询(作为字符串)作为参数,然后返回一个带有该查询结果的字符串。我们所有的软件都会通过抛出查询(作为字符串)并等待结果(字符串)来简单地调用这个函数。

客户端 exe 知道这个结果是什么样子,因为它发出了调用,所以让客户端 exe 担心这一点。具体来说,它将是一段 XML,它将描述带有查询返回数据的列和行。而且因为这都是我们自己的软件,所以我们在内部就 XML 的格式达成了一致。

我的问题是:你们预见到这个解决方案有什么问题吗?

【问题讨论】:

  • 这与远程桌面有什么关系?您今天有人手动执行此操作吗?
  • 这个方法看起来就像另一个包装数据的通信层。数据还需要解析,为什么还要再添加一个无用的“虚拟”层呢?
  • 我已经更新了我的原始帖子,应该可以回答您的问题。

标签: .net wcf architecture


【解决方案1】:

这种方法被称为“过度泛型接口”,是一种反模式。

这种方法几乎避免了 WCF 为您提供的所有好处:格式化/解析、版本控制、生命周期管理和拦截(用于语义日志记录等)。它还防止客户端代码的可发现性 (IntelliSense) 和编译时检查,并鼓励客户端上的魔术字符串和服务器上的上帝对象设计。此外,使用本身必须编码到实际消息中的完整字符串会增加开销。

这种方法没有任何真正的好处。 似乎有一些好处 - 例如无需重新编译客户端即可更改 API 的能力。但这些实际上是缺点:如果 API 发生更改,您希望依赖旧 API 的客户端中断,因此您知道他们需要更改。

【讨论】:

  • 首先,您当然是完全正确的。在我们内部就我们的未来进行的讨论中,我正在寻找可以与我一起讨论的意见。我的上级正在寻找的好处是性能:正是网络所需要的。而且他担心开发人员会把 API 弄得一团糟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 2012-11-23
  • 2013-01-20
相关资源
最近更新 更多