62,263
社区成员
发帖
与我相关
我的任务
分享
不过我给楼主的回答就是html(argular,vue)+webapi .. 不需要什么mvc razor view 统统都不要....
只保留接口 返回json 就够了...其他啥也不用
我看新建API项目是在Asp.net MVC下创建,误成为MVC模式了,他们的一个是继承Controller,一个是继承ApiController,是我搞错了。
那楼主问的问题
换句话说:假设都是使用MVC(使用 Razor视图引擎),
(1)Action 返回一个非空的View,服务器端渲染数据;
(2)Action返回一个空的View,客户端再使用ajax去请求数据,在客户端渲染数据;
那问题就变成了讨论【服务器端渲染数据】与【客户端渲染数据】。
服务器端渲染数据,安全性高,数据库量大的时候,影响效率,
客户端渲染数据,安全性不高,导致请求次数变多。
在一个项目中,什么时候使用服务器端渲染,什么时候使用客服端渲染,得看项目需求、数据量等等,所以应该是(1)(2)结合,而不是单纯的(1)或(2),

public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var request = context.Request;
using (var reader = new StreamReader(context.Request.InputStream))
{
var text = reader.ReadToEnd(); //断点调试这里,可以得到客户端的所有提交的 string
var obj = JObject.Parse(text); //从收到的 string 转换为 Json 格式
var commandName = (string)obj["ServiceName"];
switch (commandName)
{
case "调用功能A":
方法A(obj, context); //传入整个 obj 以及 context,后者用来 Respose。
return;
case "调用功能B":
var result = 方法B(obj["data"]);
将result进行json序列化并通过context.Response输出;
return;
default:
Type t = dictionary[(string)obj["serviceName"]); //dictonary 是初始化好的服务功能名与类型对应的字典
HMyCommand h = (HMyCommand)Activator.CreateInstence(t); //你为所有的服务都实现了一个通用的接口
h.Execute(obj["data"], context);
return;
}
}
}
这类,你可以自己取得客户端上行的 json 格式的数据,使用自定义通用的服务模式,取得结果并返回 json 格式的结果。你可以自己插入自己的中间处理环节,例如缓存等等,自由插入自己想集成的操作,不用考虑什么路由功能。