在Asp.Net中实现类似DWR的功能

guolei14557

guolei14557

2016-02-19 19:21

下面是个在Asp.Net中实现类似DWR的功能教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

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

我想把这个项目开源,但是Blog里不能上传文件,所以有感兴趣的朋友可以给我发邮件wangwk1983@sohu.com或者加我QQ:25744705(身份验证请注明:WAjax,一般人我不加他-_-),大家一起研究!

展开更多 50%)
分享

猜你喜欢

在Asp.Net中实现类似DWR的功能

Web开发
在Asp.Net中实现类似DWR的功能

在ASP.Net中实现RSA加密

ASP
在ASP.Net中实现RSA加密

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在ASP.Net 2.0中实现多语言界面的方法

Web开发
在ASP.Net 2.0中实现多语言界面的方法

在ASP.Net中两种利用CSS实现多界面的方法

电脑网络
在ASP.Net中两种利用CSS实现多界面的方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

asp.NET特写

电脑网络
asp.NET特写

关于ASP.Net中的时间处理

ASP
关于ASP.Net中的时间处理

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

AJAX在PHP中的简单使用

AJAX在PHP中的简单使用

设置 MySql 数据同步

设置 MySql 数据同步
下拉加载更多内容 ↓