但是.net的机制不是都要进行编译的吗?因为使用XML,所以.aspx里只有一行代码,如:
<%@ Page language="c#" Codebehind="main.aspx.cs" AutoEventWireup="false" Inherits="cn.yican.main" validateRequest="false" %>如果使用第一种模式,岂不是要写很多这样的文件?最终运行的效率比第二种真的高吗?我有点怀疑。我觉得第二种模式的维护更方便,如果逻辑写得好的话,以后的改动只需修改配置文件就行了,可能更方便。只是不知运行效率如何,能否应付大访问量。
<%@ Page language="c#" Codebehind="main.aspx.cs" AutoEventWireup="false" Inherits="cn.yican.main" validateRequest="false" %>如果使用第一种模式,岂不是要写很多这样的文件?最终运行的效率比第二种真的高吗?我有点怀疑。我觉得第二种模式的维护更方便,如果逻辑写得好的话,以后的改动只需修改配置文件就行了,可能更方便。只是不知运行效率如何,能否应付大访问量。
不过我还是觉得第一种效率要稍高一些,因为独立的文件同样是经过编译的,而且借助asp.net的缓存机制,访问效率应该是不低的。
main.aspx.cs文件首先读取配置文件,然后根据Url中的参数,从配置文件中提取该页的信息,如果有数据库查询就去数据库中取数据,再生成XML文件,最后将这个XML文件经相应的XSL文件转换成HTML输出到客户端。因为所有的请求都是针对一个页面进行的,每次请求的内容可能不一样,我现在想知道.net 是否可以缓存一个页面中不同的请求呢?
还有,楼主如果方便的话,把使用XML和XSL在服务器端生成HTML的代码共享一下如何?邮箱[email protected]
//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文档也不一样。
我也是在摸索,感觉这种方式好处真的不少,希望与君共同进步!
对于aspx文件,无论是不是带参数,默认都是不会缓冲HTML的,因为即使不带参数,aspx所产生的HTML也并不是每次都一样的。但还是推荐第一种模式。
switch
{
case............}