在整个网站上使用ASHX是一个坏主意吗?

时间:2015-05-03 22:37:14

标签: c# asp.net ashx

我过去使用HTML或Perl创建了多个网站。我现在正在寻找使用ASP.Net,因为它允许我使用我更熟悉的语言(C#)。

我对aspx页面进行了一些实验,看起来他们总是添加视图状态,并从我当前的理解中向服务器添加额外的请求。

我只是希望能够像普通网页一样使用POST / GET数据+能够使用c#。

目前,我正在考虑使用ashx格式制作整个网站,因为它似乎是最接近满足这些需求的格式。这意味着我可能需要创建一个自定义模板管理器来打印静态html内容和生成内容的混合。

这听起来像是一种糟糕的做法吗?我不需要一个系统(aspx),如果我已经使用POST / GET请求处理了所有内容,那么它会增加我的页面的重量并减慢进程的速度吗?

3 个答案:

答案 0 :(得分:5)

ASHX基本上是处理程序页面。在一个满足webforms的网站中,ASHX经常被用于一次性JS调用,图像处理程序,或基本上填补那些你通常无法创建全面ASPX的利基。

根据您的描述,您的目标是创建轻量级页面,您可以在其中获得更多控制权,而且您需要的是ASP.NET MVC

此外,根据您实际执行的操作,您应该查看ASP.NET MVC的网页。如果您只是创建API,请查看ASP.NET WebAPIs。这两种范式彼此非常相似,为您处理大量管理,并且不被视为遗产(截至撰写时为止)

更直接地回答你的问题 - 将ASHX用于一些你需要补充其他东西的端点可能并不完全是坏事,但随着应用程序范围的不断增加而你增加更多,它肯定会变坏还有更多页面。你最终得到了一个单一的页面'结构在项目上重复,可能不利于维护;而对于MVC方法,您将至少具有用于某些质量控制和分离的结构。 ASP.NET MVC已经为您提供了页面的分离,模板和控制,因此非常适合。

是的,这是一个坏主意。

答案 1 :(得分:0)

  

我对aspx页面进行了一些实验,看起来他们总是添加视图状态,并从我当前的理解中向服务器添加额外的请求。

我在旧的ASP.NET时代做的第一件事就是关闭垃圾。

  

我只是希望能够像普通网页一样使用POST / GET数据+能够使用c#。

我推荐使用ASP.NET MVC。

  

目前,我正在考虑使用ashx格式制作整个网站,因为它似乎是最接近满足这些需求的格式。这意味着我可能需要创建一个自定义模板管理器来打印静态html内容和生成内容的混合。

有时候任何一个ashx运作良好。有时IHttpHandler的实现工作得非常好,并且可能存在(特别是当输出不是HTML时)这样的情况,即编码更简单,运行效率更高。

否则,虽然ASP.NET MVC存在一些问题(事实上,它只是将与实体流式传输相关的所有事务都视为"视图"阻碍了调整将实体流式传输到客户端),它很好地将C#部分和HTML部分分开。的确,当我在做ASP.NET和#34;错误"我没有使用ViewState,而是采用其他的方式来反对那些关于如何使用的#34;意思是"做ASP.NET,我正在做直接支持Razor的ASP.NET MVC。

  

我不需要一个系统(aspx),如果我已经使用POST / GET请求处理了所有内容,那么它会增加我的页面的重量并减慢进程的速度吗?

不,而且你不会需要 ASP.NET MVC给你带来的东西,但是它做得相当不错。事实上,我发现它的ASHX对我来说介于两个凳子之间;在有意义的情况下,我经常发现只是为了实现IHttpHandler,但在那一点上是YMMV。

答案 2 :(得分:0)

  • 视图状态

    • in WebForms这是处理持久性的一种方式
    • 可以完全或有选择地禁用它(例如某些控件的持久性,而不是Page中的所有)。
  • ASP.Net是

    • 的WebForms
    • WebPages(轻量级,Razor语法 - 通常WebMatrix的使用相关联)
    • MVC
    • 的WebAPI

所以你有选择权。

  

我只是希望能够像普通网页一样使用POST / GET数据+能够使用c#。

如果您是“裸机”类型,那么WebPagesMVC将具有吸引力。并不是说你不能在WebForms中做同样的事情 - 它在一天结束时仍然是POST / GET(为了方便起见而略显抽象)。

其他答案处理Generic Handler(ashx)和WebApi之间的选择。

H个。