【问题标题】:Writing ASP.NET frameworks other than WebForms or MVC?编写除 WebForms 或 MVC 之外的 ASP.NET 框架?
【发布时间】:2023-04-02 13:05:01
【问题描述】:

我想知道“干净”的 ASP.NET 是什么样的。例如,我想在 ASP.NET 上构建自己的框架,但我不知道应该包含什么程序集。

所有讨论 ASP.NET 的书籍都描述了 WebForms 或 MVC,但没有一个解释 ASP.NET 层。

下图中的 ASP.NET 是什么部分?

【问题讨论】:

  • 可能你提到了ASP.net Web API
  • @Stefan Kert。绝对没有。它是社区框架,而不是 Microsoft。
  • NancyFx 就是这样一个例子,Fubu MVC 就是另一个例子。
  • 我已经编辑了你的问题,所以它不是题外话。您不能要求框架或书籍,请参阅How to Ask

标签: asp.net asp.net-mvc webforms


【解决方案1】:

WebForms 和 MVC 都是通过处理程序实现的,请参阅 MSDN 上的 ASP.NET Page HandlerMvcHandler Class

Handlers (MSDN: Introduction to HTTP Handlers) 是使用 ASP.NET 的最轻量级的方式。您可以访问HttpRequest 实例,该实例了解有关请求的所有信息。

在处理程序中,您读取此 HttpRequest,应用您的应用程序逻辑并通过 HttpResponse 成员实例写入结果,ProcessRequest(HttpContext context) 中的 IHttpHandlerHttpContext 参数具有:

namespace HandlerExample
{
   public class MyHttpHandler : IHttpHandler
   {
      // Override the ProcessRequest method.
      public void ProcessRequest(HttpContext context)
      {
         context.Response.Write("<H1>This is an HttpHandler Test.</H1>");      
         context.Response.Write("<p>Your Browser:</p>");
         context.Response.Write("Type: " + context.Request.Browser.Type + "<br>");
         context.Response.Write("Version: " + context.Request.Browser.Version);
      }

      // Override the IsReusable property.
      public bool IsReusable
      {
         get { return true; }
      }
   }
}

很多 ASP.NET(如果不是全部的话)都存在于 System.Web 命名空间中。

【讨论】:

    【解决方案2】:

    ASP.NET WebForms 和 MVC 构建在 ASP.NET 引擎之上,它基本上由模块、处理程序和围绕它的生态系统组成。

    事实上,您可以通过编写模块和处理程序来编写自己的框架。您可以编写自己的代码来接收请求并处理它(处理程序)或调整现有消息(模块)。

    【讨论】:

    • 您能否提供一些发现“ASP.NET 引擎”的起点?我会很感激
    • 我经常使用这个MSDN page 和它的引用。
    【解决方案3】:

    我们在几个项目中使用了NancyFX,它绝对值得研究。简单性和性能令人惊叹。您可以独立托管它,也可以通过 IIS(如 asp.net)托管它。而且它也是跨平台的。

    【讨论】:

    • 谢谢。这就是我要找的。但我无法将您的答案标记为正确,因为问题已由管理员编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    相关资源
    最近更新 更多