woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

分离到底!用XML+XSLT+CSS+JQuery+WebService组建Asp.Net网站

前言

早在Web标准化风潮到来之前,我就考虑过XML+XSLT建站了,我以为这是一种非常优雅、高效、低耦的方案,必将大行其道。

然而时至今日,使用这种方案建站的人依然寥寥无几,大家还都在抱着Web标准化不撒手,其实Web标准化只是将表现(Css)分离了出来,而数据和结构仍然混杂在一起,它绝对不是我们最终的归宿,它只是一个过渡品。

XHtml标准的建立初衷,其实也就是为了向XML过渡的,XML+XSLT+CSS才真正做到数据、结构、表现的完美分离,才是我们的终极目标。

诚然,XML+XSLT确实有其技术难度,我想这是它难于普及的最大障碍所在,但我觉得随着时间的推移、观念的更新、工具的发展,这仍旧是我们必会到达的一站。

方案简介

XML+XSLT+CSS的方案将数据、结构、表现进行了分离,而依托JQuery我们又可以轻松地将交互也从中分离出来,这样在客户端就达到了近乎完美的解耦。

clip_image001

而在服务器端,我们只负责输入和输出:

输入部分使用WebService,主要用于接收客户端提交的数据,以更新服务器数据。

输出部分即为XML,可以有两种实现方案:

1.       动态型。使用一个扩展名为.ashx处理程序负责输出XML,只要通过此处理程序从数据库取出客户端需要的数据,并转换为XML文档输出即可。动态型的好处在于支持Url参数查询及其他复杂查询处理。

2.       静态型。放弃数据库,将所有用于呈现的数据都直接写为XML文件。静态型的好处当然就是服务器负荷极低了,在不提交数据的情况下,服务器会比纯静态HTML网站还要轻松很多。

clip_image002

优势

对比以往的各种开发方案,我总结出此方案具有以下优势:

