RSS 2.0 Feed
2006-11 Entries
摘要:微软的Anti-Cross Site Scripting Library旨在方便开发人员对HTML输出进行编码(encode)以避免跨站脚本攻击(XSS)。与其他的编码库不同,这个脚本库采用的是“Principle of Inclusions”,通过定义合法的或允许的字符集合,对不在这个集合内的其他字符则进行相应的编码。结果是,这方法对XSS攻击的防范极其有效。 根据 ACE Team 博客,你应该升级到这个版本的五大理由是:1。更多的Encoding方法,除了HtmlEncode和UrlEncode方法外,这个版本还提供了HtmlAttributeEncode,JavaScriptEncode,VisualBasicScriptEncode,XmlEncode,XmlAttributeEncode 5个方法!2。对Partially Trusted Caller Attribute (PTCA)的支持3。大为改进的文档,例程和实用教程4。End User License Agreement (EULA)更为清晰和灵活5。升级路径极其容易,因为这个版本里仍然支持旧的命名空间   主页:Anti-Cross Site Scripting Libraryhttp://msdn2.microsoft.com/en-us/security/aa973814.aspx 下载处:Microsoft Anti-Cross Site Scripting Library V1.5http://www.microsoft.com/downloads/details.aspx?FamilyId=EFB9C819-53FF-4F82-BFAF-E11625130C25&displaylang=en...[阅读全文]

posted @ | Feedback (12) | Filed Under [ ASP.NET/IIS ]

摘要:经过千辛万苦 ,感谢博文视点和电子工业出版社, 速马和我翻译的Christian Nagel著的《.NET企业服务框架──应用.NET企业服务开发分布式业务解决方案》一书终于出版了: http://www.china-pub.com/computers/common/info.asp?id=32615 【专家评语】 这世上只有很少几个人能把企业服务解释得足够清楚,而Christian就是其中之一。——Ingo Rammer 【内容简介】 随着Web技术的发展,大部分桌面软件依然是孤立的,这意味着分布式应用程序具有广阔的发展前景。分布式应用程序主要应用于企业内部和企业与企业之间,当然,它对于普通用户来说也是意义非凡的。企业服务是一种难学易用的框架,因为它面对的是极其复杂的企业环境。这是一本关于如何利用.NET企业服务框架开发分布式业务解决方案的书,本书涵盖了.NET企业服务的方方面面,如并发、COM互操作、事务服务、状态管理等。书中详细讲解了应用.NET企业服务框架开发分布式业务解决方案的具体方法和实用技巧,使读者在知道Know how的同时还知道Know why。本书的另外一个特点是提供了大量的示例代码,以或大或小的实例展示了各种方法的应用场景和技巧。无论你是刚入门的初学者还是经验丰富的高手,本书都是一本权威的指南和参考书。 【目录信息】 第1章 .NET企业服务简介第2章 对象激活和上下文 第3章 并发 第4章 COM互操作第5章 网络访问第6章 数据访问第7章 事务服务第8章 补偿性资源管理第9章 状态管理 第10章 队列组件第11章 松耦合事件 第12章 安全 第13章 部署和配置第14章 分布式应用的未来第15章 案例研究 ...[阅读全文]

posted @ | Feedback (7) | Filed Under [ 书籍 .NET ]

摘要:假如你是微软Windows Vista的Beta测试人员,曾经提交过至少一个bug报告,那么你就会收到来自微软的标题为 “Thank You From the Windows Vista Beta Team!!! ” 的邮件,内含微软送你一套Business Edition 或者Ultimate Edition的确认连接。这个offer只能下载,product key 会在一周内发出。 谢谢微软的圣诞礼物! 也参考Microsoft Says Thankyou! to Select Vista Testershttp://www.neowin.net/index.php?act=view&id=36175 另外,MSDN订阅者可以开始从MSDN下载Vista了。...[阅读全文]

posted @ | Feedback (4) | Filed Under [ 杂类 ]

摘要: 星期二,微软CLR 动态语言开发组的架构师 David Ebbo 在正于拉斯维加斯举行的开发人员大会上展示了IronPython for ASP.NET, 同时也提到了一个叫“Simplified Data Scenarios”的秘密项目,旨在简化数据库驱动的ASP.NET 数据绑定应用的建造,目前可以使用IronPython,将来会支持Ruby,PowerShell,JScript等。 下面是eweek.com的部分报道, .... Ebbo said his team has delivered a prototype of a "secret project" called Simplified Data Scenarios where developers can "easily build data-bound applications from scratch" starting only with a database. The prototype enables users to customize applications declaratively using ASP.NET or programmatically using IronPython, Ebbo said. Meanwhile, King said IronPython is "really just the first of a series of dynamic languages" Microsoft will support. "We're looking at Ruby, PowerShell, JScript" and others, he said. Ebbo said the Simplified......[阅读全文]

