zoukankan      html  css  js  c++  java
  • 用Asp.Net实现类似DWR的功能

        熟悉Ajax的人应该都知道DWR这个开源框架,它让Ajax程序开发变得简单,但是目前好像只能支持Java,今天就来说一下我在Asp.Net项目中怎样模拟实现DWR的功能:

        创建一个接口(姑且叫做IWAjaxEngine),其作用定义对Ajax暴露的方法,我设计的是一个返回string类型的方法,还有一个是没有返回值 的方法,两个方法的参数都是Dictionary<string, string>类型。这样,Ajax在调用后台业务逻辑类时,都可以通过这个接口类型进行调用,而那些业务逻辑类只要是实现了这个接口,就可以通过 类名反射进行初始化,反射部分下面详细再说。

        在App_Data目录下新建一个XML文档作为配置文件,放在这个目录下的原因,大家应该都知道吧,是可以起到保护作用。这个配置文件中就是专门配置实 现IWAjaxEngine接口的业务逻辑类的信息(类名、参数列表、参数类型等等),然后创建一个封装这个配置文件的类(WAjaxConfig),可 以把这个类的实例设为static,这样就不用每次都读配置文件了。

        接下来就说到重点部分了,也就是Ajax怎么直接调用后台业务逻辑类。我的想法是创建一个Web窗体,也就是.aspx和.aspx.cs文件,在 page_load事件中根据Ajax传递过来的参数(包含能够找到配置文件中类信息的ID标识)在WAjaxConfig中找到要调用的类名(找不到的 话就抛出异常),然后通过类名反射创建一个该类的实例(当然是以IWAjaxEngine接口作为该实例的类型),有了实例,我们就可以调用接口定义的两 个方法,要么返回字符串要么什么都不返回。

        整个实现的思路就是这样,说起来与DWR还是有所不同的,不过已经满足了我的需求。当然这里说的有些简单,真正做起来并不是很容易,有很多需要细化的地 方。另外,我还做了一些辅助的工具类,可以生成XML或JSON字符串;前台也实现了类似于DWR引擎脚本的engine.js和工具集脚本 util.js(其实是把DWR的util.js搬过来了,谁让人家做的功能强大呢,不过也添改了一些代码,因为发现有些js代码不符合标准DOM操 作,FireFox就不支持了,还有些方法不支持XML DOM 的NodeList。在此谢谢那位DWR的作者-_-),这样,我们就可以在前台像使用DWR一样进行编程了。

  • 相关阅读:
    linux下配置SS5(SOCK5)代理服务
    HttpServletRequest修改/添加header和cookie参数
    jquery ajax 设置全局(常量和变量)
    mysql 5.1超过默认8小时空闲时间解决办法(错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure)
    jquery带token访问接口ajax
    CentOS 7下彻底卸载MySQL数据库
    IntelliJ IDEA 终极破解
    haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)
    RocketMQ集群搭建
    IntelliJ IDEA14如何配置tomcat
  • 原文地址:https://www.cnblogs.com/top5/p/1562235.html
Copyright © 2011-2022 走看看