2.ASP.NET AJAx架构--客户端框架的简单实现

简介:

完整代码如下:02_ClientCentric.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="02_ClientCentric.aspx.cs" Inherits="ClientCentric" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Client-Centric Example</title> </head> <body> <form id="form1" runat="server"> <h3>客户端为中心的解决方案【使用web服务实现】</h3> 添加一个ScriptManager控件,然后还要声明一个服务引用指向本地web服务,从而生成服务的JavaScript代理,<br /> 这样就可以在客户端脚本中调用这个服务了。 <!--增加一个服务引用来生成JavaScript代理--> <asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="HRService.asmx" /> </Services> </asp:ScriptManager> <h2>Employee Lookup</h2> <div> <select id="Departments" size="5"> <option value="Engineering" >Engineering</option> <option value="HR">Human Resources</option> <option value="Sales">Sales</option> <option value="Marketing">Marketing</option> </select> </div> <br /> <div> <span id="employeeResults"></span> <span id="loading" style="display:none;" mce_style="display:none;"> <img src="images/indicator.gif" mce_src="images/indicator.gif" alt="" />   Loading ... </span> </div> <mce:script type="text/javascript"><!-- var departments = null; //注册加载(load)和卸载(unload)事件 Sys.Application.add_load(page_load); Sys.Application.add_unload(page_unload); function page_load(sender, e) { departments = $get("Departments"); //获取到列表框 $addHandler(departments, "change", departments_onchange); //注册改变(change)事件的注册 //addHandler:在运行时将事件与事件处理程序相关联,或者在添加事件处理程序时声明要执行的代码。 } function page_unload(sender, e) { $removeHandler(departments, "change", departments_onchange); //取消改变(change)事件的注册 } function departments_onchange(sender, e) { $get("employeeResults").innerHTML = ""; $get("loading").style.display = "block"; var selectedValue = departments.value; //调用JavaScript的代理 HRService.GetEmployeeCount(selectedValue, onSuccess); /* 第一个参数:列表中选中的部门项。 第二个参数:是GetEmployeeCount()方法成功返回时的一个回调函数名。 */ } function onSuccess(result) //显示结果 { $get("loading").style.display = "none"; $get("employeeResults").innerHTML = "Employee count: " + result; } // --></mce:script> </form> </body> </html>

添加的web服务类:HRService.asmx
<%@ WebService Language="C#" Class="HRService" %> using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Script.Services;//脚本服务的命名空间 [ScriptService] //声明脚本支持的有关服务 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class HRService : System.Web.Services.WebService { [ScriptMethod] //声明脚本支持的有关方法 [WebMethod] public int GetEmployeeCount(string department) { System.Threading.Thread.Sleep(2000); return HumanResources.GetEmployeeCount(department); } }
用到的数据访问类:HumanResources.cs
using System; public static class HumanResources { public static int GetEmployeeCount(string department) { int count = 0; switch (department) { case "Sales": count = 10; break; case "Engineering": count = 28; break; case "Marketing": count = 44; break; case "HR": count = 7; break; default: break; } return count; } }  

目录
相关文章
|
人工智能 自然语言处理 数据可视化
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
|
12月前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
897 6
|
12月前
|
人工智能 API 数据库
Semantic Kernel .NET 架构学习指南
本指南系统解析微软Semantic Kernel .NET架构,涵盖核心组件、设计模式与源码结构,结合实战路径与调试技巧,助你从入门到贡献开源,掌握AI编排开发全栈技能。
1310 2
|
机器学习/深度学习 安全 算法
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
3097 79
十大主流联邦学习框架:技术特性、架构分析与对比研究
|
存储 分布式计算 关系型数据库
架构/技术框架调研
本文介绍了微服务间事务处理、调用、大数据处理、分库分表、大文本存储及数据缓存的最优解决方案。重点讨论了Seata、Dubbo、Hadoop生态系统、MyCat、ShardingSphere、对象存储服务和Redis等技术,提供了详细的原理、应用场景和优缺点分析。
|
人工智能 前端开发 JavaScript
前端架构思考 :专注于多框架的并存可能并不是唯一的方向 — 探讨大模型时代前端的分层式微前端架构
随着前端技术的发展,微前端架构成为应对复杂大型应用的流行方案,允许多个团队使用不同技术栈并将其模块化集成。然而,这种设计在高交互性需求的应用中存在局限,如音视频处理、AI集成等。本文探讨了传统微前端架构的不足,并提出了一种新的分层式微前端架构,通过展示层与业务层的分离及基于功能的横向拆分,以更好地适应现代前端需求。
806 0
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
1156 0
|
人工智能 自然语言处理 JavaScript
Github又一AI黑科技项目,打造全栈架构,只需一个统一框架?
Motia 是一款现代化后端框架,融合 API 接口、后台任务、事件系统与 AI Agent,支持 JavaScript、TypeScript、Python 多语言协同开发。它提供可视化 Workbench、自动观测追踪、零配置部署等功能,帮助开发者高效构建事件驱动的工作流,显著降低部署与运维成本,提升 AI 项目落地效率。
1009 0
|
Java 开发者 Spring
Spring框架 - 深度揭秘Spring框架的基础架构与工作原理
所以,当你进入这个Spring的世界,看似一片混乱,但细看之下,你会发现这里有个牢固的结构支撑,一切皆有可能。不论你要建设的是一座宏大的城堡,还是个小巧的花园,只要你的工具箱里有Spring,你就能轻松搞定。
617 9