2010-07-21 136 views
4

我想提出一个网站,用户可以回复主题,开放的话题等,在用户发送的消息,我不想回传;它很丑。PageMethods或Generic Handler?

我使用的是通用的处理程序,但现在我有一些问题吧。就像在XMLHttpRequest的onreadystate发生变化时使用UpdatePanel更新GridView一样。

我决定用PageMethods但我也想问问你。

哪一个更好,更快,更有益:PageMethods或通用处理程序?

回答

14

我不是认为页方法和HTTP处理程序的速度之间会有很大的差异。但是,如果您担心应用程序的性能,则应该对每个选项进行基准测试,并选择最适合您的选项。

要回答这个问题,这是更好以上有用,基本上ASP.NET环境中,你有三个选择,各有其优缺点:

  1. 页面方法 - 您的所有代码都包含在单个页面中,如果代码仅为,那么该页面使用的代码仅为。您可能应该实现将页面特定的HTML代码片段作为Page方法返回的方法。但是,如果我们正在讨论可重用代码,例如“保存主题”或“获取主题”,则可能需要考虑将此代码在其他地方进行外部化。我保证,随着应用程序的增长,您还需要在应用程序的其他地方使用这些方法。

  2. 通用HTTP处理程序 - 轻量级,非常适合需要在整个应用程序中调用的代码。最常见的通用处理程序是为实现内容而实现的,我不知道这个主题的最佳做法是什么,但对于我来说,通用处理程序保存数据具有鲜明的气味。你还会发现,对于相关功能(保存,获取单一的,得到很多,等等),你会根据查询字符串与群处理器的,或与一个巨大的switch语句的处理程序和一个模糊的合同结束和POST参数。我不会推荐这个选项来实现广泛的AJAX应用程序。对于小零件,它可能适合您的需求。

  3. ASP.NET web服务(或WCF) - 在您的问题中未提及的第三个选项是ASP.NET Web服务(.asmx)。您可以轻松地将它们包含在现有的ASP.NET应用程序中,而无需任何其他框架依赖性它们在选项1和选项2之间提供了一个很好的平衡。一方面,您可以在整个应用程序中获得可重用性,如果您选择这种方式,即使在您的应用程序之外,也可以通过Page方法无法提供。另一方面,你可以用有意义的方式将相关的功能整齐地绑定在一起,而这些方式往往会与通用处理程序混淆。您还可以根据需要使用SOAP XML,JSON或HTTP POST/Plaintext与服务进行交互。

这里通配符选项是:使用ASP.NET MVC和jQuery。如果您打算构建一个精简且意味着Web应用程序,并且通常会发现回传丑陋,并且您发现诸如正好发生的事情时,xmlhttprequest更改readystate有趣,它可能会为您提供更好的体验。也许不是为了这个项目,而是为了下一个项目。

+2

+1为通配符选项:-) – 2010-07-21 09:59:07

+0

感谢提供丰富的答案:) 我会考虑这一点。 – 2010-07-21 12:11:56

+0

+1对于建议MVC – 2010-08-11 13:52:48

0

如果你的意思通用处理器 Web服务端点,那么你可以进行以下区别:

  • 您可以使用PageMethods如果功能只需要提供该页面只
  • 你可以在如果要重用该功能,请使用Web服务端点。

就个人而言,我几乎总是使用Web服务端点(在我的情况下,ajax启用WCF)。

0

我看不出为什么你不应该使用通用处理程序。我认为他们是最好的 - 简单而灵活。