RSS 2.0 Feed
AJAX/ATLAS
摘要:Jesse Liberty,the Silverlight Geek,正在silverlight.net上发表一个《Silverlight教程系列》。目前已经发表了四篇,看上去很不错: 教程0: 路线图教程1: 控件教程2: 数据绑定教程3: 样式和模板...[阅读全文]

posted @ | Feedback (2) | Filed Under [ AJAX/ATLAS WPF/SilverLight ]

摘要:IE8带来了一堆改进和新功能,这些改进包括CSS 2.1 兼容,开发者工具,更好的AJAX开发支持等,详见 How do I make my site 'light up' with Internet Explorer 8? http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/DevelopersNew.htm 比较关心的是涉及AJAX开发的,更为详细的文档在这里 Better AJAX Development http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&ReleaseId=581 这些改进包括: 1.AJAX导航支持(前进,倒退按钮工作了!) 2.DOM储存(简洁的API,每个域可在本地保存10M的数据) 3.网络连接事件(online以及offline事件,还可以通过window.navigator.onLine来监测连接状态) 4.把per host的并发连接数从2增加到6 5.XMLHTTPRequest改进,包括添置了timeout属性,以及ontimeout事件,以允许开发人员中止请求 更为激动人心的是对跨域请求(XDomainRequest-XDR)的支持!不再需要通过同源服务器来作为代理服务器,只要异域返回 XDomainRequestAllowed=1的header就可以(譬如通过Response.AppendHeader("XDomainRequestAllowed","1") ): // 1. Create XDR object xdr = new XDomainRequest(); // 2. Open connection with server using POST method. xdr.open("POST", "http://www.contoso.com/xdr.txt") // 3. Send string data to server. xdr.send("data to be processed") 以前曾在博客里谈到如何通过URL的hash来在来自不同域的网页之间通讯,绝对是比较丑陋的方案: http://blog.joycode.com/saucer/archive/2006/10/03/84572.aspx IE8现在支持跨文件消息通讯(Cross-Document Messaging-XDM)!通过onmessage事件和postMessage方法,两个来自不同域的网页可以进行通讯: 窗口A:(来自contoso.com) // 1. Create event handler for message event. <document.onmessage = HandleMsg()> // 2. Post message to a secure page B. window.postMessage("Hello world", "https://lucernepublishing.com") 窗口B:(来自lucernepublishing.com) // 3. Create event handler for message event. <document.onmessage = HandleMsg()> // 4. Create event object off window. var e......[阅读全文]

posted @ | Feedback (3) | Filed Under [ ASP.NET/IIS AJAX/ATLAS ]

摘要:在MVC中,服务器端的行为是由进来的URL控制的,譬如,在Scott Guthrie的博客中示范的/Products/Categories URL,会调用ProductsController的Categories方法,该方法从数据库里获取数据,然后它通过RenderView调用某个视图(示范中是“Categories”视图),把数据传给视图,该视图会根据传入的数据生成HTML,返回给用户。 如果是个添加、更改数据的操作,譬如添加一个分类,那么你大概会有类似这样的表单(譬如来自“CategoryInfo”视图): <form method="post" action="/Products/AddCategory"><input type="text" name="Category.Name">...<input type="submit" name="btnAdd" value="submit"></form> 在用户提交表单时,系统会调用ProductsController的AddCategory方法,根据AddCategory的签名,系统会自动填充生成Category对象所需的数据或者你需要从Request对象中手工获取数据,更新数据库完毕之后,你可以通过转向等方式返回到/Products/Categories。 在这2个例子(/Products/Categories和/Products/AddCategory)中,我们有一个控制器ProductsController,和2个视图(“Categories”和“CategoryInfo”)。视图只用作显示HTML之用,所有的应用逻辑都在ProductsController中。 在目前的WebForm做法中,你大概会有2个网页Categories.aspx和AddCategory.aspx。常见的做法是,在Categories.aspx的Page_Load或其他事件中,你大概会调用某个服务对象或Presenter对象获取数据,然后根据数据生成HTML。对于AddCategory.aspx,在用户提交表单后,postback返回当前页面,系统会调用按钮点击的处理函数,然后你大概会在该函数里收集数据,调用某个服务对象或Presenter对象更新数据库,然后转向到Categories.aspx。在这个做法中,系统是根据从表单返回的Request.Form数据(ViewState,以及在Request.Form存在类似btnAdd=submit这样的数据)来决定调用那个方法的(因为一个页面上可以有保存按钮,删除按钮等等),控制是在页面层次,跟Products有关的应用逻辑散居于多个页面的后台代码中(你也许可以使用MVP这样的模式,把控制的逻辑集中到Presenter里去,但这改变不了最初的控制来自页面这个事实,而且一般情形下,一个Presenter大多只跟一个页面有关联)。 有个同事问我,那么WebForm中的AutoPostback=true的DropDownList该如何在MVC中实现呢?在WebForm中,如果一个DropDownList设置了AutoPostback=true,用户改变选择时,表单会自动postback,ASP.NET会对该DropDownList的ViewState里保存的数据和该DropDownList返回的值做比较,然后触发DropDownList的SelectedIndexChanged事件。。。在MVC中,你大概可以这么做 <select name="category"  onchange="this.form.action='/Products/ChangeCategory';this.form.submit();">...</select> 在表单自动提交后,MVC会调用ProductsController的ChangeCategory方法,该方法会根据情况做些操作,调用视图等等。如果这个选项改动需要更新当前页面的某个局部,那么onchange也许可以调用某个AJAX方法,只传回必要的数据到服务器,而ProductsController的ChangeCategory方法可以返回要做的HTML变化等。 ...[阅读全文]

