作者:手机用户2502916257 | 来源:互联网 | 2023-05-17 09:05
轻量级Web数据服务框架:Kingsoc.Web.WebCall1.简介(1)是一种轻量、便捷的Web数据服务框架。(2)可针对任意服务器端的Pagehandler
轻量级Web数据服务框架:Kingsoc.Web.WebCall
1.简介
(1)是一种轻量、便捷的 Web 数据服务框架。
(2)可针对任意服务器端的Page/handler/类(包括动态编译的类,如aspx和app_code中放置的cs类),自动生成客户端 js 调用脚本
(3)以类似WebService Url的方式来提供数据,如:Handler1.ashx\GetTime
(4)返回的格式很丰富(xml,json,text,image),且客户端可指定服务器端返回的数据格式
(5)带缓存机制
ps.该组件可有效的减少基于数据服务的系统复杂性,一套cs代码可供服务器端使用也可以公布给客户端调用,有效的减少了代码量,便于维护。事实上和webapi也有点类似,但没有刻意封装成REST方式,该模块关注的是方法调用。
2.功能
方法映射
- 查看App_Code类映射到客户端的js文件
- 查看Aspx类映射到客户端的js文件
- 查看Ashx类映射到客户端的js文件
- 查看Aspx文件映射到客户端的js文件
- 查看Ashx文件映射到客户端的js文件
方法调用
- 调用App_Code类方法(用映射到客户端的js函数调用)
- 调用App_Code类方法(用Jquery手工写调用代码)
- 调用Aspx类方法
输出格式
- 服务器端返回格式: text
- 服务器端返回格式:json
- 服务器端返回格式:image
- 客户端指定服务器端方法输出格式:xml
- 客户端指定服务器端方法输出格式:json
- 客户端指定服务器端方法输出格式:imagebase64
3.使用
(1)添加 Kingsoc.Web.WebCall.dll 引用
(2)创建任意类。使用[WebCall]特性标签
服务器端代码如:
using System;
using Kingsoc.Web.WebCall;
namespace App
{
public class DemoClass
{
[WebCall(
Type = ResponseDataType.Text,
Description="演示自定义序列化为HTML"),
CacheDuration = 30
]
public string HelloWorld(string info)
{
System.Threading.Thread.Sleep(200);
return "hello world " + info;
}
}
}
(2)注册HttpHandler:
(3)直接用生成的客户端js函数调用
1.引用
生成的 JS 函数如:
App.DemoClass.HelloWorld = function(info, callback, senderId){
var args = {info:info};
var optiOns= {dataType:'text'};
return this.CallWebMethod('HelloWorld', args, options, callback, senderId);
}
2.调用
(1) 同步调用: var txt = App.DemoClass.HelloWorld("kevin");
(2) 异步调用1:App.DemoClass.HelloWorld("kevin", function(data){ $("#clickMe").html(data); });
(3) 异步调用2:App.DemoClass.HelloWorld("kevin", function(){}, "clickMe");
3.若有必要可修改这两个全局函数(可用于做全局loading效果)
App.PreCallWebMethod = function (id) {if (id != null) $("#" + id).html("loading...");};
App.AfterCallWebMethod = function (id, data) {if (id != null) $("#" + id).html(data);};
(4)手工写jquery方法调用
$.ajax({
url: "WebCall.App.DemoClass.axd/HelloWorld",
data: { info: 'kevin' }
}).always(function (ret) {
$("#clickMe").html(ret);
});
4.下载
示例项目:TestWebCall