精彩推荐:.Net编程的十个技巧
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的区别 更多相关文章
|
推荐文章
精彩文章
·续
|