2010-12-13 69 views
0

当我读到这里http://arunatennakoon.blogspot.com/2010/11/things-i-learn-new-this-week.htmlWCF是否准备好了现实世界?

Friday, November 12, 2010 
Things I learn new this week 
1. Never ever use WCF. 
--------------------- 

here is why 
1. IIS 7 doesn't support .svc file format by default. So you need to 

安装一些扩展名的文件。所以它是 大量的新产品的工作。

2. I found it very hard to configure security settings. when i 

试图配置第一次 它抛出所有类型的错误。

3. After installing WCF in IIS, sometimes it's trowing an exception 

引用临时目录。为了 解决这个问题,你必须重新 编译应用程序和 重新分配

and a lot more... 

所以你会采取使用WCF的风险?

我想知道每年有几百亿到几十亿的真实世界的例子。

+5

我看到你接受了一个答案,这个答案与你引用的博客上陈述的不明智偏见和浅薄偏见吻合,以及哪一个人怀疑你分享。你的选择,你的损失。事实是,全世界很多人都从WCF中获得了巨大的价值。如果你想否认自己,甚至没有正确评估它,继续前进。 – 2010-12-18 15:08:42

+0

这取决于你工作的项目,如果性能真的是你必须牺牲抽象的关键。所有这些抽象的问题是,他们不告诉你它是如何工作的,以便你可以平衡。所以我同意这篇文章http://www.bluebytesoftware.com/blog/2010/09/06/ThePrematureOptimizationIsEvilMyth。aspx,但是当你不是MS Insider或者你是项目经理时,你会选择风险较低的意见。 – user310291 2011-04-10 09:36:58

回答

1

我跳过了wcf。

主要原因是它会导致大量额外的代码/工作,而且与现有机制相比收益甚微。

我曾经去过asmx路线,但我发现那些对我们平常需要的东西来说太重了。另外我发现,至少在几年前,处理“Web服务”的很多java框架对我们所需的一些高级事物没有太大的帮助。

很坦率地说,通过posts/gets到一个ashx文件来做常规的httpwebrequests是非常简单,健壮和动态的。而你会花很多时间让工作。

当然,我唯一一次点击visual studio中的“designer”选项卡是偶然的。也许我是一个享乐主义者......或者只是从所有的市场营销中走出来谈论这些技术如何让我们的应用程序更“互操作”。

+2

几乎没有什么好处?我猜服务参与TransactionScope并不是每个人都需要的,但是当你需要它的时候它有很大的价值。这只是一个功能。 – 2010-12-14 00:00:29

+0

至少对于性能的好主意会尝试这个老学校的东西:) – user310291 2010-12-14 00:02:32

+1

我同意,对于网络的东西没有太多的好处,使用它比较Web服务。当你有其他传输(TCP,命名管道等)时它更有用。它为所有传输提供相同的编程模型,因此您专注于实现。 – TarasB 2010-12-14 00:02:34

1

我看到了有关使用WCF将在HPC世界上许多文章,所以我想我们必须等待,看看:)

我很冷静与ASMX虽然

1

我已经做了很多咆哮最近针对WCF。这是笨重,沉重和过度,但不要误会我的意思,它非常丰富和灵活。

是的,这是现实世界的准备,已经在成千上万的大型项目中使用。

我已经在两个项目中使用过它。

现在,如果您只需要轻量级的,设置较少的HTTP调用,请使用ASP.NET MVC中的JSON + HTTP或新的WCF's separate HTTP stack

+0

丰富而灵活并不意味着对现实世界的准备,因为现实世界意味着性能和可扩展性,轻松实现项目生命周期管理(又称部署,看起来很麻烦)。至于大规模你是什么意思?对我而言,这意味着每年至少有数亿到数十亿的点击量(这是我目前的规模)。 – user310291 2010-12-13 23:58:18

+0

**大多数**的可扩展性是在体系结构和设计级别而不是在技术级别上实现的。我或多或少同意你的意见,但不会马上敲门。有一个阅读在我的咆哮在这里:http://stackoverflow.com/questions/3710635/succinct-and-light-weight-api-restjson-in-net – Aliostad 2010-12-14 00:06:17

+0

