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类),前者给开发者使用,后者自动生成,不建议改动。
posted @ 2007-04-18 21:43  包建强  Views(982)  Comments(2Edit  收藏  举报