第一章:使用Web Service消费网络方法
1.Web Service:可以实现多个站点之间互相通信,大大缩小Web应用程序之间的“通信隔阂“,增强了交互性。
特点:
1) Web Service是可互操作的分布式应用程序:
可实现不同应用程序和在不同系统平台上开发出来的应用程序之间相互通信,使用SOAP协议,避免复杂的协议转换。
2) Web Service具有普遍性,它使用HTTP和XML进行通信:
任何支持HTTP和XML技术的设备都可以拥有和访问Web Service,比如:IE,智能手机,不同操作系统也可以。
3) Web Service甚至可以穿越防火墙,真正实现自由通信:
一般我们的Web服务器以及客户端很可能位于防火墙之后,这时默认都会关闭其他端口而开放HTTP端口,所以可以穿越防火墙。
4) Web Service通过SOAP实现异地调用:
SOAP是Web Service的基本通信协议,它是基于XML的,通过它可以实现不同项目、不同站点,甚至异地的调用。
2.创建Web Service
1)添加新项,选择Web服务,这时增加了一个后缀名为asmx的文件,在App_Code文件夹下增加后缀为.cs的类。
2)所有Web 方法上面必须添加[WebMethod]特性,以表示它是一个Web方法,一个文件可以有多个Web方法。
修改Web方法来实现我们的功能。
3.发布Web Service
1)发布网站。
2)创建虚拟目录。
3)浏览Web Service 页面,可看到所有Web方法。
3)测试Web Service方法。
4.调用Web Service
1)右击网站,选择”添加Web引用”,在URL处填写我们发布的Web Service网址,单击”前往”,可看到发布的Web方法。
修改Web 引用名,该引用名即为对于WebService的引用
2)实例化Web Service类
Web引用名.Web Service名 对象名 = new Web引用名.Web Service名();
3)调用Web Service方法
对象名.Web方法名(); 向普通方法一样调用。
5.目前学过的文件类型
aspx 一般Web窗体 ascx用户控件文件 ashx一般处理程序 asmx为Web Service文件
第二章:使用AJAX改善用户体验(一)
1.AJAX:使页面数据可以通过无刷新方式更新。典型应用:Google Suggest,Google Maps………
2.AJAX组成原理:是JavaScript、CSS、DOM、XmlHttpRequest四种技术的集合体,其中XmlHttpRequest为核心对象,正是通过它实现了以异步方式获取服务器数据。
3.AJAX基本原理:XmlHttpRequest从服务器(数据服务器或Web服务器)获取数据到客户端的内在中,然后JavaScript根据实际需要对这些资源进行处理,并通过CSS和DOM实现界面布局呈现给浏览器。
4.ASP.NET AJAX框架:大大提高了Web程序的开发效率,封装控件,使用控件
由五部分组成:核心组件、AJAX ControlToolkit工具包、AJAX CTP增值组件、AJAX示例代码、AJAX Library类库
5.ASP.NET AJAX框架使用前先安装,五个主要组件如下:
1)ScriptManager控件,全局脚本控制器,每个AJAX页面必须有,并且只能有一个。
2)ScriptManagerProxy控件,为ScriptManger代码,因为ScriptManager控件每个页面只能包含一个,所以当母版页中使用ScriptManger控件后,在内容页中就只能使用ScriptManagerProxy控件。
3)UpdatePanel控件,更新面板,它用来实现页面无刷新效果,使用时将更新内容放在内容模板中即可。
重要属性:UpdateMode,表示更新面板采用何种方式获取服务器端资源
21)Always表示每次浏览器向服务器端请求时,都无条件刷新该更新面板中的内容。
22)Conditional表示有触发条件的更新,当触发条件满足后才更新更新面板中的内容。
<asp:ScriptManager id=”ScriptManager1” runat=”server”></asp:ScriptManager>
<asp:UpdatePanel id=”UpdatePanel1” runat=”server” UpdateMode=”always”>
<contentTemplate>
<asp:GridView id=”gvAccounts” runat=”server”></asp:GridView>
<contentTemplate>
<triggers> <asp:AsyncPostBackTrigger ControlID=”btnInOutPanel” EventName=”Click”> </triggers>
</asp:UpdatePanel>
注意:ControlID为触发更新的控件ID属性, EventName为触发更新的事件名称
4)UpdateProgress控件,用于在更新过程中给出提示,可起到类似于进度条的功能,为了实现无刷新效果,引发更新的件和UpdateProgress通常放在UpdatePanel控件的内容模板中。
<asp:UpdateProgress id=”UpdateProgress1” runat=”server”>
<progressTemplate>正在加载数据,请稍候…</ progressTemplate >
</ asp:UpdateProgress >
5) Timer控件,用于间隔一定的时间自动刷新页面或完成特定的任务。
<asp:Timer id =”Timer1” runat=”server” Interval=”1000” onTick=”Timer1_Tick”></asp:Timer>
表示每1000毫秒,也就是每1秒钟触发一次Timer1_Tick事件。
6.扩展控件自动完成功能:AutoCompleteExtender控件。
1)创建Web Service,在Web Service类上方添加[System.Web.Script.Services.ScriptService()]特性,该特性是Web Service专门为AJAX订制的特性,在ASP.NET AJAX中调用Web Service时必须添加此特性。
2)添加Web方法,要调用的Web方法两个参数名称和类型是固定的,返回类型必须是string[]型
[WebMethod]
Public string[] GetHotSearchByKeywords ( string prefixText , int count )
{ 操作数据库,取得数据后返回,其中prefixText为文本框输入的字符,count为所返回数组元素的个数 }
3)页面:<asp:TextBox id=”search” runat=”server”></asp:TextBox>
<cc1:AutoCompleteExtender TargetControlID=”search” ServicePath=”MyWebService/HotSearchKeyWords.asmx”
ServiceMethod=”GetHotSearchByKeywords” MinimumPrefixLength=”1” EnableCaching=”true”
CompletionSetCount=”10” ID=”AutoCompleteExtender1” runat=”server” >
注意:TargetControlID为所操作的文本框
ServicePath为Web Service的路径
ServiceMethod为Web方法
MinimumPrefixLength为最低输入几个字符有提示
EnableCaching是否应用缓存
CompletionSetCount为最多显示多少行提示
第三章: 使用AJAX改善用户体验(二)
1. Accordion控件,用来实现菜单折叠效果的控件,常用来做导航菜单和分组数据的展示。
静态使用方式见书上55-57页
动态使用方式示例:详细见书60-61
IList<category> list = CategoryManager.GetAllCategories();
Foreach(category item in list)
{
//实例化一个AccordionPane控件
AccordionPane ap = new AccordionPane();
//实例化一个标签控件用来显示分类名
Label lblCategoryMenu = new Label();
//指定标签Text属性为分类名
lblCategoryMenu.Text = item.Name;
//根据目录ID查找该分类对应的热门书,循环加入到内容菜单部分
Int id = item.Id; // 得到目录id
//根据分类id查找对应的浏览量排前3名的书信息
IList<book> booklist = BookManager.GetBooksByCategoryId(id);
Foreach(Book bitem in bookList)
{
HyperLink bookMenu = new HyperLink();
bookMenu.Text = bitem.Title+”<br>”; //指定HyperLink的Text属性为书名
ap.contentContainer.Controls.Add(bookMenu); //将书名超链接控件添加到AccordionPane内容部分
}
//将标签控件添加到AccordionPane的标题部分
Ap.HeaderContainer.Controls.Add(lblCategoryMenu);
//将AccordionPane追加到Accordion的Panes集合中
This.Accordion1.Panes.Add(ap);
}
2.CollapsiblePanel控件:可以使用按钮,图片等控制实现折叠效果,也就是折叠面板效果
详细见书62-65,看64页属性
3.Rating控件:用于实现等级评价功能
常用属性:CurrentRating:当前默认等级 MaxRating:最大等级
StarCssClass:等级星样式 FilledStarCssClass:选中的等级星样式
4.Calendar控件:日历控件,解决了传统的日历控件的三大问题:
1)无法自动与文本框绑定 2)页面刷新 3)无法自动显示和隐藏
常用属性:TargetControlID:与日历绑定的TextBox的ID
Format:日历显示的日期格式
CssClass:日历的样式
PopupButtonID:通过选择按钮弹出日期时按钮的ID
5.ModalPopup控件:用于显示弹出模式窗口
常用属性:TargetControlID:用来控制弹出窗口的控件ID
PopupControlID:要弹出的控件ID (也就是,点击TargetControlID弹出PopupControlID)
两个重要方法:Show() 显示模式窗口 Hide() 隐藏模式窗口
6.Tabs控件:选项卡控件
常用属性:ActiveTabIndex:默认显示的选项卡索引
Eg:<cc1:TabContainer id=”” runat=””>
<cc1:TabPanel id=”” runat=”” HeaderText=”注册用户”>
<ContentTemplate> …………………. </ContentTemplate>
</cc1:TabPanel>
</cc1:TabContainer>
TabPanel常用属性:HeaderText 选项卡标题
第四章:缓存技术
1. 缓存技术:可以大大提高数据访问的效率,缺点:存在数据过期问题,所以,对于需要实时更新的内容不可用缓存
2. 缓存有三种方式:1) 整页缓存 2) 页面部分缓存 3)应用程序缓存
3. 整页缓存:最简单,最常用的缓存,
适用情况 1)不需要频繁更新数据的页面 2) 占用大量时间和资源编译生成的页面
语法: <%@OutputCache Duration=”10” VaryByParam=”id” VaryByControl Location=”any” %>
Duration:必需属性,表示页面被缓存的时间,以秒为单位
VaryByParam为根据参数进行缓存,VaryByControl为根据控件缓存,两者必选其一
页面缓存:缓存后替换方式(先缓存整个页面,再替换掉不需要缓存的),使用SubStitution控件实现
SubStitution控件通过MethodName指定方法名,该方法必须符合以下三要素:
1) 必须是static修饰 2) 返回值类型必须为string 3) 参数类型必须为HttpContext
应用程序缓存: 能过Cache类实现,存储应用程序级别的信息,添加方式有如下三种
1) 指定键和值 Cache[“键”] = 值,无法设置有效期,依赖项等信息
2) 使用Add方法,为最不灵活的,必须7个参数都写完整
3) 使用Insert方法,灵活方便,有多种重载
检索缓存:由于缓存易失,所以获取应用程序缓存之前必须要先判断,然后再获取
删除缓存:1)自动移除:缓存已满,过期,依敕项改变
2) 手动移除:Cache.Remove(“键”);