C# 关于WCF,我遗漏了什么?
在这个阶段,我在MS技术领域的开发时间比我想的要长。当.NET出现时,我认为他们一针见血,随着每次迭代和版本的发布,我认为他们的技术越来越强大,并期待着每次发布 然而,去年我不得不与WCF合作,我必须说我发现这项技术很难使用和理解。起初,它非常吸引人,但当你开始深入到它的本质时,配置是一场噩梦,必须覆盖消息大小、消息中包含的对象数量、安全模型的复杂性、,在出现故障时处理代理,最后返回到用代码而不是XML定义接口 它只是无法开箱即用,我认为应该这样做。我们发现上述所有问题时,要么测试自己,要么当我们的产品在现场 我确实理解这一切背后的理由,但他们肯定可以想出更简单的实施机制 我想我要问的是C# 关于WCF,我遗漏了什么?,c#,wcf,web-services,C#,Wcf,Web Services,在这个阶段,我在MS技术领域的开发时间比我想的要长。当.NET出现时,我认为他们一针见血,随着每次迭代和版本的发布,我认为他们的技术越来越强大,并期待着每次发布 然而,去年我不得不与WCF合作,我必须说我发现这项技术很难使用和理解。起初,它非常吸引人,但当你开始深入到它的本质时,配置是一场噩梦,必须覆盖消息大小、消息中包含的对象数量、安全模型的复杂性、,在出现故障时处理代理,最后返回到用代码而不是XML定义接口 它只是无法开箱即用,我认为应该这样做。我们发现上述所有问题时,要么测试自己,要么当我
- 我是否以错误的方式看待WCF
- 过去几年,它有什么优势 替代品
- 在什么情况下我应该 选择使用WCF
我只是认为应该有更简单的配置/部署选项,更容易的设置和更好的配置管理(可能是SQL配置提供程序,而不仅仅是web.config/app.config文件)。在澄清之后,我将解决您的其他问题。同时,我可以回答您关于何时应该选择使用WCF:always的问题 WCF是旧的ASMX技术(包括WSE)的替代品。它也是.NET远程处理的替代品。在可预见的未来,.NET中的高级通信功能将基于这项技术
例如,考虑Windows Azure。“云计算”的新概念将其通信方面纳入WCF并非不可避免。然而,WCF具有足够的灵活性,可以扩展到涵盖这些情况,而代码的变化很小
如果您在使用WCF时遇到问题,那么最好确保Microsoft了解它。WCF是web服务和.NET中其他面向服务的开发的现在和未来,因此他们有非常强烈的动机倾听您的意见并解决您的痛点。或者直接通过联系他们,或者在这里问问题(请用WCF标记),很多人都会帮助你。我现在一直在使用WCF,我也分享你的痛苦。这看起来似乎是严重的过度设计,但我们将被困在它很长很长一段时间,所以我试图学习它
有一点我是肯定的,XML很糟糕。我在使用XML来控制它时遇到了很多问题,从那以后,我开始转向通过代码来处理所有事情。看看您是如何提到XML和SQL的,您正在使用WCF来构建一个web应用程序或一个实际的web服务(web上的服务,而不仅仅是SOAP交换) 它有助于将WCF看作.NETRemoting(或DCOM、CORBA等)的替代品,而.NETRemoting也恰好支持作为传输之一的web服务。程序集中声明的接口、代理的行为、某些配置选项以及从web应用程序的角度来看看起来不自然和复杂的框架的其他方面,对于分布式对象的DCOM样式系统来说,实际上是现成的
回答这个问题:不,您没有遗漏任何东西,而且对web应用程序使用WCF是复杂的,因为WCF不是构建web应用程序的框架。可能这样的框架可以建立在它之上,但我不希望看到WCF本身被改变为进入web领域。为了解决应用程序配置的维护问题,一些标准(如UDDI或WS-Discovery)已经存在,WS-Discovery将由.NET 4.0中的WCF支持 保持 在代码中使用接口,而不是移动 在中显式定义接口的步骤 XML,可以发布和 几乎被任何东西所消耗。我知道我们 可以从assembley导出XML, 但它充满了垃圾和确定 代码生成器被它卡住了 你能说得更清楚些吗?我认为您所说的是在代码中配置的服务行为
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall, ConcurrencyMode=ConcurrencyMode.Single)]
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single, ConcurrencyMode=ConcurrencyMode.Multiple)]