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

  • 相关阅读:
    继承(JAVA)
    第一个Java应用
    Java面向对象编程
    学生管理系统(分层开发)
    ComboBox的数据联动
    二进制、八进制、十进制、十六进制之间的转换
    C# using的一些事
    JVM最多支持多少个线程?
    Java日志体系居然这么复杂?——架构篇
    java 架构之路(队列)kafka
  • 原文地址:https://www.cnblogs.com/surfsky/p/2673179.html
Copyright © 2020-2023  润新知