可伸缩性是一个性能是另一回事。说所有只依赖于架构是过度的websocket将允许更好的表现,而不仅仅是http对于某种实时应用程序 – user310291 2010-12-14 22:16:10

5

它绝对准备好现实世界。即使微软在其产品中使用它,例如MS Dynamics CRM服务现在在WCF中完成。

+0

微软使用它并不是一个真正的证据,因为当他们遇到问题时他们可以很容易地破解它,而当你或我有问题时,你不能进入盒子里面...... :) – user310291 2010-12-14 00:05:04

+2

@ user310291由于WCF是托管代码,实际上我们可以在我们需要的时候使用ILDASM或反射器进入盒子。 WCF也是非常可扩展的,所以我们可以在需要的时候控制它的每一个方面。 – 2010-12-17 16:19:17

+0

与ILDASM一起进入盒子的目的是成为黑客。对于企业界来说,这不是一个好的质量保证,因为技术不能要求普通的开发人员成为黑客,尤其是因为他在商业层面上有很多事情要做。 – user310291 2010-12-18 13:18:42

0

到目前为止,部署WCF项目没有任何问题。我正在构建一个非常简单的应用程序(实际上,应用程序不是那么简单,但是服务层),并且已经将WCF部署到三个环境(开发,集成测试和用户测试),没有任何麻烦。

我和WCF一起去了,因为asmx不能处理循环对象图,而WCF可以。

+0

如果你的应用程序很简单,这不是我所说的真实世界:) – user310291 2010-12-14 22:18:45

3

是的,绝对是,WCF已准备好真实世界的使用,并正在被世界各地的许多大小公司使用。

是的,IIS托管 - 但这不是WCF的错,它是IIS,它实际上只是一个Web服务器 - 不是应用程序主机。

因此,对于任何严重的生产级WCF服务,我都会推荐总是自主主机。跳过所有IIS相关的混乱,让您完全控制您的服务和端点 - 所有这些对我来说听起来都不错!

+0

...或支付某人来主办*你*(而不是你+ 20k其他用户在一个盒子上:p) – 2010-12-19 04:02:59

5

WCF绝对准备好了现实世界。是的,有时候这是过度杀伤,所以首先你必须知道你是否真的需要它。如果您需要WS- *协议栈,或者您需要Web服务与非MS平台的互操作性,则需要WCF。我正在使用WCF,我对此很满意。

IMO WCF是第三好的API MS提供(.NET Core是第一个,ASP.NET MVC第二个)。它具有很多可扩展性,几乎可以做任何事情。但这并不容易。 WCF适合成熟的熟练开发人员 - 这是WCF的主要缺点。

在文章中提到的理由是愚蠢的。这就好像是说ASP.NET 4.0还没有准备好现实世界,因为有时你必须运行aspnet_regiis.exe来在IIS中注册.NET 4.0运行时,或者说Lambda表达式还没有准备好用于真实世界,因为你必须学习如何使用它们。

+0

并非所有的原因都是愚蠢的这一个是不愚蠢:在IIS中安装WCF后,有时会抛出一个引用临时目录的异常 。要解决此问题,您必须重新编译应用程序并重新分发 – user310291 2010-12-14 22:18:16

1

在世界各地的大型企业中,有许多使用WCF实现关键任务功能的实际解决方案。我个人所知道的一个例子是:英国最大的电脑游戏零售商之一的电子商务网站广泛使用WCF服务来推动网站并实施订单履行。它有数以百万计的客户产生gazillions命中。

WCF是主流。没有任何隐藏的风险,提供(像任何框架一样),您可以在具有良好质量保证流程的SDLC内正确理解和使用它。

+0

感谢此示例。至于“众多”我看不到这么多广告。关键任务并不意味着它在技术上具有挑战性。当我说真实世界时,我宁愿意指高负载用户和复杂的工作流程。 – user310291 2010-12-18 13:16:31

0

我们在我们的项目中处理WCF,并且在大部分情况下它使得生活在获取和运行服务方面变得更加简单。 WCF使软件REST风格的服务变得非常简单,提供了一种挂钩到堆栈的机制来定制如何处理Web请求,并允许分离Web特定的内容和业务层。

1

WCF比webservice更加灵活。我们可以根据我们的要求使用不同类型的传输协议。它也由现代安全模型组成。