ASP.NET 2.0 读书笔记 IDE部分

今日读书笔记(未整理):
1.控制IIS使用1.1还是2.0的工具名字叫做MMC Snapin一刚。同时可以选择“编辑配置”,其实即使对Web.config的可视化设置。
2.aspnet_regiis命令重提,-i参数还是很重要的,再有就是对web.config和app.config敏感信息进行加密。
3.aspnet_regsql将账号注册放入统一SQLServer中,参数配制用的时候再查。
4.ASP.NET 1.1和2.0比较:web.config中字段的变化,同时读取该值的方法也变了:
   ASP.NET 1.1机制:两种读法
     using  System.Configuration;
    
    
// 方法1 
    AppSettingsReader configurationAppSettings  =   new  AppSettingsReader();
    
string  connectionString  =  ( string )(configurationAppSettings.GetValue( " ConnectionString " typeof ( string )));

    
// 方法2   
     string  connectionString  =   ConfigurationSettings.AppSettings[ " ConnectionString " ];

   ASP.NET 2.0机制,废弃了 ConfigurationSettings:
             /*针对同一web.config,分别读取appSettings或connectionStrings
            <configuration>
                <appSettings>
                    <add key="ConnectionString1" value="连接字符串"/>
                </appSettings>

                <connectionStrings>
                    <add name="ConnectionString2" connectionString="连接字符串2" providerName="System.Data.SqlClient" />
                </connectionStrings>
            </configuration>
             
*/


            
// 方法1
             string  connectionString1  =  ConfigurationManager.AppSettings[ " ConnectionString1 " ];

            
// 方法2
             string  connectionString2  =  ConfigurationManager.ConnectionStrings[ " ConnectionString2 " ].ConnectionString;


5.web.config的加解密机制,特别针对数据库连接字符串,同样适用App.config:
假定项目名称"MyConfiguration",则
   加密:aspnet_regiis -pe "加密字段" -app "/MyConfiguration" -prov "具体加密方式的Provider"
   解密:aspnet_regiis -pd "加密字段" -app "/MyConfiguration"
记住,程序员读取字段时不需要额外解密,系统在你读取前会解密。
另一种加密机制是在程序里使用API。

6.ASP.NET特殊文件夹
App_Browsers
App_Code
App_Data
App_GlobalResources
App_Themes
这些文件夹下的程序,只允许Application访问,不支持Request(无法存取)。
每个文件夹都回生成一个dll。

7.代码段 Code Snippets
   这是一个好东西,会使我变懒的,连for循环都不用自己敲了。
   记住组合键(Ctrl + K,Ctrl + B),可以Manage你的Code Snippets
8.Refactoring
   这也是个BT的东西,虽然做的没Resharper好。
    选取一段代码抽象为方法,但是只能将选中的进行转换,如果旁边有同样的一段代码,vs2005也会看不见而不会处理(我亲自测的)

    重命名任何成员(字段,参数,方法等等)。
    将字段封装为属性(属性名字你自己取)。
    移除参数,从方法、索引器或委托中移除参数,不会动方法中的同名参数,这样肯动会有语法错误。
    重新排列参数,也是局限于方法、索引器或委托中的参数。
    提取接口,基于类中的非静态方法,生成接口文件。
    将局部变量提升为参数,如下图,将光标移到变量i,操作该命令:
     // 处理前
     public   static   void  MethodB()
    
{
        
// Invoke on 'i'
        int i = 0;
    }


    
// 处理后
     public   static   void  MethodB( int  i)
    
{
        
// Invoke on 'i'

    }
补注:查了查微软的在线MSDN,他是这么说的,结合上图,就明白了:
将局部变量提升为参数,提供一种简单的方法,以在正确更新调用站点的同时将变量从局部使用移动至方法、索引器或构造函数参数。调用“将局部变量提升为参数”操作时,变量将被添加到成员参数列表的结尾处。对已修改成员的所有调用都将使用新参数(将替代最初赋给该变量的表达式)立即进行更新,并保留代码,以使其像变量提升之前那样正常工作。将常数值赋值给提升的变量时,此重构操作的效果最好。必须声明并初始化该变量而不能仅声明或仅赋值。

9.动态编译dll组件
1.1只止持aspx,ascx,web.config和global.asax的动态编译,并不支持dll和WebServices,要手动编译并重新添加dll引用——2.0现在支持了,但是在bin目录下却不生成自身项目的dll了。现在的原则是,只要用户进行请求,系统会自动进行动态编译。于是,对于正在使用的网站,增加一部分code并不需要编译,当请求当这个改动或新功能时,再进行动态编译,弹性就大了很多。也许你会说,第一次的速度会很慢,因为要编译嘛,但仅仅时新的代码块或者改动部分,其他不动模块不许要编译的,所以速度不受影响。

10.预编译
这就是编译后有dll的版本,和1.1结构一样了(虽然还差解决方案)
三种方式,同演的效果:
   命令行方式 Aspnet_Compiler加参数
   IDE中的“发布网站”选项
   通过API编程实现,这是以上两种方式的实际运作,代码如下:
         using  System.Web.UI.HtmlControls;
        
        ClientBuildManager cbm 
=   new  ClientBuildManager( " 虚拟目录名称 " " 来源位置 " " 目标位置 " );
        cbm.PrecompileApplication();
注意,预编译后生成的dll是不支持动态编译的

11.同时使用C#和VB.NET在同一个项目中:
web.config配置如下:
< configuration >
    
< system.web >
        
< compilation >
            
< codeSubDirectories >
                
< add directoryName = " cs " />
                
< add directoryName = " vb " />
            
</ codeSubDirectories >
        
</ compilation >
相应在App_Code下加入cs和vb两个folder,分别存放cs和vb格式的文件(不加是不行的,因为在web.config中已经配置了这两个folder)

这样,预编译后在bin目录中,分别生成App_SubCode_cs.dll和App_SubCode_vb.dll两个dll组件。

12.CodeBehind
旧的CodeBehind是这样的(1.1版本):
<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " ~/Default.aspx.cs "  Inherits = " 命名空间.类 "   %>
新的CodeBehind(2.0版本,又名CodeBeside):
<% @ Page Language = " C# "  AutoEventWireup = " true "   CodeFile = " ~/Default.aspx.cs "  Inherits = " "   %>

比较可知,2.0版本不再需要命名空间,而CodeBehind关键字也改为CodeFile了。

13.VS2005 SP1
也就是升级包,支持生成proj文件的,使vs2003时代的程序员可以有回到过去的风格,而不是操作文件系统,同时namespace也回来了,这样App_Code的特殊文件夹就失去了意义,其下的cs文件要重新放位置了,还有就是,在升级包下建立的aspx文件,同时不但可以看到aspx.cs文件,这个文件负责记录逻辑操作,还有一个aspx.design.cs文件,只负责声明那些控件变量——二者是一个类拆成两部分(partial类),前者给开发者使用,后者自动生成,不建议改动。

你可能感兴趣的:(asp.net)