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