posted @ | Feedback (10) | Filed Under [ ASP.NET/IIS AJAX/ATLAS ]

摘要: 【来源:Tim Sneath】 如果你在学习Silverlight或者想建造一个录像网站,那么Tim Sneath推荐的这个刚刚在CodePlex上发布的项目,Video.Show,是个非常有参考价值的项目。这个项目使用了微软最新的技术和产品,.NET Framework 3.5, ASP.NET AJAX, LINQ, Silverlight, Expression Encoder 和 Silverlight Streaming等。它提供了录像上传,编码,添加tag,观看和评论录像的功能,下面是一些该项目的特性: 1.用以浏览录像的录像墙,把鼠标移到录像图标上面可以预览录像2.基于时间标记的评论系统,可以把录像暂停在某个有趣的时刻,添加评论,这些评论在回放时就会出现3.使用ASP.NET的网站成员功能,用来登录,生成自定义的用户信息,添加书签和tag,上传录像等4.针对没安装Silverlight的用户的初次体验,示范了检测和安装Silverlight的最佳实践5.使用Web服务实现索取录像目录,以及tag和书签等功能6.使用Expression Encoder对录像进行编码以及上传到Silverlight Streaming等后台批处理任务 该项目是以源码的形式,在Microsoft Public License许可下发布的,你完全可以使用这些源码推出你自己的录像网站。...[阅读全文]

posted @ | Feedback (7) | Filed Under [ ASP.NET/IIS .NET AJAX/ATLAS WPF/SilverLight ]

摘要: Scott Hanselman在博客上强调1. ASP.NET MVC框架不是 Web Forms 4.0,而是提供一个选项,好比汽车和摩托车,到达目的地可以用多种工具,每种工具都有其长项和短处,但别削足适履2. ASP.NET MVC框架将成为System.Web.Mvc, 将与ASP.NET的子系统相兼容,这意味着你也可以在其中使用或滥用Session, Cache, Personalization, Roles, Membership等3. ASP.NET MVC框架的扩展性会很好,可以使用Castle Windsor作为它的IoC容器,可以用NHibernate做持久,Brail做视图等 他同时提供了他在DevConnections做的MVC示范的源码(可惜没有跟MVC相关的DLL),可以在他的博客上下载。 有人抱怨,自ASP.NET AJAX 1.0发布以来,ASP.NET AJAX的进展好像不是很大,Joe Stagner指出在ASP.NET 3.5和Visual Studio 2008中, 1. ASP.NET AJAX不再是单独的附加产品,而是集成进了ASP.NET2. Visual Studio 2008对JavaScript提供完全的和动态的Intellisense支持3. Visual Studio 2008提供对JavaScript的调试支持,你可以加断点,使用Watch, Immediates, Call Stack等窗口4. WCF 支持JSON, RSS, 和 POX,意味着你可以使用AJAX 调用WCF服务5. AJAX 控件工具包已多达34个控件6. ASP.NET提供64个ASP.NET AJAX “How Do I”录像 另外ASP.NET Futures方面,1. ASP.NET Futures提供对Safari浏览器的历史的支持,包括在客户端对历史的支持2. ASP.NET Futures的CSS Selectors APIs 与W3C推荐相兼容3. ASP.NET Futures的脚本资源分离器允许你将程序集中内嵌的资源脚本转换成单独的脚本文件 另外,如果你想参与,ASP.NET控件工具包项目是开源的,具体细节参考Joe Stagner的博客: You can contribute to the ASP.NET AJAX Control Toolkithttp://weblogs.asp.net/joestagner/archive/2007/11/09/you-can-contribute-to-the-asp-net-ajax-control-toolkit.aspx...[阅读全文]

