【发布时间】:2010-10-29 19:31:03
【问题描述】:
我在 MS 技术方面的开发时间比我在这个阶段想记住的要长。当 .NET 出现时,我认为他们一针见血,随着每次迭代和版本,我认为他们的技术越来越强大,并期待每个版本。
但是,由于去年不得不与 WCF 合作,我必须说我发现这项技术很难使用和理解。最初它非常吸引人,但是当您开始深入了解它时,配置是一场噩梦,必须覆盖消息大小、消息中包含的对象数量、安全模型的复杂性、出现故障时处理代理以及最后的代理回到用代码而不是 XML 定义接口。
它不能开箱即用,我认为它应该。我们在测试自己或产品出厂时发现了上述所有问题。
我确实理解这一切背后的基本原理,但他们肯定可以想出更简单的实现机制。
我想我要问的是,
- 我是否以错误的方式查看 WCF?
- 它有什么优势? 替代品?
- 什么情况下应该 选择使用 WCF?
好的伙计们,很抱歉延迟回复,工作确实有一个讨厌的习惯,有时会妨碍你:)
一些说明 我想我对 WCF 的主要油漆点属于以下领域 虽然它确实是开箱即用的,但您的左侧还有一些重大惊喜。正如上面所指出的,基本的东西在被覆盖之前是受限的
- 可以传递的字符串大小不能超过 8K
- 可以在单个消息中传递的对象数量受到限制
- 代理无法自动从故障中恢复
- 配置量虽然存在是件好事,但了解这一切以及使用什么以及在什么情况下可能很难理解。尤其是在现场部署具有不同安全要求的软件时等。在谈到配置时,我们不得不将很多我们的软件隐藏在后端数据库中,因为现场的安全和网络人员试图在不了解的情况下更改配置文件中的内容它。
- 将接口的配置保留在代码中,而不是迁移到 XML 中明确定义的接口,几乎可以发布和使用任何东西。我知道我们可以从程序集中导出 XML,但它充满了垃圾,并且某些代码生成器会阻塞它。
我知道世界在不断发展,在过去(我已经开发了 22 年)我已经多次前进了,并且正在积极使用 WCF,所以不要误会我的意思,我明白什么它的用途和方向。
我只是认为应该有更简单的配置/部署选项,更简单的设置和更好的配置管理(可能是 SQL 配置提供程序,而不仅仅是 web.config/app.config 文件)。
【问题讨论】:
-
如果将其改写为“您如何克服 WCF 的复杂性”问题,则很有用。并将其标记为社区维基
-
我无法支持您的说法:“它只是不能开箱即用” - 我认为它可以 - 大时代!它比 ASMX、Remoting 和其他不能一起工作的东西更灵活、更强大、更有用。这是一个统一的通信框架——实际上它非常引人注目!
-
你没有错过任何东西。它会像 DCOM 一样消失,正是出于您概述的原因。 WS 或 SOAP 从未启动过,也不太可能启动。 Dare 对此进行了广泛的介绍,您可以看到 Amazon 和 Google 提供的内容。非常简单有效的 api,并且没有您使用 wCF 获得的锁定。并且不要忘记,在选择 WCF 时,有一整类应用程序根本不适合功能要求。其中之一是优秀的流媒体模型、高性能应用、P2P、游戏,应有尽有
-
然后MS意识到哦wtf:json,pod,rest等等。因此,突然急于将更多模型和类修补到框架中。典型的过度工程..
-
是的,但 WCF 中的 REST 仅支持每个处理程序 1 个动词,您不能在同一个处理程序上使用 GET 和 POST。 JSON 也有类似的问题,返回的数据是用非标准的包装格式包装的。 AJAX ScriptManagers 不能嵌入到用户控件中以支持 AJAX,需要借助脚本库(如优秀的 dojo/jquery)来提供这些功能。因此,即使使用 REST 和 JSON 等所谓的标准实现,WCF 仍然存在问题。
标签: c# wcf web-services