C# .net问题:打算全部用ashx写个后端项目,前端用html+js+ajax与后端交互,请问应在VS中建什么项目中?

2024-11-19 15:30:54
推荐回答(3个)
回答1:

ASXH是一般的网站应用程序,主要用来处理小型的,不需要回发的请求,比如发送个图片给客户端啊,这种。他不是一个项目,而是一个项。只要是ASP.NET项目中,都可以右键添加一个asxh项,用于url处理请求。
优点是很简单,缺点是很老很过时,至于以后和其他客户端交互更是难,因为asxh项是很难维护成一个系统的服务的。

主流的处理方式是使用WebService, WebService可以用于处理后台需要的业务逻辑、数据交互并且依托IIS来发布出去。一般主流的.NET网站,大部分都使用WebService或者WebApi来进行服务发布,然后前端使用MVC进行开发(你使用html+js+ajax其实都是视图UI,而前端可能还需要一些其他的东西来进行网站和服务的交互,比如MVC的控制器,或者webform的后台代码,纯js和服务交互在.NET中并不好用)。
因为WebService使用XML来进行数据交互,基本上所有的客户端都可以调用其服务,包括安卓和IOS。
WebService学起来很简单, 就是将服务端需要的所有逻辑、数据代码封装好,然后发布即可。

回答2:

根据你的情况分析,你的项目应该是分布式项目系统,我建议你使用WCF做为与前端交互,而不是一般处理程序。优点适用于大型分布式架构系统,跨平台,跨架构调用,有助于构建集群分布式Web项目和负载均衡。

回答3:

<%@ WebHandler Language="C#" Class="Home" %>

using System;
using System.Web;
using System.Net;

public class Home : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
object type = context.Request.Params["type"];
string jsonpCallback = context.Request.Params["jsonpCallback"];
if (type == null||type.ToString()=="")
{
context.Response.Write("type is null");
}else {
switch (type.ToString()) {
case "login":
//.....
break;
}
}
}
public bool IsReusable {
get {
return false;
}
}

}

jsonp跨域请求
$.ajax({
type: "get",
url: "Ashx/login/login.ashx",
dataType: 'jsonp',
jsonp: "jsonpCallback",
data: params,
success: function (result) {
//正常返回数据的处理
}, error: function (XMLHttpRequest, textStatus, errorThrown) {
//请求错误时处理
}
});

非跨域请求:
$.get("Ashx/login/login.ashx",{"参数":"如果木有可以为空"},function(result){
//正常请求返回的数据(无法扑捉到error信息)
});