但是.net的机制不是都要进行编译的吗?因为使用XML,所以.aspx里只有一行代码,如:
<%@ Page language="c#" Codebehind="main.aspx.cs" AutoEventWireup="false" Inherits="cn.yican.main" validateRequest="false" %>如果使用第一种模式,岂不是要写很多这样的文件?最终运行的效率比第二种真的高吗?我有点怀疑。我觉得第二种模式的维护更方便,如果逻辑写得好的话,以后的改动只需修改配置文件就行了,可能更方便。只是不知运行效率如何,能否应付大访问量。

解决方案 »

  1.   

    至于维护的问题可以见仁见智,对于我来说我喜欢第一种,不过只要你觉得怎么方便就可以了。
    不过我还是觉得第一种效率要稍高一些,因为独立的文件同样是经过编译的,而且借助asp.net的缓存机制,访问效率应该是不低的。
      

  2.   

    .net 的缓存机制是如何工作的?在第一种模式下,如果有十个人访问了不同的页面,是否会将这十个页面全部缓存?
      

  3.   

    第二种模式的工作机制是这样的:当客户端发来请求时,如:http://www.temp.com/main.aspx?module=product&page=pList
    main.aspx.cs文件首先读取配置文件,然后根据Url中的参数,从配置文件中提取该页的信息,如果有数据库查询就去数据库中取数据,再生成XML文件,最后将这个XML文件经相应的XSL文件转换成HTML输出到客户端。因为所有的请求都是针对一个页面进行的,每次请求的内容可能不一样,我现在想知道.net 是否可以缓存一个页面中不同的请求呢?
      

  4.   

    楼主,我认为第一种方法好,理由很简单,除了速度上的考虑外,更重要的是从维护角度来考虑的。虽然页面多,但可以通过继承,维护一堆小代码比维护一个大代码容易些的。
    还有,楼主如果方便的话,把使用XML和XSL在服务器端生成HTML的代码共享一下如何?邮箱[email protected]
      

  5.   

    很简单啊!
    //xsl转换为流
    public StringWriter xslTransStream(XmlDocument doc,string xslFile){
    StringWriter sw = new StringWriter();
    XslTransform xslt = new XslTransform();
    xslt.Load(xslFile);
    xslt.Transform(doc.CreateNavigator(),null,sw,null);
    sw.Close(); return sw;
    }
    XmlDocument doc = new XmlDocument() //生成你自已的XML文档。
    //。
    //。
    //代码省略string xsl = "test.xsl";//制作XSL文件,保存到虚拟目录中。Response.Write(xslTransStream(doc,Server.MapPath(xsl)));这种方法重要是如何生成需要的XML文档,因为不同的用户,不同的页面,生成的XML文档也不一样。
    我也是在摸索,感觉这种方式好处真的不少,希望与君共同进步!
      

  6.   

    在效率方面,是第二种更好的。
    对于aspx文件,无论是不是带参数,默认都是不会缓冲HTML的,因为即使不带参数,aspx所产生的HTML也并不是每次都一样的。但还是推荐第一种模式。
      

  7.   

    效率分为两个方面,执行速度和资源占用:在执行速度上,第二种方式快,因为只需要动态编译一次。并且aspx文件很容易在Windows文件缓冲中多呆些时间。在资源占用上,第二种方式少,因为一个aspx文件就是一个类,而这个类是动态编译在内存中的。所以,第二种方式以微弱的优势获胜。但这不足以弥补它所带来的麻烦。
      

  8.   

    Ivony() 大侠,能否谈谈第二种方式带来的麻烦?你让我期待中
      

  9.   

    麻烦就是这个页面中的代码会出现一大堆的
    switch
    {
      case............}