轻量级 Web 数据服务框架 Kingsoc.Web.WebCall

轻量级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

转载请注明出处:http://surfsky.cnblogs.com 

原文地址:https://www.cnblogs.com/surfsky/p/2673179.html