轻量级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: <httpHandlers> <add verb="*" path="WebCall.*.axd" type="Kingsoc.Web.WebCall.WebCallHandler, Kingsoc.Web.WebCall"/> </httpHandlers> (3)直接用生成的客户端js函数调用 1.引用 <script type="text/javascript" src="WebCall.App.DemoClass.axd/js"></script> 生成的 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