轻量级的Ajax解决方案——DynAjax:直接在客户端调用C#类的方法
MS Ajax我在以前一个项目中使用过,感觉太笨重了,速度比较慢,而且出了问题,很难控制。所以我一直想用一个可控制的替代框架。
客户端JS框架肯定首推JQuery,优雅简洁的代码,完美的支持表现和逻辑分离,让人一见倾心。
服务器端框架我找了一些,国内的大部分还都是零散的代码或处于萌芽状态,大多数实现JSON的C#类就没下文了,对安全性都没有整合的建议。
直到今天,我发现了DynAjax,开源的,完全可控的Ajax服务器端框架。原项目作者是法国人(Mr Benoît BEGUIN),现翻译作者的介绍如下。
概述
DynAjax是一个Javascript / Ajax / ASP.Net / C# 结合的Ajax框架,它能帮助我们很容易地直接通过Javascript动态调用服务器端的C#方法(就像Java世界的DWR)。对象序列化基于JSON,支持混合对象转换。
下载最新正式版 (v1.04)
DynAjax v1.04
DynAjax是什么 ?
DynAjax 是以C# .Net / ASP .Net为服务器端、以Prototype为客户端的Ajax框架(译者按:发现DynAjax只有Prototype版本的,稍后一些日子我会发布改写的JQuery版的DynAjax),它支持从客户端通过Javascript直接访问服务器端C#方法.
DynAjax 为谁准备的 ?
以下 C# / ASP .Net 开发者:如果想要添加直接有效、方便的Ajax到你的网站 或者 专业级的项目开发 (我用它来开发自己公司的专业级项目).
DynAjax到底能做些什么,怎么做的?
假设你正在开发一个专业网站程序,你需要保存一些文本数据型的用户信息到数据库中,同时又不发送Html表单,也不刷新页面。显然,你需要使用Ajax。
你打算使用原始的XmlHttpRequest (Ajax) 请求数据和检测返回的数据等等,发送数据并确认正确被保存?这种原始的方法让人感到繁琐。
通过使用DynAjax,你可以很容易地保存这些文本数据,而代价只是写写简单的JavaScript (假设有一个类"MyClass",里面有个公共方法叫“saveText”,方法返回string类型的“ok”,你可以这样调用) :
if (response == "ok") {
--- code here ---
}
很简单的使用方法哦,不是吗?
浏览 示例页 查看更多的例子和源码.
DynAjax是同步还是异步的?
取决你的使用:如果你想同步调用,使用这种语法形式:
if (response >= 2) {
--- code here ---
}
如果你想异步调用,可以使用下面这种语法形式:
if (response >= 2) {
--- code here ---
}
});
DynAjax 推荐采用这种异步方式。
DynAjax支持哪些数据类型可以被客户端Javascript接收?
几乎所有数据类型都能从服务器端返回到客户端。事实上,数据被转换为JSON格式 (JSON是Javascript与其他语言比如C#.Net,Java等交换数据的特殊格式,有点类似xml的功能。)
这种格式支持以下数据类型:
- Strings 字符串
- Numbers (int, decimal...) 数字
- Booleans 布尔
- Arrays 数组
- HashTables 哈希表
- Complex objects复合对象 (由成员变量, Arrays, HashTables, Arrays 或者其他复合对象 等等 构成)
- "null" value
如你所见, 几乎所有(数据类型)都是可能的:你可以做到的。打个比方 , 如果你想开发一个eBay类型的网站,在搜索页面,访问一个返回商品【实例】列表(List)的方法,并显示列表 - 你只需要通过Javascript重复循环访问返回的JSON格式性质列表 (List),进而访问每个商品【实例】,然后访问【实例】属性。这就如你在C#里面做的一样,酷!
如果你想对JSON这个格式有更多了解,请访问 Json description site(英文)。
安全性怎样?
DynAjax 针对所有可远程访问的Method(方法),皆提供了安全验证机制.
事实上,每个方法必须被定义到XML格式的配置文件中,你可以设定这个方法是-需要-还是-不需要-访问验证。.
所以,即便黑客也不能在未验证通过的情况下访问 需要 验证的方法。
安装/设置DynAjax到我的Web应用程序中会麻烦吗?
不麻烦, DynAjax基于8 个文件 :
- DynAjaxHandler.aspx 和DynAjaxHandler.cs - Ajax处理器,接受和分派所有的DynAjax调用
- dynAjaxScript.aspx 和dynAjaxScript.cs - 动态生成客户端JavaScript,属于DynAjax的重要部分 (尽管这个文件扩展名是aspx,但它作为js调用)
- prototype.js - prototype框架
- Newtonsoft.Json.dll - 一个.net的Json程序集
- log4net.dll - 日志库
- dynAjaxConfig.xml - DynAjax 的配置文档(XML格式的)
这8 个文件必须直接拷贝到Web应用程序目录中, 只有dynAjaxConfig.xml可以根据需要进行配置修改,其他文件非专业不要修改.
相当容易,对吧 ?
您可以看看第一本DynAjax教程 DynAjax 教程 01(英文),一步一步地进行DynAjax的安装/配置。
我怎样在xml配置文件中定义方法、类等等?
你可以访问维基百科书: configuration 有详细解释.(译者:作者忘了做链接,但配置确实不难,依样葫芦画瓢即可)
哪些人会对这个框架提供开发支持?
我 (Mr Benoît BEGUIN) 和我的公司 Odesys.请随意联系我们 admin@dynajax.org , 报告Bugs和新的功能特性建议。
-------------------本文为翻译性原创,转载请注明出处,作者:Kai.Ma 博客:http://kaima.cnblogs.com----------
本文转自Kai的世界,道法自然博客园博客,原文链接:http://www.cnblogs.com/kaima/archive/2008/03/15/1104541.html,如需转载请自行联系原作者。
轻量级的Ajax解决方案——DynAjax:直接在客户端调用C#类的方法相关推荐
- java se 7web_JAX-WS ::从独立的Java 7 SE客户端调用Web服务的方法
我正在尝试独立的JAX-WS Web服务,服务器和客户端(意思是,不在 Java EE容器内运行).显示独立服务器端的好SO帖子是 this one. 对于客户端,我发现了以下三种似乎有效的方法(使用 ...
- 使用JQuery从客户端调用C#方法
这篇文章将帮助你怎样实现客户端调用后台定义的方法.JQuery让生活变的更简单,对于它来说,这有一个很简单的方法去实现这个目的. 早前,我们知道一种方法:如果我们想从客户端去调用一个后台添加的函数就需 ...
- Ajax→异步的JavaScript和XML、HTTP请求响应、Ajax简介同步异步、XMLHttpRequest类的方法及属性、原生Ajax、Koa实现Ajax、接口文档、浏览器同源策略、反向代理
浏览器服务器 HTTP请求响应 数据库后端语言 Ajax简介同步异步 Koa前端框架 XMLHttpRequest类的方法及属性 原生Ajax Koa实现Ajax JSON DOM 接口文档 浏览器同 ...
- ashx+jQuery,一个轻量级的asp.net ajax解决方案
跟shotdog老师研究探讨了下asp.net里,除官方庞大asp.net ajax之外的ajax解决方案.我们想法是以不同的服务器端方式输出,然后在页面使用jQuery的ajax实现调用服务器端几个 ...
- 通过javascript实现的轻量级模态框解决方案(支持Ajax)
实现模态框的解决方案在互联网上能找到不少,但是它们大多需要引入诸如Jquery.Mootools.Dojo.YUI等javascript库.如果仅仅是要实现模态框就引入庞大的类库,岂不是得不偿失.这里 ...
- 【翻译】HTML5开发——轻量级JSON存储解决方案Lawnchair.js
[翻译]HTML5开发--轻量级JSON存储解决方案Lawnchair.js 参考文章: (1)[翻译]HTML5开发--轻量级JSON存储解决方案Lawnchair.js (2)https://ww ...
- 专业ajax解决方案汇集
Smashing Magazine给出了85个专业ajax解决方案,它们几乎涵盖了所有的ajax使用场景,而且个个都带图,选你喜欢的,然后下载示例代码就是了! AJAX Auto Completer ...
- 使用 Ajax 实现本地化后的客户端消息验证
來源:http://www.ibm.com/developerworks/cn/web/wa-aj-local/?S_TACT=105AGX52&S_CMP=tec-csdn#download ...
- ES6中新的AJAX解决方案:Promise、Fetch、Response、Axios
目录 (一)Promise对象:包装结果集 一.Promise对象概念: 二.Promise对象使用: 1. Promise对象总是处于以下三种状态之一: 2. 使用方法: (二)Fench()方法: ...
最新文章
- 设计一个健壮的大型文件下载系统
- java 页面换行处理
- react 手指移开_代码简介:React的五个死亡手指
- php留言板翻页,php翻页函数 - 沐攸的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- linux网页防篡改软件,蓝盾网页防篡改系统
- PMP学习笔记 第12章 项目采购管理
- 4个开源对象存储的解决方案
- 机器学习-kmeans(k均值聚类算法)
- 亚马逊后台数据分析-电商数据分析
- 树莓派linux led字符设备驱动( platform)
- Wangle源码分析:EventBaseHandler、AsyncSocketHandler
- Chrome如何安装第三方扩展插件(crx)
- 解决Raid模式下重装系统无法识别固态硬盘的问题
- Synchronization和java内存模型
- OA系统,赋能企业办公管理建设专业化
- 使用METIS软件包进行图划分
- Linux-数据库自动备份
- 如何定义一个高逼格的原生JS插件
- 1.1.3 数组——x的平方(Leetcode 69)
- Spring JDBC的详解
热门文章
- SciPy--数值计算
- Cython入门.VS.C++
- C的function call與stack frame心得
- supervisor安装部署和使用实例
- 【BZOJ1043】下落的圆盘 [计算几何]
- Android的手势的保存
- MySQL 关闭子表的外键约束检察
- 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇:简介及目录》(附上完整工程文件)...
- 使用alertmanager对监控对象进行报警(微信)三
- com.alibaba.fastjson.JSONException: not close json text, token : :