本文讨论了在 Silverlight 中使用 WCF 服务,但声称:
没有代理,没有生成的代码,没有第 3 方实用程序,也没有令人作呕的“添加服务参考”用法。
我在 Silverlight 项目中添加服务引用有什么问题?是否有隐藏的开销?还是作者对汽车魔法的恐惧?
本文讨论了在 Silverlight 中使用 WCF 服务,但声称:
没有代理,没有生成的代码,没有第 3 方实用程序,也没有令人作呕的“添加服务参考”用法。
我在 Silverlight 项目中添加服务引用有什么问题?是否有隐藏的开销?还是作者对汽车魔法的恐惧?
作者发表该声明的理由似乎是:
首先,让我提醒大家不要在 Visual Studio 中使用“添加服务引用”来创建神奇的服务客户端。代码非常冗长,难以管理,编辑很容易被覆盖,而且几乎总是被用作不真正学习 WCF 的借口。没有什么比仅仅因为他们知道如何使用鼠标而不得不与了解产品的人打交道更糟糕的了。
作为一个完全依赖 Silverlight 中“添加服务参考”的人,我认为这有点过头了。我同意自动生成的代码是冗长的,它不应该被编辑,因为它会被覆盖。然而,就可管理性而言,它并没有变得更简单,为了响应我的服务更改,只需单击一下即可使服务引用恢复同步。
尽管如此,我认为这篇文章非常好,而且我可以保证添加服务引用的便利性阻止了我深入研究 WCF。这不一定是一件坏事,因为在一天结束时 WCF 正在管道中,我有兴趣编写我的应用程序而不是成为 WCF 专家。碰巧的是,我现在遇到了 Silverlight 和我的服务之间的一些序列化问题,我怀疑这些问题与浏览器有关。我需要更深入地研究 WCF 以对其进行整理,而那篇文章看起来是一个完美的起点。
“添加服务参考”对我来说已经用了 1.5 年了,虽然学习 WCF 的内部结构当然有好处,但在 Visual Studio 中使用快速简单的点击方式开始使用绝对没有错.
Silverlight 中的“添加服务引用”现在存在一些问题......每次更新服务时都会重新生成配置文件。
它比人们强调的“汽车魔术”更进一步。首先,通过服务引用,您将“耦合”到服务及其公开的方法。如果您重新生成服务,客户端也必须这样做。动态创建服务可以缓解这个问题。此外,通过抽象/反射/依赖注入,您现在可以解耦服务引用。
我不认为服务引用不好,但是 WCF 和 Web 概念正在远离它。例如,WCF REST 标准没有您使用的“服务引用”……它只是 URL 路由表。越来越多的人建议将此作为标准,例如 Juwal Lowy(idesign.net 和几本 WCF 书籍的作者)也建议不要使用服务引用。