频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

用Visual Studio.NET 2008实现Ajax+WCF Service交互

作者: zzqqqzzz 出处:Csdn博客 2008-02-28 10:19    砖    好    评论   进入论坛
阅读提示:Visual Studio.NET 2008已经出了Beta2版。相信有些朋友已经下载尝鲜了。与Visual Studio.NET 2008一起发布的.NET Framework 3.5对于JavaScript及Json有着非常好的支持,这将使得客户端的Ajax代码可以非常方便的和服务器交互,传送数据。下面有一个简短例子可以帮助您了解这些特性。

【引自zzqqqzzz的博客】Visual Studio.NET 2008已经出了Beta2版。相信有些朋友已经下载尝鲜了。与Visual Studio.NET 2008一起发布的.NET Framework 3.5对于JavaScript及Json有着非常好的支持,这将使得客户端的Ajax代码可以非常方便的和服务器交互,传送数据。下面有一个简短例子可以帮助您了解这些特性。

在这个例子里面,我们用Ajax的方式查询服务器上进程情况。

首先我们先打开Visual Studio.NET 2008并创建一个ASP.NET Web Site。

图1

然后,我们在这个项目里面添加一个Ajax-enabled WCF Service: ProcessService。

这里我们可以看到,一个默认的WCF Service已经被生成:

[ServiceContract(Namespace="")]
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
public class DiscService
...{
// Add [WebGet] attribute to use HTTP GET
[OperationContract]
public void DoWork()
...{
// Add your operation implementation here
return;
}

    // Add more operations here and mark them with [OperationContract]
}


这里我们就需要作一些小小的修改:

using System;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.IO;
using System.Diagnostics;
using System.Collections.Generic;

[ServiceContract(Namespace="")]
[AspNetCompatibilityRequirements(RequirementsMode=

AspNetCompatibilityRequirementsMode.Allowed)]
public class DiscService
...{
// Add [WebGet] attribute to use HTTP GET
[OperationContract]
public MyProcess[] GetProcess(string random)
...{
List myProcesses = new List();
Process[] processes = Process.GetProcesses();
foreach (Process process in processes)
...{
MyProcess mp = new MyProcess();
mp.ProcessName = process.ProcessName;
mp.Memory = process.VirtualMemorySize64;
mp.ThreadCount = process.Threads.Count;
myProcesses.Add(mp);
}
return myProcesses.ToArray();
}

    // Add more operations here and mark them with [OperationContract]
}

[DataContract]
public class MyProcess
...{
[DataMember]
public long Memory;

    [DataMember]
public int ThreadCount;

    [DataMember]
public string ProcessName;
}

修改好编译项目,然后用浏览器浏览ProcessService.svc, 这时候可以看到一些WCF的说明关于当前WCF Service的Meta publishing 被disabled了。不要紧,现在你可以在URL后面输入一个/js后缀,比如我这里URL是:http://localhost:1314/AjaxWithWCF/ProcessService.svc/js。这时候你就会看到一个下载提示框,你可以通过这个URL得到一个Javascript的proxy文件,这些javascript是用来访问我们刚刚建立的WCF Service的。

现在我们的Service端准备好了,接下来就是添加一个Ajax Web Form. (默认的Ajax Web Form 会帮我们添加必要的Web.config section, 同事也会在aspx Code里面添加一个ScriptManager)让我们来添加一个按钮和一个搜索框以及简单的Javascript来访问这个Service.

我们可以在Form 里面加上这些代码:

<script type="text/javascript" src="ProcessService.svc/js"></script>
<script type="text/javascript" >...
function GetProcessList()
...{
ProcessService.GetProcess(Math.random().toString(), GetProcessSuccess, GetProcessFail,

"");
}
function GetProcessSuccess(result)
...{
var div = document.getElementById("processlist");
for(var i=0;i<result.length;i++)
...{
var mp = document.createTextNode(result[i].ProcessName + " Thread:" + result[i].

ThreadCount + " memory:" + result[i].Memory);
var newLine = document.createElement("br");
div.appendChild(mp);
div.appendChild(newLine);
}
}
function GetProcessFail(error)
...{
}
</script>
<input type="button" onclick="javascript:GetProcessList()" value="refresh" />
<div id="processlist"></div>

运行结果大家可以自己试一下。需要说明的几点是:

调用时就是:类名.方法名(参数1,参数2,...,成功处理函数,失败处理函数,"");
成功处理函数和失败处理函数处理见sample;
代码一定要加在Form里面,否则会报错;
这里random参数没有被使用,目的有两个,一个是让大家看到参数怎么传递,二来ajax调用Request往往需要一个变化的内容,要不然cache可能会直接返回一个之前的response。

这里列表每次没有清空,大家可以添加一下相关代码。

总的来说,Visual Studio.NET 2008里面的Ajax开发被大大的增强了,这不就是我们一直所期待的吗?

【相关文章】

【责任编辑:碧海蓝天 TEL:(010)68476606】


专题
解析Ajax开发框架 走进Ajax开发应用
Ajax明天会HOT还是OVER?
微软的Ajax:Atlas(ASP.net AJAX)
AJAX 51CTO技术座谈会
Ajax的应用开发
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看67737次)
·UML类图详解 (查看62473次)
·UML统一建模语言 (查看33910次)
·C#技术开发指南 (查看32266次)
·Java编程开发手册 (查看30573次)
·Java编程开发手册 (1196个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (308个砖)
·.NET开发手册 (236个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (654个好)
·Java基础教程 (574个好)
·.NET开发手册 (271个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (187个好)
订阅技术快讯
电子杂志下载
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本