Silverlight整合Asp.net AjAX的技术应用

简介:
Silverlight 将支持开发人员在创建丰富的web应用程序,我们即将看到web应用的一个在视觉是很有吸引力的浪潮的到来, 网页将能够利用灵活的媒体播放,动画和矢量图形绘制。这将有利于扩展web应用。本文描述的是一个股票跑马灯的例子。本例选择一个代码为3209的应用股票作为样本,它可以嵌入到现有的代码,并且提供一个比"html<marquee>"标签更好查 看的ticker。为了能够让用户得到最多的价值,需要有效地通过互联网从服务器获得信息进行交易。 将讨论通过整合silverlight和asp.net AjAx来创造一个丰富的b/s应用。同样通过其他途径也能创造出类似的视觉效果,主要焦点是如何整合这两项技术。通过ajax不断获取新的股票信息抛给silverlight来展现。这个解决方案的关键点如下:
1,采用XAML和Silverlight
2.采用Asp.net AJAX实现无刷新显示。
客户端安装:
Silverlight 1.1Alpha,和任意浏览器
开发和服务端安装:
1,Microsoft .NET 2.0 Framework 本例使用vS2005开发
2,Silverlight 1.1 Alpha(或确认含有Silverlight.js 文件)
3,Asp.net Ajax 在 http://ajax.asp.net/下载
概览:
在下面的的例子里将会分3个级别的内容来介绍
连续变化:
下面给出一个连续变化的视图,程序中包含2各textblock,他们会部分显示当他们处在Silverligth控件的范围内。当达 到末尾时,ticketext2的数据将拷贝ticketext1的数据 ,然后在动画启动的过程中tickertext2的信息就会被更新。理论上讲,我们可以弄很多个textblocks,为了简单期间我们只示例2个。
采用asp.net Ajax 调用web services ,Asp.net AjAX将会为<asp:ServiceReference>标签的web services 自动产生一个javascirpt代理.当页面被加载完后,我们通过组织XAMLTextBlock上的一些数据返回给web service。下面是一个不同对象之间传递消息的时序图:

采用队列在silverlight和asp.net AjAx之间共享数据 因为不是保证所有的数据同时通过ajax取出,所以程序再updatepanel中把asp.net Textbox当作对列来使用。asp.net AJax不断去更新数据,同时silverlight周期性的从队列中取出数据。

CreateSilverlight.js
各文件描述
下面的代码是silverlight插件的运行代码,功能是如果用户没有安装sliverlight将会提示安装silverlight插件
//contains calls to silverlight.js, example below loads TickerTape.xaml
function createSilverlight()
{
    Silverlight.createObjectEx({
        source: "TickerTape.xaml",
    parentElement: document.getElementById("SilverlightControlHost"),
    id: "SilverlightControl",
    properties: {
        width: "500",
        height: "25",
        version: "0.95",
        background: "#00000000",
        isWindowless: false,
        enableHtmlAccess: true },
        events: {}
    });
}
Ticker.aspx
这个页面使用了silverlight展现证券报价数据和asp.netajax从服务器检索数据,把这个textbox被当作队列,asp.netajax 将会把股票数据填充到队列中,当它通过javascript给silverlight控件后将会被从队列中删除。
<!-- AJAX code -->
<asp:ScriptManager runat="server" ID="scriptManager">
    <Services>
        <asp:ServiceReference Path="StockUpdate.asmx" />
    </Services>
</asp:ScriptManager>
下面的asp.net Ajax 代码来承担少许重要的任务,通过增加<asp:ScriptManager> 控件,我们可以访问asp.net Ajax提供的方法,使用aps.net ajax必须在页面有这个控件,这段代码同时也注册了在第一次加载叶面时候调用
javascirpt的 web service StockUpdate.asmx。
<asp:UpdatePanel ID="StockPanel" runat="server">
    <ContentTemplate>
        <asp:Timer ID="RefreshTimer" runat="server" Interval="3000"
            OnTick="RefreshTimer_Tick"> </asp:Timer>
        <asp:TextBox ID="NewStockQueue" runat="server" Width="500">
        </asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>
下面的代码会使用ajax组件定时访问服务器并安排进新的股票队列的textbox
<asp:UpdatePanel ID="StockPanel" runat="server">
    <ContentTemplate>
        <asp:Timer ID="RefreshTimer" runat="server" Interval="3000"
            OnTick="RefreshTimer_Tick"> </asp:Timer>
        <asp:TextBox ID="NewStockQueue" runat="server" Width="500">
        </asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>
TickerTape.xaml
XAML运行在siverlight插件中,它将在屏幕滚动显示股票报价数据,西面两个textblocks将包含进股票市场数据。
<!-- These contain the stock market information that are visible to
the client. -->
<TextBlock x:Name="tickerText1" Canvas.Top="3" FontSize="12"
    Foreground="Yellow" FontFamily="Arial Black" Text="" />
<TextBlock x:Name="tickerText2" Canvas.Top="3" FontSize="12"
    Foreground="Yellow" FontFamily="Arial Black" Text="" /> 
