.net WCF和一个函数来管理它们?

.net WCF和一个函数来管理它们?,.net,wcf,architecture,.net,Wcf,Architecture,这是一个建筑问题 我们遇到了客户机-服务器的情况。我们希望摆脱远程桌面解决方案(如Citrix、Propalms等)。SOA似乎是解决方案。由于安全原因,我们无法使用直接SQL连接 因此,我们使用一个函数创建一个WCF webservice,该函数可以将一个查询(作为字符串)作为参数,然后返回一个包含该查询结果的字符串。我们所有的软件都将通过抛出查询(作为字符串)并等待结果(作为字符串)来调用此函数 客户端exe知道这个结果是什么样子,因为它进行了调用,所以让客户端exe担心这个问题。具体来说,

这是一个建筑问题

我们遇到了客户机-服务器的情况。我们希望摆脱远程桌面解决方案(如Citrix、Propalms等)。SOA似乎是解决方案。由于安全原因,我们无法使用直接SQL连接

因此,我们使用一个函数创建一个WCF webservice,该函数可以将一个查询(作为字符串)作为参数,然后返回一个包含该查询结果的字符串。我们所有的软件都将通过抛出查询(作为字符串)并等待结果(作为字符串)来调用此函数

客户端exe知道这个结果是什么样子,因为它进行了调用,所以让客户端exe担心这个问题。具体来说,它将是一段XML,用查询返回的数据描述列和行。因为这都是我们自己的软件,所以我们在内部同意XML的格式

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

这种方法被称为“过度通用接口”,是一种反模式

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


这种方法没有任何真正的好处。有些事情似乎是有好处的——比如在不重新编译客户端的情况下更改API的能力。但实际上这些都是缺点:如果API更改,您希望依赖旧API的客户端中断,因此您知道它们需要更改。

这与远程桌面有什么关系?今天是否有人手动执行此操作?此方法看起来就像另一个封装数据的通信层。数据仍然需要解析,所以为什么要添加另一个没有任何用途的“虚拟”层呢?我更新了我的原始帖子,这应该可以回答你的问题。首先,你当然是绝对正确的。我希望在我们内部关于我们未来的讨论中,我能提供一些意见。我的上司所追求的好处是性能:这正是整个网络所需要的。他担心开发人员会把API搞得一团糟。