posted @ | Feedback (5) | Filed Under [ ASP.NET/IIS .NET AJAX/ATLAS ]

摘要:【来源:Joe Stagner】 多产技术作家Jesse Liberty最近加入了微软的Silverlight开发团队,他的工作方向是“建造开发者社区(building Developer Community)”。 这里是他在silverlight.net上的博客地址:http://silverlight.net/blogs/jesseliberty/ 他开始了一个使用silverlight.net上的资源从头开始学习Silverlight的博客系列, The Great Asynchronous Learning Experiment - Day 0http://silverlight.net/blogs/jesseliberty/archive/2007/08/06/the-great-asynchronous-learning-experiment-day-0.aspx The Great Asynchronous Learning Experiment - Day 1 http://silverlight.net/blogs/jesseliberty/archive/2007/08/06/the-great-asynchronous-learning-experiment-day-1.aspx The Great Asynchronous Learning Experiment - Day 1 Revisited - S.L. 1.0 vs. 1.1http://silverlight.net/blogs/jesseliberty/archive/2007/08/08/the-great-asynchronous-learning-experiment-day-1-revisited-s-l-1-0-vs-1-1.aspx The Great Asynchronous Learning Experiment - Day 2 http://silverlight.net/blogs/jesseliberty/archive/2007/08/07/the-great-asynchronous-learning-experiment-day-2.aspx Joe Stagner的贴子里还提到一个非常详尽的Silverlight资源列表 What is Microsoft Silverlight? Silverlight Resources, Articles and Tutorials http://www.plentyofcode.com/2007/07/what-is-microsoft-silverlight.html...[阅读全文]

posted @ | Feedback (3) | Filed Under [ ASP.NET/IIS AJAX/ATLAS WPF/SilverLight ]

摘要: 今天在拉斯维加斯举行的MIX大会上,微软宣布推出1. Silverlight 1.0 beta 2. Silverlight 1.1 alpha3. Expression Studio4. Expression Blend 2 预览版5. Silverlight Streaming (Tim Sneath 在他的博客上列出了发布Silverlight Streaming媒体内容的步骤,可以上传4GB的内容!) 什么是Silverlight 1.1 alpha? 根据BCL团队的博客,Silverlight 1.1 alpha是跨浏览器,跨平台的.NET CLR运行时插件,用以发送下一代基于.NET的媒体体验和丰富的交互性web应用,Silverlight 1.1 Alpha 的基础类库是.NET Framework 3.5 基础类库的子集。 这是从Silver FAQ里拎出来的: 『问』:Silverlight 1.0 Beta 与 Silverlight 1.1 Alpha之间有什么不同?『答』:Silverlight 1.1 Alpha是基于Silverlight 1.0 Beta的,但添加了托管代码的编程功能和托管代码对象模型。 『问』:Silverlight 1.1 Alpha都有哪些特性?『答』:除了包括Silverlight 1.0 Beta的功能外,Silverlight 1.1 Alpha还包括了一堆旨在改进开发人员的效率和威力的新的特性,包括: 托管代码的支持 对包括托管Microsoft JScript 和Python的动态语言的支持 基于WPF的丰富UI控件模型 改进的网络层,对REST, RSS, JSON, 和 POX 的支持 增强的,双向的HTML/AJAX架桥 全面一致的基础类库 对LINQ的支持(LINQ to Objects, LINQ to XML) SilverLight 相关的信息: SilverLight相关的下载汇总页http://msdn2.microsoft.com/en-us/asp.net/bb187452.aspx Silverlight 1.0 Beta下载http://msdn2.microsoft.com/en-us/asp.net/bb419316.aspx Silverlight 1.1 Alpha下载http://msdn2.microsoft.com/en-us/asp.net/bb419317.aspx Silverlight 1.0 Beta SDKhttp://msdn.microsoft.com/vstudio/eula.aspx?id=a40f3ffc-2657-02ec-7d67-7a79b4eac832 Silverlight 1.1 Alpha SDKhttp://msdn.microsoft.com/vstudio/eula.aspx?id=c8bf88e7-841c-43fd-c63d-379943617f36 SilverLight社区网站http://silverlight.net/Default.aspx Silverlight SDK博客http://blogs.msdn.com/silverlight_sdk/default.aspx Silverlight 1.0 Beta 快速上手http://silverlight.net/quickstarts/silverlight10/default.aspx Silverlight 1.0 Beta 例程http://silverlight.net/community/communitygallery.aspx Silverlight "How Do I?"......[阅读全文]

