![](/img/trans.png)
[英]What would be the equivalent of Application_EndRequest (ASP.NET) in Java Tomcat?
[英]What is the equivalent of a Servlet (Java class that extends HttpServlet in tomcat) in an ASP.net project?
我在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文章 。
但是 ,更现代(更具创造性)的方法是使用.NET MVC或更具体的.NET Web API。
在他的asp.net博客上引用Scott Gu的博客:
“我们新的ASP.NET Web API支持使您能够轻松创建功能强大的Web API,可以从广泛的客户端访问(从使用JavaScript的浏览器到任何移动/客户端平台上的本机应用程序)。它提供以下支持”
ASP.NET Web API是一个框架,可以轻松构建可覆盖广泛客户端的HTTP服务,包括浏览器和移动设备。 ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。
我认为你正在寻找一个Generic Handler
(.ashx)
<%@ WebHandler Language="C#" Class="MyHandler" %>
using System;
using System.Web;
public class MyHandler : IHttpHandler
{
public void ProcessRequest (HttpContext ctx)
{
var json = new JSONResonse()
{
Success = ctx.Request.QueryString["name"] != null,
Name = ctx.Request.QueryString["name"]
};
ctx.Response.ContentType = "application/json";
ctx.Response.Write(JsonConvert.SerialzeObject(json));
}
public bool IsReusable {
get { return false; }
}
}
向他们发出与您的页面相同的请求。 yoursite.com/my-handler.ashx?name=foo
我有一个类似的问题,一些关于它的研究结束于Web API。 想与SO分享。
在MSDN站点中, http://msdn.microsoft.com/en-us/library/jj823172(v = vs.110).aspx
找到一个视频教程,他们说,对于iPhone或JSON或xml的Web应用程序客户端等机器消耗,建议使用Web API。 它围绕视频的最后部分。
而对于更复杂的机器到机器通信,WCF是优选的。
这是他们演示的截图。
我不能说我可以在Serv.net和asp.net上的某些类型之间绘制相似之处,因为webforms是完全不同的。
从您的示例代码中我可以建议您查看asp.net webapi,因为这将很好地映射到您当前正在尝试的内容。
更像是Owin
'OWIN定义了.NET Web服务器和Web应用程序之间的标准接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.