Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->ASP.NET ->正文

精彩推荐:.Net编程的十个技巧

来源:Linuxdby.com 作者:Webmaster 时间:2007-04-28 点击: [收藏] [投稿]
NET编程的10点技巧
--------------------------------------------------------------------------------

不管你是对Windows Forms, ASP .NET, Web Services感兴趣, 还是对 .NET Framework感兴趣,这些技巧帮助你探索新的.NET技术。
By Dino Esposito


.NET Framework比以前更大了,包含了大量的类和方法,但是开发团体还没有探索和理解大多数的难以置信的软件特性,这些特性开始的时候也许是个bug或者设计缺陷,第二次出现的时候也许就被认为是一个重大的改进,包涵了更多的思考。

按照这不可避免的再优化过程,和其他开发者共享技巧是一个能够让你在建立你的第一个.NET应用程序时把握正确方法的途径,尽管它远远不能够提供你正在寻找的明确的解决方案。我总结了能够使你的.NET开发效率更高的十个技巧。为了能尽可能多的帮助开发人员,这些技巧覆盖了这项技术的整个范围,从ADO.NET到ASP.NET,从CLR到Framework,从Windows Forms到Web Services。这些技巧,再加上我可以预期的,将会对开发人员产生很大的影响。


#1建立你的DataGrid的页脚

DataGrid控件的页脚起着很重要的作用—也就是说,页脚能总结页面里的部分内容。除非你设置ShowFooter成True, 否则页脚是看不见的。一旦你设置了,页脚就会出现,但是它和其它行有同样数目的列。如果你觉得这个可以,那就没有问题。否则,你就需要给页脚增加字段或者去掉现有的字段。



OnItemCreated是关键的调用事件。它是事件处理程序的开始: ListItemType itemType = _e.Item.ItemType;
if (itemType == ListItemType.Footer)
  {
     e.Item.Cells.RemoveAt(1);
     e.Item.Cells.RemoveAt(1);
     cellSummary.ColumnSpan = 3;
     e.Item.Cells[0].Text = "…";
   }



确保页脚建立时你能够干涉,然后取得在页脚行显示的实例。这样你就可以随意增加和减少单元了。别忘了把ColumnSpan属性设置成为列的初始值,以避免显示的问题,比如,页脚线比其它格子长或者短了。


#2 使用 Cache 对象而不使用 Application对象

在ASP中,你使用Application对象来发现全局事件和储存全局范围的数据。假设许多不同的用户可以访问同一个数据,你必须使用Lock 和Unlock方法来实现连续访问和避免访问冲突或者其它不可预测的结果。在ASP.NET中,和Application对象一起的,还有Cache对象,它和Application有相同的特征,但最终可以在不止一个场合来做Application的替代品。

Cache对象和Application对象都是集合数据容器,其内容能跨越页面和Session领域。他们都不支持Web farm和Web garden情况。Web farm是多个服务器运行一个应用程序的网络服务器结构。Web garden是同一个服务器上的多个进程运行一个程序。

和Application不同的是,Cache对象在应用程序的第一次调入时并没有实例化。仅当你使用它时它才会被创建。另外,Cache对象还可以尽可能地减小其数据项占有的内存空间。你可以给Cache设置相对的或绝对的有效期,也可以设置优先级和衰变因子。然后,你就对你的全局数据状态有了更大的控制能力,也能够执行在低内存状况下适度降级的特别方案。还有,就是,Cache对象是线程安全的,不需要加锁和解锁。


#3 用GET或POST调用服务

网络服务从根本上来说是一个你通过HTTP来连接的一个网址(URL)。当你为给定的网络服务建立了一个代理类,除非有其他方面的说明,命令行工具wsdl.exe给你提供了一个类,这个类使用SOAP协议使得可以远程调用网络服务。

尽管SOAP协议被认为是调用远程程序的标准,但是没有什么可以阻止你使用简单的GET或者POST方法来调用.NET网络服务。顺便说一下,POST命令传递SOAP有效负荷。

你可以在代理类中直接建立这个特征,只要当调用wsdl.exe 设备时,你转换协议为httpget或者httppost就可以了。封包类的源代码相应的调整。你也可以使用XmlHttpRequest对象和简单的脚本或者编译的代码来调用网络服务(更多信息,见资源): Set http = _CreateObject("Microsoft.XMLHTTP")


  http.open "GET", "http://server/service.asmx/MethodName", false
  http.send ""
  MsgBox http.responseText



通过使用XmlHttpRequest,你可以通过Win32,脚本,总的来说,非.NET代码来连接网络服务。

#4 使用Cookieless Sessions

在ASP.NET中,Session对象参考一个软件配置实体,在那里你可以设置成进程中或者进程外模式。Session对象读取许多运行时设置,这些设置你可以存在Web server的framework的安装目录,或者存在从web.config文件得来的应用程序的BIN目录。web.config文件来决定许多ASP.NET组件的设置。如果你放config.web的拷贝在你的应用程序的当地子目录下,这个设置覆盖掉在framework目录中的默认设置。

你要配置的是Session管理器是否能够识别客户端使用cookies的 Session. 在应用程序的config.web文件中设置下面一行使Session管理器能够在不使用Cookie的情况下工作。 <sessionState cookieless="true" />




#5 使用定制的Grid分页

Web Form的DataGrid控件有内置的支持分页。它自动显示一个分页条,几乎不用写多少代码,就可以显示给定记录大小的页面。然而,默认的,所有必须的记录隐藏在DataGrid对象的DataSource属性中。这就意味 着你必须一次取回所有的数据。尽管当记录很少时这不是什么问题,但是当有成千上万条记录时,这就变成了一个问题。在这种情况下,你就必须手工取回记录,把他们存在磁盘里,而不是数据库管理系统。



你必须通知DataGrid这个特殊的行为。幸运的是,DataGrid提供了一个AllowCustomPagination属性,当这个属性设置成为True时,就会大大改变这个控件的内置行为。这时,grid总是从头到尾读取从DataSource属性中找到的记录。你应该用属于当前页的数据来补充这个容器。一般情况下,grid自己只取属于这页的从DataSource属性中取到的记录。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:数据集的结构定义与实例的关系(转)   下一篇:在asp.net中使用组件,也包括import和asemble的区别

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号