storyboadrd 将会从左边移动数据,直到达到显示边缘,然后调用refreshTicker 代码把数据从tickertext2 复制到tickerText1,从队列中更新数据到ticekertext2和重新启动动画。
<!-- This storyboard will animate the text boxes below,
moving them to the left until they hit the end.
Then it will restart, giving the appearance of continuously moving
information-->
<Storyboard x:Name="tickerAnimation" Completed="RefreshTicker" >
    <DoubleAnimation x:Name="animationText1"
    Storyboard.TargetName="tickerText1"
    Storyboard.TargetProperty="(Canvas.Left)" BeginTime="0"
    Duration="0:0:16" From="1" To="-550" />
    <DoubleAnimation x:Name="animationText2"
    Storyboard.TargetName="tickerText2"
    Storyboard.TargetProperty="(Canvas.Left)" BeginTime="0"
    Duration="0:0:16" From="550" To="0" />
</Storyboard>   
StockUpdate.asmx
这是一个简单得web services,它提供了一个访问makretmanager 类的途径,目的是为了从javescirpt访问webserices,asp.net ajax将会自动的产生一个web代理,只要通过<asp:ServiceReference>标签申明,通过code页面去修改代码。
在GAC添加中添加System.Web.Extensions 和asp.net ajax  namespace后
// This is the ASP.NET AJAX reference we need
using System.Web.Script.Services; 
我们也可以在类中增加scriptserviece属性
[WebService(Namespace = " http://xxxx.name/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class StockUpdate : System.Web.Services.WebService 
MarketManager.cs
该类提供虚拟的随机股票以及一些交易和价格的信息。
Web.config 自动产生,无特殊变化  
Silverlight 能够在多浏览前中产生丰富,震撼的视觉效果和良好的用户交互,但它只是一个空壳,需要有数据来填充,无疑,asp.net ajax是很多种从服务器获取数据的方式中最好的方式。
示例源码下载: TickerSample_src.zip (11.29 kb)

 

本文转自 高阳 51CTO博客,原文链接:http://blog.51cto.com/xiaoyinnet/196223 ,如需转载请自行联系原作者

相关文章
|
6月前
|
前端开发 JavaScript Java
使用Ajax进行异步交互:提升Java Web应用的用户体验
【4月更文挑战第3天】Ajax技术在Web开发中提升UX,通过与服务器异步交互实现页面局部更新,无需完整刷新。核心组件包括XMLHttpRequest、JavaScript、HTML/CSS及服务器端脚本。在Java Web应用中,可使用原生JavaScript或框架如jQuery、AngularJS实现Ajax请求。Ajax减少页面刷新,实现实时数据更新,即时表单验证和动态UI,显著改善用户体验,是现代Web开发不可或缺的一部分。
85 0
|
11天前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
25 1
|
3月前
|
前端开发 Java UED
告别页面刷新时代:Struts 2 Ajax技术揭秘,轻松实现动态加载,Web应用焕然一新!
【8月更文挑战第31天】在Web应用开发中,用户体验至关重要。为减少页面刷新带来的不适,Ajax技术应运而生。Struts 2作为流行的Java EE框架,通过内置的Ajax支持简化了无刷新页面动态加载的实现。本文通过对比传统请求响应模式,展示了Struts 2如何轻松实现Ajax功能,提升了用户体验和开发效率,并灵活地实现了数据交换。然而,使用Ajax时还需注意SEO和跨域请求等局限性。
40 0
|
3月前
|
前端开发 Java UED
瞬间变身高手!JSF 与 Ajax 强强联手,打造极致用户体验的富客户端应用,让你的应用焕然一新!
【8月更文挑战第31天】JavaServer Faces (JSF) 是 Java EE 标准的一部分,常用于构建企业级 Web 应用。传统 JSF 应用采用全页面刷新方式,可能影响用户体验。通过集成 Ajax 技术,可以显著提升应用的响应速度和交互性。本文详细介绍如何在 JSF 应用中使用 Ajax 构建富客户端应用,并通过具体示例展示 Ajax 在 JSF 中的应用。首先,确保安装 JDK 和支持 Java EE 的应用服务器(如 Apache Tomcat 或 WildFly)。
44 0
|
4月前
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
4月前
|
XML 前端开发 API
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
【7月更文挑战第13天】构建现代Web应用的关键在于提供无缝用户体验,这涉及AJAX和Fetch API的异步数据交换以及Python(如Flask)的后端支持。Fetch API以其基于Promise的简洁接口,改进了AJAX的复杂性。例如,一个Flask应用可提供用户数据,前端利用Fetch API在不刷新页面的情况下显示信息。这种结合提升了效率,减少了服务器负载,是现代Web开发的趋势。随着技术发展,预期将有更多工具优化这一过程。
69 3
|
5月前
|
前端开发 Python
Django框架中Ajax GET与POST请求的实战应用
Django框架中Ajax GET与POST请求的实战应用
|
5月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
5月前
|
数据采集 Web App开发 前端开发
技术心得记录:如何用JAVA爬取AJAX加载后的页面(转载)
技术心得记录:如何用JAVA爬取AJAX加载后的页面(转载)
|
6月前
|
前端开发 搜索推荐 安全
AJAX和CSR(客户端渲染)是Web开发中常用的两种技术
【5月更文挑战第8天】AJAX提升用户体验,减轻服务器压力,但对搜索引擎不友好且增加开发复杂度,易引发安全问题。CSR提供快速响应和交互性,改善用户体验,但首屏加载慢,搜索引擎支持不足,同样面临安全挑战。两者各有适用场景,需按项目需求选择。
58 0

热门文章

最新文章

相关实验场景

更多