程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> XML+XSLT+CSS+JQuery+WebService組建Asp.Net網(2)

XML+XSLT+CSS+JQuery+WebService組建Asp.Net網(2)

編輯:.NET實例教程

 3.       更易於搜索引擎收錄。首先就是此方案可以被搜索引擎收錄,而AJax方案的弊端就在這裡;其次,搜索引擎喜歡冗余少的網站,這會一定程度上影響網站排名,而XML數據最為符合這一要求;再者,網址較為友好,這是相對MVC而言的,具體原因可參看我此前發表的一篇文章。

  4.       更容易在其他客戶端中使用。這一點AJax方案也同樣優秀,MVP方案實現起來有些困難,其他的方案都難以實現。

  弊端

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

  1.       更高的技術要求。顯然相比以往的方案,此方案需要開發者掌握更多知識,並組合應用。

  2.       更高的客戶端負荷。XSLT加重了客戶端的處理壓力,雖然我們大都覺得客戶端的運算資源負荷是一個可以忽視的問題,從而將盡可能多的運算放到客戶端,但並不是所有客戶都使用中高端的機器,尤其是對一些上網本用戶而言,JS已經讓他們頭疼了。

  3.       更差的兼容性。Html、JS、CSS在各個浏覽器上本就有些兼容性問題,現在XSLT又摻合進來,開發者面臨的問題更為嚴峻。並且對於移動客戶端、盲人閱讀器及其他非常規客戶端而言,XSLT是否會被解析都是個疑問。


 范例

  現在演示一個網站范例。

  首先建立一個數據庫,這裡使
用的Accesee 2000-2003數據庫,命名為Database.mdb,在其中建立User表:

XML+XSLT+CSS+JQuery+WebService組建Asp.Net網

  輸入一些數據,用於測試顯示:

XML+XSLT+CSS+JQuery+WebService組建Asp.Net網

  將其導入網站項目中的App_Data目錄。

  添加一個ashx文件,名為Default.ashx:

XML+XSLT+CSS+JQuery+WebService組建Asp.Net網

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  輸入以下代碼:

<%@ 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;

        }

    }

 

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved