7,765
社区成员
发帖
与我相关
我的任务
分享
public void ProcessRequest(HttpContext context)
{
var request = context.Request;
using (var reader = new StreamReader(context.Request.InputStream))
{
var text = reader.ReadToEnd();
var obj = JObject.Parse(text);
var commandName = (string)obj["ServiceName"];
var exe = GetMyCommand(commandName); //工厂方法,根据命令类型,找到命令处理对象实例
exe.SetInputParameter(obj);
object output = exe.ExecuteCommand();
context.Response.ContentType = "text/json";
var json = JsonConvert.SerializeObject(output);
context.Response.Write(json);
}
}
WCF 在20年前设计出来时,是为了垄断市场。那时候有服务的注册机制、发现机制,美国的几大公司打算垄断管理市场。这就跟我们99.99999%开发者自己的需求不一致。过了这么多年,WCF 主要功能并没有成立,所以也就无需再用它。public void ProcessRequest(HttpContext context)
{
var request = context.Request;
using (var reader = new StreamReader(context.Request.InputStream))
{
var text = reader.ReadToEnd();
var obj = JObject.Parse(text);
var commandName = (string)obj["ServiceName"];
var exe = GetMyCommand(commandN[code=csharp]
am); //工厂方法,根据命令类型,找到命令处理对象实例
exe.SetInputParameter(obj);
object output = exe.ExecuteCommand();
context.Response.ContentType = "text/json";
var json = JsonConvert.SerializeObject(output);
context.Response.Write(json);
}
}[/code]
只要提交一个 javascript 对象作为输入参数,返回一个 javascript 对象作为输出,无需封装、解析什么 WCF 参数格式之类的开销。
客户端可以支持网页 js、c# 等等各种原生代码。例如c#可以很容易用一句 new WebClient().UploadData(url, Encoding.UTF8.GetBytes(对象序列化))
来访问它,用不着什么客户端代理技术,客户端的输入输出对象也是强类型的。