c# - 什么是 ASP.net 项目中的 Servlet(在 tomcat 中扩展 HttpServlet 的 Java 类)?

标签 c# asp.net servlets

我在 Apache Tomcat 项目开始时就开始编写自己的 Web 应用程序,因此当我编写一个 Servlet 以一小段 JSON 响应某些 GET 或 POST 时,我的代码看起来接近于此:

package com.stackoverflow.question;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.json.*;

public class SimpleServlet_json extends HttpServlet {
  private static final long serialVersionUID = 1L;

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    request.setCharacterEncoding("UTF-8");
    JSONObject json = new JSONObject();
    try {
      json.put("Success", true);
      json.put("Name", request.getParameter("name"));
    } catch (JSONException e) {}
    response.setContentType("application/json");
    response.getOutputStream().print(json.toString());
  }
}

我的问题是“ASP.net 的等效方法/设计/新项目是什么?”

我一直将它们写成如下所示的 WebForms:

首先是(基本上是空的).aspx 文件:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SimpleServlet_json.aspx.cs" Inherits="com.stackoverflow.question.SimpleServlet_json" %>

然后这个.cs文件:

namespace com.stackoverflow.question
{
  public partial class SimpleServlet_json : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      var json = new JSONResponse()
      {
        Success = Request.QueryString["name"] != null,
        Name = Request.QueryString["name"]
      };
      Response.ContentType = "application/json";
      Response.Write(JsonConvert.SerializeObject(json));
    }
  }
  [Serializable]
  class JSONResponse
  {
    public string Name { get; set; }
    public bool Success  { get; set; }
  }
}

但我暗自担心我要求我的 C# 程序员采用非直觉的风格。

这些示例相当人为,实际上它们被用作数据库实体的 JSON 表示。例如,URL example.com/product/1 是 HTML 版本(具有与 URL 关联的 JSP 或 ASPx 页面),而 example.com/product/1.json 是 JSON 表示(具有这些类之一)。我是 URL 重写的粉丝。

最佳答案

HttpHandlers 应该在 2003 之后的任何版本 .NET 版本中执行此操作。请参阅此 Microsoft article .

但是,更现代(也更直观)的方法是使用 .NET MVC 或更具体地说是 .NET Web API。

引自 Scott Gu's blog在他的 asp.net 博客上:

"Our new ASP.NET Web API support enables you to easily create powerful Web APIs that can be accessed from a broad range of clients (ranging from browsers using JavaScript, to native apps on any mobile/client platform). It provides the following support:"

还有 official Microsoft .NET Web API page状态:

ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.

关于c# - 什么是 ASP.net 项目中的 Servlet(在 tomcat 中扩展 HttpServlet 的 Java 类)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15169356/

相关文章:

c# - Visual Studio Mac 不支持 List<string> 函数?

asp.net - Postman 发送到 ASP.net 时不支持的媒体类型

javascript - ajax - jsp总是出现错误

c# - 如何实现AppCenter Push API?

c# - 通过 C# 执行外部程序而不显示控制台

asp.net - 如果我有网站图标,我需要链接到它吗?

java - 如何在页面加载时触发 servlet 方法

java - 在 servlet 中使用我的 Web 应用程序池?

c# - 具有复杂数组参数的 Web API

asp.net - 如何使用 Release模式将 Web 应用程序部署到 Azure