1.       更便于团队协作。充分解耦带来的就是细化分工及并行开发,以往的各种开发方案中,总有许多地方界限模糊,致使前台与后台、程序员与设计师频繁磋商,延误开发效率。
比如仅仅是一个XHTML文档,设计师要在上面定义文档结构,以及IDClass,前台程序员要在上面写客户端事件,后台程序员得把从数据库中取得的数据插入到页面中的某处,三方的工作都受其牵制,这时XHTML就像是一个接口,三方共用着这一个接口。
而我们的这个方案中的情况是怎样的呢?后台程序员只管怎么跟数据库打交道、怎么处理业务逻辑,客户端需要数据时,只要扔出个XML文档就可以了; 作为设计师,只要知道XML文档结构,就可以通过XSLT灵活地安排布局,即使需要大幅修改布局,也不需要劳烦后台程序员插手,简单的XSLT语法对于设计师不是什么大问题;前台程序员需要知道用户界面中有哪些交互控件,为他们安排事件逻辑,并提交到后台的WebService中去就可以了;这时XMLXSLTWebService就像是三个接口,一方最多接触其中的两个。
接口多了好,还是少了好?可以看看索爱手机的例子,索爱手机大多是耳机、充电、数据传输都共用着一个接口,充电的时候不能插耳机听歌、插耳机听歌的时候不能传数据、传数据的时候不能充电,而其他品牌的手机则大多是分别使用多个接口的,哪个更方便不言自明吧。(当然,从安全角度来看的话,索爱的单接口却是更优秀的,此前曾有新闻报道过某男用手机边听歌边充电被雷击致死的事故,那人在死前还大喊:“啊!我死啦!”-_-#围观地址

2.       更节省服务器资源。带宽资源方面:此方案中,用户每次切换页面,所需下载的都只是一个XML文档而已,其他XSLTCSSJS都只需下载一次,提交时也不需要表单回发,更不需要ViewState。处理器资源方面:客户端呈现完代码全由XSLT在客户端动态合成,服务器端的工作仅仅是处理业务逻辑和数据库交互,极其轻松。此方案的资源消耗水平略高于Ajax方案,低于MVC方案,相对于WebFormMVP及传统脚本式的方案来说,节省的资源非常可观。

3.       更易于搜索引擎收录。首先就是此方案可以被搜索引擎收录,而Ajax方案的弊端就在这里;其次,搜索引擎喜欢冗余少的网站,这会一定程度上影响网站排名,而XML数据最为符合这一要求;再者,网址较为友好,这是相对MVC而言的,具体原因可参看我此前发表的一篇文章

4.       更容易在其他客户端中使用。这一点Ajax方案也同样优秀,MVP方案实现起来有些困难,其他的方案都难以实现。

弊端

没有完美的事物,此方案弊端如下:

1.       更高的技术要求。显然相比以往的方案,此方案需要开发者掌握更多知识,并组合应用。

2.       更高的客户端负荷。XSLT加重了客户端的处理压力,虽然我们大都觉得客户端的运算资源负荷是一个可以忽视的问题,从而将尽可能多的运算放到客户端,但并不是所有客户都使用中高端的机器,尤其是对一些上网本用户而言,JS已经让他们头疼了。

3.       更差的兼容性。HTMLJSCSS在各个浏览器上本就有些兼容性问题,现在XSLT又掺合进来,开发者面临的问题更为严峻。并且对于移动客户端、盲人阅读器及其他非常规客户端而言,XSLT是否会被解析都是个疑问。

范例

现在演示一个网站范例。

首先建立一个数据库,这里使用的Accesee 2000-2003数据库,命名为Database.mdb,在其中建立User表:

clip_image003

输入一些数据,用于测试显示:

clip_image004

将其导入网站项目中的App_Data目录。

添加一个ashx文件,名为Default.ashx

clip_image005

输入以下代码:

<%@ WebHandler Language="C#" Class="Default" %>

 

using System;

using System.Web;

using System.Data.OleDb;

using System.Data;

using System.Xml;

 

public class Default : IHttpHandler

{

 

    public void ProcessRequest(HttpContext context)

    {

        OleDbConnection c = new OleDbConnection(string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""{0}"";Persist Security Info=True", HttpContext.Current.Server.MapPath(@"~\App_Data\Database.mdb")));

        var ds = new DataSet();

        c.Open();

        //获取Url中的max参数

        var max = 0;

        Int32.TryParse(HttpContext.Current.Request.QueryString["max"],out max);

        //读取数据

        new OleDbDataAdapter(string.Format("select{0} * from [User]", max > 0 ? " top " + max : string.Empty), c).Fill(ds);

        c.Close();

        //建立XML文档

        var xml = new XmlDocument();

        xml.LoadXml(ds.GetXml());

        //添加文档声明

        xml.InsertBefore(xml.CreateXmlDeclaration("1.0", "UTF-8", null), xml.DocumentElement);

        //添加xslt声明

        var xsl = xml.CreateProcessingInstruction("xml-stylesheet", @"type=""text/xsl""   href=""Default.xslt""");

        xml.InsertBefore(xsl, xml.DocumentElement);

        //输出

        context.Response.ContentType = "application/xml";

        context.Response.Write(xml.InnerXml);

    }

 

    public bool IsReusable

    {

        get

        {

            return false;

        }

    }

 

}

再添加一个XSLT文件,命名为Default.xslt,输入以下代码:

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"

> 

         <xsl:template match="/">

                   <html>

                            <hread>

                                     <title>XML网站测试</title>

                                     <link href="Style.css" rel="stylesheet" type="text/css"/>

                                     <script src="jquery-1.3.2.js" type="text/javascript"/>

                                     <script src="Post.js" type="text/javascript"/>

                            </hread>

                            <body>

                                     <h1>XML网站测试</h1>

                                     <ul>

                                               <xsl:for-each select="//Table">

                                                        <li>

                                                                 <a href="#">

                                                                           <xsl:value-of select="ID"/>

                                                                 </a>

                                                                 <xsl:value-of select="UserName"/>

                                                        </li>

                                               </xsl:for-each>

                                     </ul>

                                     <input type="text" name="Name" id="Name" />

                                     <input type="submit" name="PostName" id="PostName" value="提交" />

                            </body>

                   </html>

         </xsl:template>

 

</xsl:stylesheet>

注意,在XSLT中可包含用于提交数据的交互控件,但不需要为其定义事件处理,交互处理都由JS完成。

添加一个CSS文件,命名为Style.css,输入以下代码:

body

{

         background-color: Silver;

}

h1

{

         color: Gray;

}

a

{

         color:White;

         margin-right:6px;

}

编译并运行,即可看到输出的数据:

clip_image006

查看其源代码:

clip_image007

用户访问不同页面时,只有这些XML代码会被多次下载,其他客户端的文件都只需下载一次,大大节省了服务器网络资源。

由于此前在ashx中编写了支持Url参数查询的代码,我们可以通过设置max参数来决定显示的最大数据条目数:

clip_image008

输出部分至此就完成了,接下来是输入部分:

导入JQuery代码jquery-1.3.2.js到项目中。

添加一个JS文件,命名为Post.js,输入以下代码:

/// <reference path="jquery-1.3.2-vsdoc2.js" />

$(function() {

    $("#PostName").click(function() {

        $.post("./webservice.asmx/AddName", { "Name": $("#Name").attr("value") }, function() { location.reload(); })

    });

}

);

可以看到,通过JQueryJS代码文件中为按钮注册处理函数非常简单,这样就将交互部分完全分离开来。

添加一个WebService,命名为WebService.asmx,在其后台代码文件WebService.cs中输入如下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Data.OleDb;

 

/// <summary>

///WebService 的摘要说明

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

// [System.Web.Script.Services.ScriptService]

public class WebService : System.Web.Services.WebService {

 

    public WebService () {

 

        //如果使用设计的组件,请取消注释以下行

        //InitializeComponent();

    }

 

    [WebMethod(Description="添加一个新的用户名")]

    public void AddName(string Name) {

        OleDbConnection c = new OleDbConnection(string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""{0}"";Persist Security Info=True", HttpContext.Current.Server.MapPath(@"~\App_Data\Database.mdb")));

        c.Open();

        new OleDbCommand(string.Format("INSERT INTO [User] VALUES ('{0}','{1}')",Guid.NewGuid(),Name),c).ExecuteNonQuery();

        c.Close();

    }

   

}

编译并执行,测试提交数据:

clip_image009

提交成功后会刷新页面(JS里的回调函数所为),刷新后的输出数据:

clip_image010

此范例完成,解决方案资源管理器中显示的目录结构如下:

clip_image011

可预见的问题

一定要用JQuery吗?

不,只是方便而已,其他框架或自写JS也都可以实现。

我的网站需要侧边栏显示一些热门文章排行之类的东西,该怎么实现呢?

可以通过Ajax的方式,配合WebService异步获取数据,但这样的话搜索引擎没法收录这些数据。

也可以将这些数据直接写在XML里,但这样的话又会造成冗余。

比较妥当的方法是将XSLT也改为由ashx处理程序动态生成,在里面写入这些数据,但这样会增加服务器负荷,注意设好缓存应该影响不大,另外的副作用就是使后台开发人员和设计师又亲密接触了。

怎么使用Session?怎么使用Membership

我们的XML文件是使用ashx处理的,实质上它和aspx没多大区别,可以通过HttpContext.Current.Session访问到Session,要干什么都可以在里面干了。如果要由客户端改变Session的值,只要通过WebService就可以了。

使用Membership也是同样道理,只不过少了那些登录控件什么的,你必须手动编写代码来控制了。

结语

XMLXHtml的终极目标,虽然现在将XML用于网站开发或许还不够成熟,但是应该距成熟不远了,Ajax的诞生进一步奠定了前往XML的路,这路必定会越来越好走的。

我承认,我喜欢研究一些非主流的东西==,此前还研究过用XAML做网页HOHO,也许RIA才是未来的王者也说不定。

 

下载本文的XPS版本:clip_image012

下载本文范例源代码:clip_image013

转载请遵循此协议:署名 - 非商业用途 - 保持一致

并保留此链接:http://skyd.cnblogs.com/

分类: 编程

标签: .Net, 网站, ASP.net, 妙想, 源代码

绿色通道:好文要顶关注我收藏该文与我联系

clip_image014

斯克迪亚
关注 - 25
粉丝 - 114

荣誉:MVP微软社区精英推荐博客

+加关注

2

1

(请您对文章做出评价)

« 上一篇:发送内嵌图片邮件的正确方法
»
下一篇:让PasswordRecovery控件使用Email地址找回密码

posted on 2009-05-21 01:57 斯克迪亚 阅读(6812) 评论(64) 编辑 收藏

clip_image015

Feedback

2009290

#1

2009-05-21 04:24 | xiaotie     

多累啊。SL + db4o,开发爆快。
 回复 引用 查看   

#2[楼主]

2009-05-21 04:52 | 斯克迪亚     

--引用--------------------------------------------------
xiaotie:
多累啊。SL + db4o,开发爆快。
--------------------------------------------------------
本身就不是为了省事而使用的方案~,侧重于性能和通用性。
PS:db4o
性能是怎样的?能否用于中小网站开发?

 回复 引用 查看   

#3

2009-05-21 06:11 | Nick Wang (懒人王)     

@斯克迪亚
但是不省事的方案效益也不大啊。
开发速度慢+人员要求高 = 开发成本高
还是那句话,要根据需求选择架构,如果用户对性能要求不高呢?就算性能再好也没用啊。

 回复 引用 查看   

#4

2009-05-21 06:18 | xiaotie     

@斯克迪亚
刚写了篇俺推荐的中小型软件使用的架构 http://www.cnblogs.com/xiaotie/archive/2009/05/21/1485795.html

 回复 引用 查看   

#5

2009-05-21 08:07 | 随处走走     

我们公司一个网站就是用这样的方式做的,刚开始入手的确有点困难,接触多了也就好了,不过我们是直接用数据库的For xml element类似这样的语句输出xml的。

能不能问问楼主是用什么开发的么,似乎目前的VS2005并不支持XPath 2.0中的一些函数,有新的用不了,总是很难受。

 回复 引用 查看   

#6

2009-05-21 08:43 | 杜建宇     

XML+XSL绝对没HTML效率高的。




 回复 引用 查看   

#7

2009-05-21 08:49 | 紫色永恒     

HOHO,还有XPS版本~
 回复 引用 查看   

#8

2009-05-21 08:51 | 紫色永恒     

@斯克迪亚
db4o
的性能一般

 回复 引用 查看   

#9

2009-05-21 08:51 | shenghuo.cn[未注册用户]

www.shenghuo.cn 这个网站就是基于这个架构的 去年就用了 比你的还成熟呵呵
 回复 引用   

#10

2009-05-21 08:53 | 一舟     

很久以前csdn也是xml+xsl. but now...
 回复 引用 查看   

#11

2009-05-21 08:55 | shenghuo.cn[未注册用户]

为了实现seo和网站轻量级的双重效果,大量xml数据的读取不要使用js,系统级的proj可以使用,但是网站级别的就不要了,可以从数据库直接返回xml,使用xslt进行解析,或者无关紧要的东西不要存在数据库了,比如城市名称,版块名称,系统变量,网站配置变量等等全部存放在xml中,直接读取,不过这样要求一个高性能的io读取的硬盘!由于涉及到很多技术细节不能一一透露,我只能说,这个哥们的想法我们早就在实践了,实践的效果就是还不错!
 回复 引用   

#12

2009-05-21 08:57 | lewi[未注册用户]

还行,可以研究一下PowereasySiteFactoryBizIdea系列产品的模板解析引擎会让博主您有更多收获。
 回复 引用   

#13

2009-05-21 08:57 | shenghuo.cn[未注册用户]

but now。。。。 csdn的访问速度一落千丈!
 回复 引用   

#14

2009-05-21 08:57 | 一线风     

@杜建宇

http://max.cszi.com
服务端XML+XSLT生成XHTML 我觉得和MS的控件差不多,比一些复杂控件效率还要好些.

 回复 引用 查看   

#15

2009-05-21 08:58 | 银河     

好文章。
学习了。
我也认为楼主提出的方案很好。
低耦合的方案是很优雅的。
就是对开发人员的要求高了一点。我想应该适应于大公司进行开发。

 回复 引用 查看   

#16

2009-05-21 09:10 | 菌哥     

请教一下楼主,这种方式开发速度和性能如何,有支持的自动生成代码的工具吗?
 回复 引用 查看   

#17

2009-05-21 09:14 | foryu[未注册用户]

性能的确不行,而且开发效率非常低下
深受其害

 回复 引用   

#18

2009-05-21 09:15 | foryu[未注册用户]

个人觉得还是自定义控件来的方便
不知道楼主这种方式用在实际项目中没有

 回复 引用   

#19

2009-05-21 09:20 | 徐少侠     

我个人是觉得RIA是未来的希望

把有限的网络带宽浪费在用于更改客户端呈现状态似乎没太大意义

即使网络速度在逐年提升

客户端的所有呈现由客户端自己完成,客户端和服务器之间的交互都是数据的交互。服务器端不管理任何呈现的逻辑

其实C/S程序就是这么干的

 回复 引用 查看   

#20

2009-05-21 09:24 | LanceZhang     

赞,斯克迪亚的文章总是富含创造性思维
 回复 引用 查看   

#21

2009-05-21 09:35 | 77fashion[未注册用户]

我们的网站的博客程序就是就这个方案做的。
不过,有点不一样。为了保证客户端兼容性,采用了服务端转换,客户端收到的还是xhtml
有一点,要注意,涉及多模板与多模块,一定要注意使用分离的xsl文字
使用import。这样会少很多工作的。

 回复 引用   

#22

2009-05-21 09:36 | sujiantao     

不错,我也有类似的想法~
 回复 引用 查看   

#23

2009-05-21 09:37 | Ray Wu     

这个方案应该早就提出来了(应该是几年前吧),而且基本被证明是失败的方案吧。当然也有少数成功的案例
 回复 引用 查看   

#24

2009-05-21 09:45 | 飘飘泡泡     

楼主说的很对,性能和通用性很好,不过要求开发人员的水平也比较高吧
 回复 引用 查看   

#25

2009-05-21 10:11 | 嘎嘎打分打分[未注册用户]

我不赞同楼主的观点
 回复 引用   

#26

2009-05-21 10:42 | suntear[未注册用户]

暴雪的网站就是这样的解决方案。
不过xslt好像对seo不好吧?

 回复 引用   

#27

2009-05-21 11:08 | converter[未注册用户]

对的,不适合seo

http://www.cer24.com/

 回复 引用   

#28

2009-05-21 12:09 | 飘风之鹰     

我也一直接想应用这个方案,可总是力不从心
 回复 引用 查看   

#29

2009-05-21 12:17 | sharper.shen[未注册用户]

XML + XLS 转化为HTML 累就一个字.
分离到是很彻底啊

 回复 引用   

#30

2009-05-21 13:10 | 一抹微蓝     

楼主思路很好,希望能写出一个好用的CMS系统。

这种架构有成功的案例,www.msn.com就是,只不过它推送到客户端的是xhtml

 回复 引用 查看   

#31

2009-05-21 13:12 | xiao_p(未登录)[未注册用户]

说实话,没有什么特别大的优势。

xml + xslt
作为template 明显没有aspx 来的有效。

 回复 引用   

#32[楼主]

2009-05-21 14:10 | 斯克迪亚     

--引用--------------------------------------------------
随处走走: 我们公司一个网站就是用这样的方式做的,刚开始入手的确有点困难,接触多了也就好了,不过我们是直接用数据库的For xml element类似这样的语句输出xml的。

能不能问问楼主是用什么开发的么,似乎目前的VS2005并不支持XPath 2.0中的一些函数,有新的用不了,总是很难受。
--------------------------------------------------------
我的是2008.Net 3.5 SP1

 回复 引用 查看   

#33[楼主]

2009-05-21 14:13 | 斯克迪亚     

--引用--------------------------------------------------
杜建宇: XML+XSL绝对没HTML效率高的。




--------------------------------------------------------
我不这样认为,客户端一次性下载XSL,多次使用,此后只下载关键性的XML数据即可,和Ajax异曲同工,浏览速度会有所提升的,同样服务器也因此降低了很多负荷,减少传输、无需合成。

 回复 引用 查看   

#34[楼主]

2009-05-21 14:14 | 斯克迪亚     

--引用--------------------------------------------------
紫色永恒: @斯克迪亚
db4o
的性能一般
--------------------------------------------------------
哦~真希望MS弄个对象数据库来~

 回复 引用 查看   

#35[楼主]

2009-05-21 14:15 | 斯克迪亚     

--引用--------------------------------------------------
xiaotie: @
斯克迪亚
刚写了篇俺推荐的中小型软件使用的架构 <a href="http://www.cnblogs.com/xiaotie/archive/2009/05/21/1485795.html" target="_new">http://www.cnblogs.com/xiaotie/archive/2009/05/21/1485795.html</a>
--------------------------------------------------------
拜读ing

 回复 引用 查看   

#36[楼主]

2009-05-21 14:26 | 斯克迪亚     

--引用--------------------------------------------------
菌哥: 请教一下楼主,这种方式开发速度和性能如何,有支持的自动生成代码的工具吗?
--------------------------------------------------------
我觉得比较适合多人团队开发,那样的话效率还是不错的,如果只有一两个人的话,开发速度一般。这就像是一个支持并行运算的程序,需要同步的地方很少,线程多了自然就更快。
性能方面我文中已经做了介绍,主要是针对服务器充分优化,对客户端的带宽要求也更低,但对客户端的CPU要求更高一点点。
后台代码仍然可以使用我们以前的逻辑层、数据层代码,自动生成工具应该有不少,前台方面我没有找到优秀的XSLT编辑软件,目前最好的可能也就是DW了。

 回复 引用 查看   

#37[楼主]

2009-05-21 14:26 | 斯克迪亚     

--引用--------------------------------------------------
lewi:
还行,可以研究一下PowereasySiteFactoryBizIdea系列产品的模板解析引擎会让博主您有更多收获。
--------------------------------------------------------
谢谢你的建议,我还没接触过这些呢,以后抽时间看看。

 回复 引用 查看   

#38[楼主]

2009-05-21 14:27 | 斯克迪亚     

--引用--------------------------------------------------
shenghuo.cn:
为了实现seo和网站轻量级的双重效果,大量xml数据的读取不要使用js,系统级的proj可以使用,但是网站级别的就不要了,可以从数据库直接返回xml,使用xslt进行解析,或者无关紧要的东西不要存在数据库了,比如城市名称,版块名称,系统变量,网站配置变量等等全部存放在xml中,直接读取,不过这样要求一个高性能的io读取的硬盘!由于涉及到很多技术细节不能一一透露,我只能说,这个哥们的想法我们早就在实践了,实践的效果就是还不错!
--------------------------------------------------------
感谢分享你的经验:)

 回复 引用 查看   

#39[楼主]

2009-05-21 14:31 | 斯克迪亚     

--引用--------------------------------------------------
foryu:
性能的确不行,而且开发效率非常低下
深受其害
--------------------------------------------------------
--
引用--------------------------------------------------
foryu:
个人觉得还是自定义控件来的方便
不知道楼主这种方式用在实际项目中没有
--------------------------------------------------------
没可能性能不佳的,除AjaxRIA方案以外的传统方案性能基本都没法和这个相提并论的,想想WebForm组合一个页面需要多少步骤、多少运算,输出和回发页面需要多少带宽就知道了。
方便归方便,是以性能为代价的。

 回复 引用 查看   

#40[楼主]

2009-05-21 14:34 | 斯克迪亚     

--引用--------------------------------------------------
徐少侠: 我个人是觉得RIA是未来的希望

把有限的网络带宽浪费在用于更改客户端呈现状态似乎没太大意义

即使网络速度在逐年提升

客户端的所有呈现由客户端自己完成,客户端和服务器之间的交互都是数据的交互。服务器端不管理任何呈现的逻辑

其实C/S程序就是这么干的
--------------------------------------------------------
我认为,此方案及Ajax方案、RIA方案可能会在未来一段时间内长期共存,三分天下,甚至三者可以在一个网站之内共存共生,三者的理念出入不大,服务端都是只处理最基本的事务。

 回复 引用 查看   

#41[楼主]

2009-05-21 14:35 | 斯克迪亚     

--引用--------------------------------------------------
LanceZhang:
赞,斯克迪亚的文章总是富含创造性思维
--------------------------------------------------------
^^

 回复 引用 查看   

#42[楼主]

2009-05-21 14:37 | 斯克迪亚     

--引用--------------------------------------------------
Ray Wu:
这个方案应该早就提出来了(应该是几年前吧),而且基本被证明是失败的方案吧。当然也有少数成功的案例
--------------------------------------------------------
我不知道此方案有什么致命缺陷可被断定为失败,说是生不逢辰更好些吧

 回复 引用 查看   

#43

2009-05-21 15:52 | weathhua[未注册用户]

不错的方案,大型网站是否有这样的应用?

中小网站我想.NET平台下即使WEBFORM不行,但ASP.NET MVC 应该可以可以应付得了。

 回复 引用   

#44

2009-05-21 16:02 | 一线风     

,上午发的没有人看到.
我现在就是用在服务器端生成XML并用XSLT来解析生成XThml. 例子可以看:http://max.cszi.com
感觉用起来还是很爽的. MS的控件适合临时写一些要用到的.或是对界面要求不高的.

 回复 引用 查看   

#45

2009-05-21 18:19 | acheqi     

我们的网站的博客程序就是就这个方案做的。
不过,有点不一样。为了保证客户端兼容性,采用了服务端转换,客户端收到的还是xhtml
有一点,要注意,涉及多模板与多模块,一定要注意使用分离的xsl文字
使用import。这样会少很多工作的。






---------------------------------------------------------


xslt
解析效率极低。。。。。。。。小量玩玩可以,或者这个做模板生成静态,是蛮方便,不过如果是动态解析的话,额。不建议使用,虽然用起来看似比asp.net控件好用,不过,效率不是一个级别的的东西

 回复 引用 查看   

#46[楼主]

2009-05-21 19:40 | 斯克迪亚     

--引用--------------------------------------------------
suntear:
暴雪的网站就是这样的解决方案。
不过xslt好像对seo不好吧?
--------------------------------------------------------
XSLT
无所谓吧,都是些布局相关的内容,意义不大

 回复 引用 查看   

#47[楼主]

2009-05-21 19:42 | 斯克迪亚     

--引用--------------------------------------------------
xiao_p
(未登录): 说实话,没有什么特别大的优势。

xml + xslt
作为template 明显没有aspx 来的有效。
--------------------------------------------------------
看你的有效是指方便还是性能了

 回复 引用 查看   

#48[楼主]

2009-05-21 19:46 | 斯克迪亚     

--引用--------------------------------------------------
acheqi:
我们的网站的博客程序就是就这个方案做的。
不过,有点不一样。为了保证客户端兼容性,采用了服务端转换,客户端收到的还是xhtml
有一点,要注意,涉及多模板与多模块,一定要注意使用分离的xsl文字
使用import。这样会少很多工作的。






---------------------------------------------------------


xslt
解析效率极低。。。。。。。。小量玩玩可以,或者这个做模板生成静态,是蛮方便,不过如果是动态解析的话,额。不建议使用,虽然用起来看似比asp.net控件好用,不过,效率不是一个级别的的东西
--------------------------------------------------------
我也觉得如果在服务端转换XSLT的话,就不如直接用ASPX+缓存了

 回复 引用 查看   

#49

2009-05-22 15:28 | 一线风     

--引用--------------------------------------------------
acheqi:
我们的网站的博客程序就是就这个方案做的。
不过,有点不一样。为了保证客户端兼容性,采用了服务端转换,客户端收到的还是xhtml
有一点,要注意,涉及多模板与多模块,一定要注意使用分离的xsl文字
使用import。这样会少很多工作的。






---------------------------------------------------------


xslt
解析效率极低。。。。。。。。小量玩玩可以,或者这个做模板生成静态,是蛮方便,不过如果是动态解析的话,额。不建议使用,虽然用起来看似比asp.net控件好用,不过,效率不是一个级别的的东西
--------------------------------------------------------
这个有测试结果吗? 我想看看! 因为我用起来感觉很快的呀.

 回复 引用 查看   

#50[楼主]

2009-05-22 17:29 | 斯克迪亚     

--引用--------------------------------------------------
一线风: --引用--------------------------------------------------
acheqi:
我们的网站的博客程序就是就这个方案做的。
不过,有点不一样。为了保证客户端兼容性,采用了服务端转换,客户端收到的还是xhtml
有一点,要注意,涉及多模板与多模块,一定要注意使用分离的xsl文字
使用import。这样会少很多工作的。






---------------------------------------------------------


xslt
解析效率极低。。。。。。。。小量玩玩可以,或者这个做模板生成静态,是蛮方便,不过如果是动态解析的话,额。不建议使用,虽然用起来看似比asp.net控件好用,不过,效率不是一个级别的的东西
--------------------------------------------------------
这个有测试结果吗? 我想看看! 因为我用起来感觉很快的呀.
--------------------------------------------------------
我没有测试过,不过这种转换想来是要比WebForm那种来得慢,WebForm肯定是经过优化的,并且支持缓存。
可以考虑获取客户端浏览器/操作系统信息,然后决定发送给客户端XML还是转换好的Xhtml,这样倒是能把兼容问题搞定。

 回复 引用 查看   

#51

2009-05-26 10:32 | 室女座[未注册用户]

我也一直想用这样的结构开发,但是我开发的是网站,而 google xml 的收录不好,所以,还是用 htm
  引用   

#52

2009-05-31 01:34 | RadarX     

什么建设原则,不知能实现不

2009
城市 20MB/s (60%)
农村 4MB/s (60%)
2010
城市 20MB/s (普遍)
农村 4MB/s (普遍)
2013
城市 50100MB/s (普遍)
农村 10MB/s (普遍)

 回复 引用 查看   

#53

2009-07-18 10:23 | zbr[未注册用户]

讨论很有意思,很有启发,感谢。
 回复 引用   

#54

2009-07-22 17:31 | gzj[未注册用户]

本人比较认可以下3种方案.
1.discuzNT
的模板方法.
2.
楼主的方案.
3.
楼主的方案里面的. XML+XSL-->HTML 部分 在服务器端生成.

 回复 引用   

#55

2009-07-22 17:31 | gzj[未注册用户]

本人比较认可以下3种方案.
1.discuzNT
的模板方法.
2.
楼主的方案.
3.
楼主的方案里面的. XML+XSL-->HTML 部分 在服务器端生成.

 回复 引用   

#56

2009-08-06 11:19 | mrxliu     

博主!
我尝试下新东西。谢谢

 回复 引用 查看   

#57

2009-08-18 13:57 | ennn[未注册用户]

msn.com就是这么干的,不过还需要提供整套的解决方案和平台进行支撑,否则累死了
 回复 引用   

#58

2009-08-23 21:55 | Selfocus     

嘿嘿h,干笑2.1
 回复 引用 查看   

#59

2009-09-28 02:35 | bjinner[未注册用户]

懂得真多
 回复 引用   

#60

2010-06-27 20:30 | scally     

我也比较赞同这种开发方式
另外问一个问题xpathstring-length函数对汉字字符的长度没法准确判断(和个测字和一个英文字符的长度一样),楼主有方法解决吗?只能用脚本吗?

 回复 引用 查看   

#61[楼主]

2010-06-28 09:01 | 斯克迪亚     

引用 scally
我也比较赞同这种开发方式
另外问一个问题xpathstring-length函数对汉字字符的长度没法准确判断(和个测字和一个英文字符的长度一样),楼主有方法解决吗?只能用脚本吗?

没应用过这个函数,通常情况下都是脚本结合正则判断吧,xpath的功能是比较受限的。
 回复 引用 查看   

#62

2010-06-28 09:11 | 一线风     

引用 斯克迪亚:
引用 scally:
我也比较赞同这种开发方式
另外问一个问题xpathstring-length函数对汉字字符的长度没法准确判断(和个测字和一个英文字符的长度一样),楼主有方法解决吗?只能用脚本吗?

没应用过这个函数,通常情况下都是脚本结合正则判断吧,xpath的功能是比较受限的。

使用AddExtensionObject 方法加上自定义的涵数好了。
解决方案参考:http://max.cszi.com/Blog/473-1.aspx
 回复 引用 查看   

#63

2011-01-13 01:17 | 国之将亡五毛成灾     

极其不看好 XSLT 难用至极不说,好多复制的HTML XSLT已经复杂得不可能
还有就是不复合索引引擎优化, 无法看到真实输入的HTML 其实HTML已经成为一个客户端动态的结果,HTML将会越人们越来越远,本来前台看到的HTML就已经是 后台ASP JSP PHP 处理过的结果,再经过XSLT处理 那后台更不好做 网页变得超级复杂

 回复 引用 查看   

#64[楼主]

2011-01-13 04:30 | 斯克迪亚     

引用 国之将亡五毛成灾:
极其不看好 XSLT 难用至极不说,好多复制的HTML XSLT已经复杂得不可能
还有就是不复合索引引擎优化, 无法看到真实输入的HTML 其实HTML已经成为一个客户端动态的结果,HTML将会越人们越来越远,本来前台看到的HTML就已经是 后台ASP JSP PHP 处理过的结果,再经过XSLT处理 那后台更不好做 网页变得超级复杂

搜索引擎直接索引XML内的纯净的内容,相比HTML那种带干扰的要好得多。
 回复 引用 查看   

 

posted on 2011-05-24 23:24 肥仔 阅读(1203) 评论(0)  编辑 收藏 引用 所属分类: Web-前台


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理