posted @ | Feedback (8) | Filed Under [ .NET AJAX/ATLAS WPF/SilverLight ]

摘要:1。微软发布Robotics Studio 1.0,给Robotics开发提供了一个公共开发平台 Robotics Studio主页 http://msdn.microsoft.com/robotics/default.aspx 产品下载处 http://www.microsoft.com/downloads/details.aspx?FamilyId=3D706147-82E2-4B4A-AF12-DB7D3F8ACD8A&displaylang=en Robotics Studio博客 http://blogs.msdn.com/MSRoboticsStudio/ 2。根据Darryl Burling ,VS 2005 SP1正式版将于明天发布 Visual Studio 2005 Service Pack 1 支持主页http://msdn.microsoft.com/vstudio/support/vs2005sp1/default.aspx Microsoft Visual Studio 2005 Service Pack 1下载处http://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&displaylang=en 3。[来源:Brad Abrams ] ASP.NET AJAX RC发布。根据Brad Abrams ,重大的变化是从 Microsoft.* 命名空间到 System.* 命名空间的变化。根据这里的文档,RC中的breaking change包括: 核心程序集已从Microsoft.Web.Extensions改名为System.Web.Extensions,现有应用应该去除对Microsoft.Web.Extensions的引用,Web.config文件应该引用System.Web.Extensions,同时从GAC中卸除Microsoft.Web.Extensions。 把using 或 import 语句改成新的命名空间,Timer 服务器控件现属System.Web.UI命名空间,ScriptModule现属System.Web.Handlers命名空间。 实现了IExtenderControl 和IScriptControl接口的自定义extender或script 控件,需要在Render 方法中调用ScriptManager.RegisterScriptDescriptors。 脚本压缩模块已从产品中去除,以后脚本压缩将由script-resource handler处理,你需要在Web.config文件中将该模块对应部分去除。 Web.config文件中的<microsoft.web.extensions> section改名为<system.web.extensions>,新的section 多了一个子section <scriptResourceHandler>,用来控制缓存和压缩行为。 客户端的全局函数 registerNamespace() 已从产品中去除,应该使用Type.registerNamespace() 。 将来的脚本引用的名字将更加简化,不再需要Microsoft.Web.Resources.ScriptLibrary 的前缀。 其他的变化参考这里的文档 Changes between the ASP.NET AJAX (“Atlas”) CTP and the RC and RTM Releases http://ajax.asp.net/files/AspNet_AJAX_CTP_to_RC_Whitepaper.aspx ASP.NET AJAX 主页http://ajax.asp.net/ 产品下载处 http://ajax.asp.net/default.aspx?tabid=47&subtabid=471...[阅读全文]

posted @ | Feedback (23) | Filed Under [ ASP.NET/IIS .NET AJAX/ATLAS ]

