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 ,如需转载请自行联系原作者

相关文章
|
1月前
|
开发框架 缓存 前端开发
利用Visual Basic构建高效的ASP.NET Web应用
【4月更文挑战第27天】本文探讨使用Visual Basic与ASP.NET创建高效Web应用的策略,包括了解两者基础、项目规划、MVC架构、数据访问与缓存、代码优化、异步编程、安全性、测试及部署维护。通过这些步骤,开发者能构建出快速、可靠且安全的Web应用,适应不断进步的技术环境。
|
8天前
|
开发框架 前端开发 .NET
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
集成于VS 2019,EXT.NET前端和ASP.NET后端,搭配MSSQL 2018数据库。系统覆盖样品管理、数据分析、报表和项目管理等实验室全流程。应用广泛,包括生产质检(如石化、制药)、环保监测、试验研究等领域。随着技术发展,现代LIMS还融合了临床、电子实验室笔记本和SaaS等功能,以满足复杂多样的实验室管理需求。
17 3
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
|
25天前
|
开发框架 .NET API
在Windows Server 2008 R2上运行.Net 8应用
在Windows Server 2008 R2上成功运行.Net 8程序,需安装三个补丁:Windows Server 2008 R2 SP1 (KB976932)是基础更新;VC_redist.x64提供MSVC库支持;KB3063858解决.NET运行时加载`kernel.dll`的路径问题。KB3063858可能需要KB2533623。详细信息和下载链接在文中给出。
|
1月前
|
C# Windows
一款.NET开源、简洁易用的Windows桌面小说阅读应用
一款.NET开源、简洁易用的Windows桌面小说阅读应用
|
1月前
|
开发框架 物联网 测试技术
【专栏】.NET 开发:打造领先应用的基石
【4月更文挑战第29天】本文探讨了.NET开发框架为何成为构建领先应用的首选。高性能与稳定性是.NET的核心优势,它采用先进的技术和优化策略,如.NET Core的轻量级设计和JIT/AOT编译模式。跨平台兼容性让开发者能用相同代码库在不同操作系统上构建应用。现代化的开发体验,如C#语言的创新特性和Visual Studio的强大工具,提升了开发者生产力。丰富的生态系统和广泛支持,包括庞大的开发者社区和微软的持续投入,为.NET提供了坚实后盾。
|
1月前
|
机器学习/深度学习 人工智能 Cloud Native
【专栏】洞察.NET 技术的前沿应用
【4月更文挑战第29天】本文探讨了.NET技术的前沿应用,包括.NET Core的跨平台崛起、云原生及AI/机器学习领域的整合。.NET Core支持多平台运行,开源社区的参与促进了其快速发展和性能优化。Xamarin与.NET MAUI助力跨平台移动应用和统一界面开发,而云原生应用借助.NET Core与Azure云服务得以轻松构建和部署。此外,ML.NET和TensorFlow.NET为.NET开发者提供了机器学习和深度学习工具,推动智能应用和边缘计算的创新。.NET技术正持续演进,引领软件开发新趋势。
|
1月前
|
人工智能 物联网 开发者
【专栏】探究.NET 技术的创新应用
【4月更文挑战第29天】本文探讨了.NET技术的最新进展和创新应用,包括.NET 5及后续版本的统一平台、性能提升、跨平台支持、云集成优化和开源社区的贡献。在创新应用场景中,重点介绍了微服务架构、物联网、AI、游戏开发和移动应用。未来,.NET将持续优化性能,深化云原生应用,集成新兴技术,扩大社区生态,并促进相关教育和培训。开发者应把握.NET技术的潜力,积极参与其发展,创造更多创新软件产品。
|
1月前
|
安全 Linux API
【专栏】.NET 开发:打造卓越应用的秘诀
【4月更文挑战第29天】本文介绍了.NET技术的起源、核心特性和应用场景,揭示了其打造卓越应用的秘诀。自2002年推出,.NET历经发展,现支持跨平台,包括.NET Core和.NET 5。其核心特性包括:跨平台兼容性、面向对象编程、内置安全性和高效性能。丰富的类库、强大的开发工具、简洁的语言语法以及活跃的社区支持,使.NET成为构建高效、安全应用的理想选择。随着技术进步,.NET将持续赋能开发者创造更多可能性。
|
1月前
|
人工智能 安全 API
【专栏】理解 .NET 技术,打造优质应用
【4月更文挑战第29天】本文探讨了如何利用.NET技术构建高质量应用程序,介绍了.NET从2002年发展至今的历程,强调其跨平台能力、高效开发、丰富的类库和API、开源生态及安全性等优势。随着.NET 6的规划,平台将更加统一和跨平台,适应云计算、AI等新兴技术。.NET凭借其特性,成为开发者和企业创新的有力工具,未来将继续扮演重要角色。
|
1月前
|
机器学习/深度学习 自然语言处理 安全
【专栏】.NET 开发:构建智能应用的关键
【4月更文挑战第29天】本文探讨了.NET开发在构建智能应用中的关键作用,强调了其强大的框架、工具集、高效性能和跨平台支持。通过实例展示了.NET在人工智能、物联网及企业级应用中的应用。同时,指出了.NET开发面临的挑战,如技术更新的学习成本、性能优化、资源管理和安全隐私保护,并提出了应对策略。随着技术进步,.NET将在智能应用领域发挥更大作用,推动创新与便利。