zoukankan      html  css  js  c++  java
  • 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类),前者给开发者使用,后者自动生成,不建议改动。
  • 相关阅读:
    session 和 aplication 相关总结
    asp.net网站发布时碰到的一些问题
    考前防脑瘫防挂分预防针
    【游记】NOIP2021 白给记
    SELECT list is not in GROUP BY clause and contains nonaggregated
    StringUtils.isEmpty()
    gitLab生成SSH私钥后上传代码及获取代码
    tomcat配置https请求访问
    Mybatis:映射文件概述 & 增删改查
    Mybatis:核心文件概述
  • 原文地址:https://www.cnblogs.com/Jax/p/718839.html
Copyright © 2011-2022 走看看