摘要:1。 微软AJAX开发组的Bertrand LeRoy在他的博客里对 ASP.NET AJAX 1.0 Beta 2 中DOM事件规范的改变做了解释,之前采用的是 IE 模型,但颇遭非议,在最新版本中“改邪归正” ,回归常规做法 DOM events in the Microsoft AJAX Libraryhttp://weblogs.asp.net/bleroy/archive/2006/11/06/DOM-events-in-the-Microsoft-AJAX-Library.aspx 2。 [来源:Alessandro Gallo] 为了与Safari的动态加载脚本的特性兼容,通过ScriptManager引用客户端脚本文件的方式在ASP.NET AJAX 1.0 Beta 2中有了变化,现在是通过Sys.ScriptLoader来异步加载,需要在所引用的脚本文件的最后调用 if(Sys && Sys.Application) { Sys.Application.notifyScriptLoaded(); } 参考: Alessandro Gallo 的 《Loading custom JavaScript files through the ScriptManager》http://aspadvice.com/blogs/garbin/archive/2006/11/08/Loading-custom-JavaScript-files-through-the-ScriptManager.aspx Luis Abreu 的 《Loading external scripts》http://msmvps.com/blogs/luisabreu/archive/2006/11/07/Loading-external-scripts.aspx Jeffrey Zhao 的 《深入Atlas系列 - 浅析ASP.NET Beta 2中令人疑惑的脚本引入方式 》http://www.cnblogs.com/JeffreyZhao/archive/2006/11/08/inside_atlas_series__skim_the_confusing_script_loading_mechanism_in_beta2.html 3。 通过ScriptManager的EnableScriptLocalization属性来加载本地化的Javascript脚本 Localizing scripts by Luis Abreuhttp://msmvps.com/blogs/luisabreu/archive/2006/11/07/Localizing-scripts.aspx 4。 [来源:Scott Cate] 使用ASP.NET AJAX 中的 Function._validateParams 生成强类型的集合类型 Strongly typed collections with JavaScript and Microsoft Ajax?http://aspadvice.com/blogs/garbin/archive/2006/11/08/Strongly-typed-collections-with-JavaScript-and-Microsoft-Ajax_3F00_.aspx 5。ScriptManager新添了SetFocus()方法,可惜好像有问题 Setting the focus on a control after......[阅读全文]

posted @ | Feedback (7) | Filed Under [ AJAX/ATLAS ]

摘要:在博客园看到一文,是关于Login控件在UpdatePanel里重新定向时发生的问题的。其实,重新定向是如此基本的东西,ASP.NET AJAX怎么会不支持呢?在Reflector里,如果仔细看一下ScriptModule实现的细节,它对PreSendRequestHeaders事件做了处理 protected virtual void Init(HttpApplication context){context.PreSendRequestHeaders += new EventHandler(this.PreSendRequestHeadersHandler);context.PostAcquireRequestState += new EventHandler(this.OnPostAcquireRequestState);context.AuthenticateRequest += new EventHandler(this.AuthenticateRequestHandler);} private void PreSendRequestHeadersHandler(object sender, EventArgs args){HttpApplication application1 = (HttpApplication) sender;if (PageRequestManager.IsAsyncPostBackRequest(application1.Request.Headers)){HttpResponse response1 = application1.Response;if (response1.StatusCode == 0x12e){string text1 = response1.RedirectLocation;List<HttpCookie> list1 = new List<HttpCookie>(response1.Cookies.Count);for (int num1 = 0; num1 < response1.Cookies.Count; num1++){list1.Add(response1.Cookies[num1]);}response1.ClearContent();response1.ClearHeaders();for (int num2 = 0; num2 < list1.Count; num2++){response1.AppendCookie(list1[num2]);}response1.Cache.SetCacheability(HttpCacheability.NoCache);response1.ContentType = "text/plain"response1.Write(PageRequestManager.EncodeString("pageRedirect", string.Empty, text1));}}else if (RestHandlerFactory.IsRestRequest(application1.Context) && (application1.Response.StatusCode == 0x12e)){RestHandler.WriteExceptionJsonString(application1.Context, new InvalidOperationException(AtlasWeb.WebService_RedirectError));}} 正是处理重新定向(StatusCode=302)的,如果在web.config里设置了(这是使用 ASP.NET AJAX-Enabled Web Site 项目模板的默认设置): <httpModules> ..... <add name="ScriptModule" type="Microsoft.Web.UI.ScriptModule, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/></httpModules> 使用一个类似HttpWatch/Fiddler这样的工具,在使用UpdatePanel的情形下,针对服务器端重新定向,你会看到类似这样的输出: 23|pageRedirect||/AJAXTest2/Default.aspx| 为了确认,把上述的httpModules里的<add>注释掉的话,确实得到博客园原文里的同样错误。 所以,如果你是给现有ASP.NET项目里添加AJAX支持的话,先用ASP.NET AJAX-Enabled Web Site项目模板生成一个空项目,然后把对应的web.config里的设置拷贝到现有的web.config里,这是比较保险的做法。 ...[阅读全文]

posted @ | Feedback (6) | Filed Under [ AJAX/ATLAS ]

Full AJAX/ATLAS Archive