posted @ | Feedback (5) | Filed Under [ ASP.NET/IIS IronPython/IronRuby/F# ]

摘要:Jim Allchin在博客上宣布:It's time! 这个时刻终于来临!他的宣布录像:http://soapbox.msn.com/video.aspx?vid=8475733d-b7f9-4bd4-baf8-16f623fe9e3f 详情见: 1. Microsoft Windows Vista Released to Manufacturinghttp://www.microsoft.com/presspass/default.mspx 2. Microsoft: Vista is ready to rollhttp://news.com.com/Microsoft+Vista+is+ready+to+roll/2100-1016_3-6133660.html 3. Windows Vista releases to manufacturing http://windowsvistablog.com/blogs/windowsvista/archive/2006/11/08/windows-vista-releases-to-manufacturing.aspx 4. Ready for a new day!http://www.microsoft.com/business/launch2007/default.mspx...[阅读全文]

posted @ | Feedback (11) | Filed Under [ 杂类 ]

摘要: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 ]

摘要:详见 1。Robert McLaws 博客 .NET Framework 3.0 (WinFX) RTM http://www.windows-now.com/blogs/robert/archive/2006/11/06/net-framework-3-0-winfx-rtm.aspx 2。ASP.NET AJAX 网站 Converting Microsoft ASP.NET AJAX Beta Applications to Beta 2http://ajax.asp.net/files/Migration_Guide_Beta_Beta2.doc ASP.NET AJAX Downloadshttp://ajax.asp.net/default.aspx?tabid=47&subtabid=471...[阅读全文]

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

摘要: 微软昨天推出了IronPython for ASP.NET 的CTP版本。 由于目前的ASP.NET的扩展性模型采用的是CodeDOM模型,是针对静态编译的语言的。为解决这个问题,他们引入了一个新的扩展性模型,采用了ASP.NET的No-Compile特性,修改了System.Web.dll中的PageParserFilter API,通过几个基类(ScriptPage, ScriptUserControl, ScriptMaster)来参与页面的生命周期。这个新模型也为其他动态语言与ASP.NET协作指明了方向。新的模型好处多多,与静态语言比,除了页面初始处理快外,还提高了扩缩性,他们的加载测试标明,同样的硬件配置,一个拥有一万个静态编译的ASP.NET网页的一个网站已经不堪重负,却可以轻松处理一百万个动态编译的IronPython 网页! 想理解IronPython在ASP.NET下是如何工作的的话,读一下微软 .NET CLR 组架构师 David Ebbo 写的白皮书《ASP.NET之新动态语言扩展性模型(The New Dynamic Language Extensibility Model for ASP.NET)》,博客园的木野狐对该文做了中文摘要,值得一读。 可以在www.asp.net下载IronPython for ASP.NET: Microsoft IronPython for ASP.NET CTPhttp://www.microsoft.com/downloads/details.aspx?FamilyId=55932211-0D7E-4C6E-9B18-8F9D2AC1EE43&displaylang=en 相应的文档除了上面提到的白皮书外,还有涉及创建页面,创建用户控件,使用共享代码,数据绑定,以及如何调试等5个教程的文档: IronPython for ASP.NEThttp://www.asp.net/ironpython/...[阅读全文]

posted @ | Feedback (4) | Filed Under [ ASP.NET/IIS IronPython/IronRuby/F# ]

摘要:1。[来源:Jesse Ezell ] Adobe Max 开发人员大会上,Apollo组的开发人员预展了Apollo平台。Apollo是类似JVM和CLR的运行时,其目标是RIA应用,大概在2007年上半年推出。 2。[来源:Tim O'Reilly ] MIT研究生 David Huynh 有一个叫Timeline的AJAX widget,可以显示基于时间的数据(接受XML或JSON数据格式),譬如象大事年表类的东西。类似于Google Map,你可以横着拖拉来展现这些数据是如何随时间变化的。在他的网站上,有几个示范,Monet生平大事年表 ,JFK暗杀时间线,犹太历史年表 ,基督教历史年表 ,宗教历史年表,立体主义历史年表,恐龙史年表等等,非常酷。下一个想法是怎么把这个东西跟Google Map或者微软Virtual Earth结合起来,显示事件如何在空间/时间上展开,全方位地看历史是如何演变的 。 3。[来源:Ajaxian ] Widgipedia: widgets 资源社区。可以上传/下载 widgets 和 gadgets,编码库/例子等。 Ajaxian 网站是个很不错的网站,如果你想了解最新的AJAX应用,工具和资源,这是个不可不读的网站。 4。[来源:Brad Abrams ] Brad Abrams 将在TechEd Europe 做的示范:使用 ASP.NET AJAX 工具包产生AJAX动画效果 AJAX Animations with the ASP.NET AJAX Toolkithttp://blogs.msdn.com/brada/archive/2006/11/01/ajax-animations-with-the-asp-net-ajax-toolkit.aspx...[阅读全文]

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

摘要:1。[来源:Bertrand Le Roy ] ASP.NET AJAX Beta 1 and ComponentArt Web.UI http://blogs.componentart.com/miljan/archive/2006/10/31/ASP.NET-AJAX-Beta-1-and-ComponentArt-Web.UI.aspx ComponentArt的总裁/创始人 Miljan Braticevic 在博客里说,ComponentArt花了四天时间把他们的AJAX产品从ATLAS早期CTP版本转化成ASP.NET AJAX Beta 1 版本。这个产品包括12个UI控件,超过60个客户端类。他们的感想是,渡过开头的难关后,他们发现ASP.NET AJAX Beta 1版本运行良好而且稳定。在转化过程中遇到的几乎每一个问题,都是由于他们对某个特定的特性的理解不够造成的。对在博客和论坛上别人提到的ASP.NET AJAX Beta 1版本的种种问题,他们认为不能完全归咎于这个Beta 1版本缺陷太多。跟以前的CTP版本相比,这个Beta 1版本有了显著的进步,感觉上已有发布产品的质量水平了。虽然在文档,样例和教程方面还有待提高,好消息是大的变动已经包含在产品里了,开发ASP.NET AJAX应用的大好时机已经来临。 2。[ASP.NET AJAX论坛问题] UpdateProgress and AssociatedUpdatePanelID not working on master pagehttp://forums.asp.net/thread/1436858.aspx 在母板页中,Microsoft.Web.Preview.UI.UpdateProgress 的 AssociatedUpdatePanelID设置不工作。究其原因,是因为在寻找对应的UpdatePanel时,现在的编码使用的是Page.FindControl()。参考Reflector中UpdateProgress类的MoveNext的实现: UpdatePanel panel1 = this.<>4__this.Page.FindControl(this.<>4__this.AssociatedUpdatePanelID) as UpdatePanel; 在一般情形下,FindControl只在当前的NamingContainer下查询。在母板页情形下,由于MasterPage对象实际上是把当前页面包含在其中的,而自己本身成为Page的子对象,NamingContainer的结构跟不用母板页的情形相比,发生了很大的变化。具体请参考Scott Allen的文章:http://www.odetocode.com/Articles/450.aspx 这样就有个有趣的问题,UpdateProgress 到底应该放在哪里? 在论坛里,bsevo 提供了一个有趣的答案, UpdateProgress1.AssociatedUpdatePanelID=UpdatePanel1.UniqueID; 即用编程手法把AssociatedUpdatePanelID设置成对应 UpdatePanel 的UniqueID,UniqueID包含了用“$”字符分开的一系列NamingContainer的ID,而FindControl对这样包含“$”的ID是另作处理的。 3。[ASP.NET AJAX论坛问题] 利用ASP.NET AJAX 客户端 Sys.WebForms.PageRequestManager 类的事件,可以很轻松地构造你自己的UpdateProgress控件。Dr.NETjes 在这个帖子里建议了一个方案,抄袭如下: http://forums.asp.net/thread/1436307.aspx <script type="text/javascript" language="javascript">Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler) function BeginRequestHandler(sender, args) {ActivateAlertDiv('visible', 'myUpdatePanel');} function EndRequestHandler(sender, args){ActivateAlertDiv('hidden', 'myUpdatePanel');} function ActivateAlertDiv(visstring, elem){var adiv = $get(elem);adiv.style.visibility =......[阅读全文]

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

摘要: AJAXWorld杂志主编 Dion Hinchcliffe 不久前发表了《你需要知道的有关AJAX的七件事情(Seven Things You Need to Know About AJAX)》一文。大意如下, 1。浏览器并不适合AJAX。第一个认真的AJAX项目才开始一周,你会发现Ajax 几乎已把浏览器推向其极限。事实是,没有强有力的第三方开发工具,清晰地设计任何规模的 Javascript 软件都需要训练有素和艰苦努力才成。在多个浏览器里调试Ajax应用麻烦透顶,想要做些认真的后台或多线程更需要你使出浑身解数,特别是你想结合那些用了数目有限的计时器的其他的组件。好消息是,简单的AJAX,(譬如点缀些DHTML),比大规模的AJAX要轻松得多了。但做好准备,一旦你的应用规模加倍,随时扩大开发和测试的努力。 2。你不需要你想象中的那么多 Web 服务。我原以为走Ajax这条路需要开发许多新的Web 服务来提供数据和存储。事实上,我发现许许多多项目满足于HTML scraping或使用老式的HTTP POST。这使得尝试 Ajax 开发容易之极,可以重用任何现有的后端HTTP服务,而不是转向SOAP或REST/WOA等复杂的服务。虽然这大概会导致糟糕的架构级的选择,但这也使逐步转化到Ajax 毫不费力,简直自然之极,虽然因此造成的以后的头痛大概是难以避免的。 3。Ajax比传统Web设计和开发更棘手。HTML用户界面规范的丢失,几乎无限制的隐藏功能的可能性,编程手法创建页面元素,以及Ajax 方式的其他固有的特性把我们所知的Web设计和开发方式都扔出门外去了。 Web 设计师必须深刻理解DOM,Javascript和CSS的能力,对浏览器如何显示图像,如何布局,以及显示各种元素要有深刻理解。开发人员发现测试既困难又枯燥。虽然工具在不断地,全面地改进,但要让整个工业积累出行之有效的最佳实践,模式和实用知识,要花几年时间呢。在此要高度赞扬一下象雅虎的Bill Scott这样的业界人士,赞赏他们通过推动类似雅虎UI设计模式库这样的东西,尝试解决这里提到的许多问题,极大地推进了业界的最高工艺水平。结论是,Ajax开发,起码是目前,与传统的Web开发相比要花更多的时间,同时要求更高的技能。 4。Ajax 工具和组件仍在涌现,现今还没有明显的领先者。虽然Dojo火爆出场,但竞争远未结束。譬如,Dojo框架本身的版本还是0.3 (注:Dojo 0.4已发行)。紧随其后的种种工具,框架和组件库还有很多。虽然OpenAjax 旨在使得众多产品相互合作,大多数的开发人员只会掌握这其中的2-3个,然后就一直用这几个产品了。在目前的情形下,过早定死在某个特定的产品,一般来说不是个好主意。创新,竞争,和市场的领先地位此起彼伏,尚无定数。同时,一定要去看一下script.aculo.us,Prototype,Google Web Toolkit,Yahoo! UI Library, JackBe,Zapatec,Bindows, Nexaweb,General Interface,Backbase,ActiveWidgets,以及 微软的Atlas。还有很多别的产品,我鼓动你去看一下Max Kiesler对50个Ajax 框架的汇总简评。 5。优秀的Ajax 程序员很是难找。Zimbra的Scott Dietzen最近感慨找到好的Ajax人才之难。但参考上述第3点,建造复杂的Ajax 应用要求的计算机技能要远比Web设计技能多得多。我发现有经验的程序员不太喜欢Javascript编程和调试。这种情形不会持久,但也要过几年才行。 6。必须积极地对付浏览器模型对Ajax的限制。虽然最后的结果会非常值得 ,但象任何技术, Ajax远非完美,它也有几个弱点。一个是它会违反现有的Web模型,譬如,加书签,后退按钮等等。幸运的是, 象Brad Neuberg这样的有识之士对此类问题已有方案,只要你愿意花力气,理解恢复此类功能的重要性。Ajax 也缺乏桌面软件的的很多强处,譬如能离线运行,访问本地硬盘存储等,但Flash 的本地存储和即将发行的Apollo平台能应付这类问题。 7。Ajax 只是成功RIA策略的一个因素。我以前也写过,如果你想让你的在线应用实现范围很广的功能,那么你必须将类似Flex,OpenLaszlo, 以及WPF/E等这样的RIA平台放在考虑范围之内,特别是在想支持象音像这样丰富的媒体的情形下,而Ajax对此几乎无能为力。Ajax 会日益对这些平台造成威胁,特别是在后端服务器提供对服务器端push,Web 服务,企业环境等支持的情形下。...[阅读全文]

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