欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    【IT168 技術(shù)文檔】

    俗話說,海納百川,有容乃大。這個(gè)道理應(yīng)用到信息技術(shù)的典型就是互聯(lián)網(wǎng)技術(shù),互聯(lián)網(wǎng)由于根本的技術(shù)原因而支持廣泛的自由,可以容納所有的信息,因此在短短的幾十年的時(shí)間內(nèi)其容納的信息量越來越接近于全人類掌握的信息總量。

    對(duì)于特定的軟件,尤其是通用軟件比較數(shù)據(jù)源和報(bào)表格式,也是符合這種原理,例如軟件,其最初就是字處理器,用來處理簡(jiǎn)單的文字文檔。但現(xiàn)在是越來越復(fù)雜和強(qiáng)大,已經(jīng)不再限于處理文字文檔了,而已經(jīng)成為一種開發(fā)平臺(tái)了。

    通用報(bào)表軟件也是如此的,原先的報(bào)表工具,它的數(shù)據(jù)源是基于單條的簡(jiǎn)單的SQL語句查詢的,報(bào)表樣式也是比較簡(jiǎn)單的列表清單模式,隨著其不斷發(fā)展,后來開始能使用多條SQL語句查詢數(shù)據(jù),能夠跨數(shù)據(jù)庫進(jìn)行查詢了,但從本質(zhì)上還是基于SQL查詢的,數(shù)據(jù)只能來源于比較底層的數(shù)據(jù)庫。其他的數(shù)據(jù)來源,比如XML文件,EXCEL文檔,甚至程序運(yùn)行時(shí)產(chǎn)生的內(nèi)部對(duì)象等等,這些數(shù)據(jù)都是可以應(yīng)用到報(bào)表中,但是由于傳統(tǒng)的報(bào)表數(shù)據(jù)源模型而被忽略掉了。

    最近有些報(bào)表工具也嘗試?yán)眠@些數(shù)據(jù),搞數(shù)據(jù)橋,使用報(bào)表工具插件等等,但需要不少編程量,而且總體上還沒突破傳統(tǒng)的基于SQL查詢的報(bào)表數(shù)據(jù)源模型。

    在此我提出最廣泛報(bào)表數(shù)據(jù)源模型。這個(gè)名稱有點(diǎn)嚇人,但個(gè)人覺得,提出新技術(shù)新觀點(diǎn),無論是好是壞,都是值得報(bào)以希望的,都是能攪動(dòng)逐漸僵化的思想,若不提出新觀點(diǎn)新技術(shù),則必然老化僵硬。因此我不怕提出新的荒謬的不合常理的觀點(diǎn),對(duì)于反對(duì)聲,我心中就說:走著瞧。

    最廣泛報(bào)表數(shù)據(jù)源模型的宗旨就是一切皆是報(bào)表數(shù)據(jù)。此處的一切只所有的數(shù)據(jù),關(guān)系型數(shù)據(jù)庫里面的,XML里面的,Excel里面的,文件系統(tǒng)中的,甚至程序運(yùn)行時(shí)產(chǎn)生的一些對(duì)象等等。

    最廣泛報(bào)表數(shù)據(jù)源模型若局限到關(guān)系型數(shù)據(jù)庫則和傳統(tǒng)的基于SQL查詢的報(bào)表數(shù)據(jù)源模型無區(qū)別,但隨著時(shí)代的發(fā)展,傳統(tǒng)的基于SQL查詢的報(bào)表數(shù)據(jù)源模型暴露了一些問題,首先是安全問題。

    現(xiàn)在的信息系統(tǒng)都講究多層結(jié)構(gòu),代碼一般分為3層結(jié)構(gòu),數(shù)據(jù)庫處理層,業(yè)務(wù)邏輯層,數(shù)據(jù)顯示層(用戶界面層)。這種多層結(jié)構(gòu)雖然復(fù)雜點(diǎn),但程序比較靈活,而且容易控制數(shù)據(jù)的安全。于是大家都則日火朝天的構(gòu)造三層或多層結(jié)構(gòu)的系統(tǒng),但到了報(bào)表這塊傻眼了,根據(jù)傳統(tǒng)的報(bào)表模型,此時(shí)程序結(jié)構(gòu)只有一層,報(bào)表工具直接連接數(shù)據(jù)庫訪問數(shù)據(jù),將查詢所得的數(shù)據(jù)直接注入到報(bào)表模板中后輸出報(bào)表。于是在多層結(jié)構(gòu)的程序中嵌入一個(gè)單層的報(bào)表模塊。這很顯然的帶來了維護(hù)和安全方面的問題。

    一些報(bào)表工具能從里面獲得數(shù)據(jù),其實(shí)在我看來,就是一個(gè)底層數(shù)據(jù)庫,只是它是原始數(shù)據(jù)庫在應(yīng)用程序內(nèi)部的一個(gè)映射,對(duì)于它也是有管理和安全的要求,也算作系統(tǒng)底層。如果惡意代碼不去直接連接數(shù)據(jù)庫,而是訪問和修改了,最后程序底層很可能無條件的自動(dòng)保存到數(shù)據(jù)庫中,這和直接訪問和修改數(shù)據(jù)庫沒有什么本質(zhì)區(qū)別,只是時(shí)間上有些延遲了而已,此時(shí)惡意代碼繞過了一些安全措施而訪問的數(shù)據(jù)庫。因此個(gè)人認(rèn)為也可能成為系統(tǒng)的安全漏洞,因此程序員們不但要看好,還要看好。

    而且報(bào)表工具直接訪問數(shù)據(jù)庫造成了報(bào)表生成問題。大家可以發(fā)現(xiàn),輸出的報(bào)表和系統(tǒng)用戶界面的輸出是有些類似的,但數(shù)據(jù)庫里保存的數(shù)據(jù)卻和顯示的樣式相差很大,系統(tǒng)用戶界面需要的數(shù)據(jù)是源自數(shù)據(jù)庫中的原始數(shù)據(jù),經(jīng)過數(shù)據(jù)庫處理層和業(yè)務(wù)邏輯層進(jìn)行了大量的處理而生成的。處理過程有時(shí)可能是簡(jiǎn)單的拷貝,有時(shí)則是很復(fù)雜的邏輯運(yùn)算。而報(bào)表工具的數(shù)據(jù)直接來自數(shù)據(jù)庫,這種結(jié)構(gòu)造成完全依賴報(bào)表工具模擬數(shù)據(jù)庫處理層和業(yè)務(wù)邏輯層的處理過程。報(bào)表工具是一個(gè)公司生產(chǎn)的,但數(shù)據(jù)庫處理層和業(yè)務(wù)邏輯層卻是千千萬萬的公司生產(chǎn)的,勢(shì)單力薄的報(bào)表廠商是根本無法滿足千千萬萬的其他公司產(chǎn)生的那怕是十分之一的功能要求,所謂的零編程的報(bào)表工具是不可能存在的。所有的這些造成報(bào)表模板編制復(fù)雜麻煩,有時(shí)需要編寫擴(kuò)展程序。因此個(gè)人認(rèn)為報(bào)表應(yīng)當(dāng)屬于三層結(jié)構(gòu)的數(shù)據(jù)顯示層,在純粹的三層結(jié)構(gòu)中,報(bào)表不應(yīng)當(dāng)直接連接數(shù)據(jù)庫或,而是應(yīng)當(dāng)從業(yè)務(wù)邏輯層獲得數(shù)據(jù)。

    業(yè)務(wù)邏輯層如何向數(shù)據(jù)顯示層的報(bào)表模塊提供數(shù)據(jù)呢?首先那自然是所謂的用編程來實(shí)現(xiàn)動(dòng)態(tài)報(bào)表,但動(dòng)態(tài)報(bào)表開發(fā)麻煩,代碼量多,而且需要頻繁的調(diào)試報(bào)表樣式,沒有利用報(bào)表工具所特有的專業(yè)的報(bào)表組織輸出功能,報(bào)表工具最重要的報(bào)表模板的功能沒有利用而成為擺設(shè)。

    于是我們很自然的想到了XML技術(shù),XML技術(shù)的宗旨就是方便的交換數(shù)據(jù),因此若報(bào)表工具能直接從XML文檔獲得數(shù)據(jù)然自然是非常好的消息。業(yè)務(wù)邏輯層使用基于XML的序列化將一個(gè)個(gè)業(yè)務(wù)邏輯對(duì)象輸出為XML文檔,或者自定義的輸出特定格式的XML文檔,報(bào)表工具接受這些XML文檔,套上預(yù)先定義的XML處理規(guī)范從這些XML文檔中獲得報(bào)表數(shù)據(jù)比較數(shù)據(jù)源和報(bào)表格式,然后填充到報(bào)表模板中生成報(bào)表輸出。這種操作雖然有點(diǎn)麻煩,但確實(shí)符合的三層結(jié)構(gòu)的思想,不訪問底層數(shù)據(jù),報(bào)表數(shù)據(jù)依賴于業(yè)務(wù)邏輯層,這就維持了三層結(jié)構(gòu)的嚴(yán)謹(jǐn)性和靈活性,而且報(bào)表引擎不用再不自量力的模擬業(yè)務(wù)邏輯層的處理過程了。

    如果報(bào)表工具和應(yīng)用系統(tǒng)使用了相同的框架,例如都是.NET程序或都是JAVA程序,則通過XML文檔的方式有些低效和難用,此時(shí)可以業(yè)務(wù)邏輯層中的包含數(shù)據(jù)的對(duì)象就直接發(fā)送到報(bào)表工具,而報(bào)表工具接受這些對(duì)象提取數(shù)據(jù),然后填充到報(bào)表模板中生成報(bào)表輸出了。可以設(shè)想,應(yīng)用系統(tǒng)有一種對(duì)象類型,它的公開字段或?qū)傩钥捎糜趫?bào)表,將若干個(gè)這種類型的對(duì)象放在一個(gè)List中發(fā)往報(bào)表工具,這時(shí)報(bào)表工具能將簡(jiǎn)單的遍歷對(duì)象列表來獲得報(bào)表數(shù)據(jù),這種情況比較簡(jiǎn)單。但有時(shí)應(yīng)用系統(tǒng)的對(duì)象組成對(duì)象樹,比如一個(gè)公司包含若干個(gè)部門對(duì)象,部門對(duì)象包含若干個(gè)員工對(duì)象,而員工對(duì)象就包含的報(bào)表數(shù)據(jù)。對(duì)于這種對(duì)象樹則不能簡(jiǎn)單的線性遍歷,而得采用遞歸遍歷了。

    但是可以斷言,這個(gè)世界上簡(jiǎn)單系統(tǒng)數(shù)量是占大多數(shù)的。很多系統(tǒng)不是三層或多層結(jié)構(gòu),因此報(bào)表工具也就要直接連接數(shù)據(jù)庫來獲得報(bào)表數(shù)據(jù)。

    綜合上述,獲得報(bào)表數(shù)據(jù)至少有3種方式,直接連接數(shù)據(jù)庫進(jìn)行SQL查詢獲得報(bào)表數(shù)據(jù),接受XML文檔獲得報(bào)表數(shù)據(jù),接受應(yīng)用系統(tǒng)生成的對(duì)象來獲得報(bào)表數(shù)據(jù)。這三種方式相互間是截然不同的,SQL查詢是獲得一個(gè)二維表格,而XML則是層數(shù)不定的樹狀結(jié)構(gòu),而對(duì)象則可能組成對(duì)象樹。而傳統(tǒng)的報(bào)表數(shù)據(jù)源模型是基于SQL查詢的,只能是二維表格,而樹狀結(jié)構(gòu)是不可能壓入到二維表格的。因此在傳統(tǒng)的報(bào)表數(shù)據(jù)源模型下是這三者不可能統(tǒng)一的。

    在此,我提出最廣泛的報(bào)表數(shù)據(jù)源模型,在這個(gè)模型理想目標(biāo)是融入所有類型的數(shù)據(jù)源,包括基于SQL查詢的二維表格結(jié)構(gòu)和基于XML和對(duì)象的樹狀結(jié)構(gòu),網(wǎng)狀結(jié)構(gòu)或其他類型的結(jié)構(gòu)的數(shù)據(jù)源。

    大家知道XML和HTML都源自SGML,SGML是個(gè)試圖包容所有數(shù)據(jù)的標(biāo)記語言,HTML是簡(jiǎn)單顯示數(shù)據(jù)標(biāo)記語言,而XML則是介于兩者之間,XML用20%的內(nèi)容實(shí)現(xiàn)了SGML的80%的功能。

    類似的,由于本人思維能力有限,在此只考慮最廣泛報(bào)表數(shù)據(jù)源模型的一個(gè)簡(jiǎn)化版本,也就是僅僅包括二維表格和樹狀結(jié)構(gòu),其他的結(jié)構(gòu)暫不考慮。一個(gè)包含二維表格和樹狀結(jié)的報(bào)表數(shù)據(jù)源模型是能處理至少80%的需求。因此我們的目標(biāo)就是找個(gè)數(shù)據(jù)結(jié)構(gòu),它既包容二維表格又包容樹狀結(jié)構(gòu)。

    大家考察一下二維表格結(jié)構(gòu),它也可表述為樹狀結(jié)構(gòu),只是這個(gè)樹狀結(jié)構(gòu)只有兩層。第一層節(jié)點(diǎn)就是表或查詢,第二層節(jié)點(diǎn)就是字段,其實(shí)現(xiàn)在一些報(bào)表工具顯示報(bào)表數(shù)據(jù)源時(shí)就是采用兩層的樹狀結(jié)構(gòu)視圖來顯示的。

    由此我們就很想當(dāng)然的用樹狀結(jié)構(gòu)包容二維表格和樹狀結(jié)構(gòu)了。如此也是很自然的出現(xiàn)了筆者推出的樹狀報(bào)表數(shù)據(jù)源結(jié)構(gòu)了。樹狀報(bào)表數(shù)據(jù)源結(jié)構(gòu)既能處理SQL查詢的二維表格,也能處理XML的樹狀結(jié)構(gòu),兩層的樹狀報(bào)表數(shù)據(jù)源就等價(jià)于傳統(tǒng)的基于SQL查詢的報(bào)表數(shù)據(jù)源結(jié)構(gòu)了。

    樹狀報(bào)表數(shù)據(jù)源結(jié)構(gòu)帶來的一個(gè)挑戰(zhàn)就是如何切換不同的數(shù)據(jù)來源,比如數(shù)據(jù)開始來自SQL查詢,但馬上要切換到XML文檔和對(duì)象樹,這時(shí)報(bào)表引擎內(nèi)部必須進(jìn)行平穩(wěn)的過渡,使得報(bào)表數(shù)據(jù)源能同時(shí)接受不同結(jié)構(gòu)的數(shù)據(jù)。

    筆者曾經(jīng)寫過一篇《XML-報(bào)表數(shù)據(jù)的新大陸》中曾經(jīng)設(shè)想,報(bào)表工具能在應(yīng)用系統(tǒng)提供的若干個(gè)XML文檔中跳躍著獲得報(bào)表數(shù)據(jù),這種跳躍能力就是平滑的處理不同結(jié)構(gòu)數(shù)據(jù)的能力。就像一個(gè)池塘中飄著一些荷葉,一些荷葉寫著關(guān)系型數(shù)據(jù)庫,一些荷葉寫著XML,我們的報(bào)表工具就像青蛙一樣在這些荷葉中來回跳躍。

    隨著一些軟件巨頭的數(shù)據(jù)庫直接支持XML文檔,此時(shí)SQL查詢和XML文檔就融和在一起,此時(shí)就更需要這種跳躍能力了。

    上面提到當(dāng)報(bào)表工具和應(yīng)用系統(tǒng)使用相同的平臺(tái),則應(yīng)用系統(tǒng)可以發(fā)送對(duì)象到報(bào)表工具讓其提取數(shù)據(jù)。我們目前用的是關(guān)系型數(shù)據(jù)庫,但現(xiàn)在可以想象,我們未來可能會(huì)使用面向?qū)ο蟮臄?shù)據(jù)庫,這種面向?qū)ο蟮臄?shù)據(jù)的查詢結(jié)果可能就直接是一個(gè)個(gè)對(duì)象了。其實(shí)有一種名叫Cach'e的面向?qū)ο蟮?a style='color:#0000CC;' href='http://www.dvspw.com/show-19-37424-1.html' title="access數(shù)據(jù)庫系統(tǒng)組件 常見數(shù)據(jù)庫類型及各種數(shù)據(jù)庫的特點(diǎn)" target='_blank'>數(shù)據(jù)庫系統(tǒng)已經(jīng)投入應(yīng)用,它的制造商是( ),想必知道的人不多吧。對(duì)于面向?qū)ο蟮臄?shù)據(jù)庫,我們的報(bào)表工具就必須具備從對(duì)象獲得報(bào)表數(shù)據(jù)的能力了。

    此外還其他格式的數(shù)據(jù)源了,比如CSV,Excel文件,它們和SQL查詢是兼容。HTML文檔,它兼容于XML文檔。總之所有以二維表格或樹狀結(jié)構(gòu)表現(xiàn)的數(shù)據(jù)都可以包容到樹狀報(bào)表數(shù)據(jù)源模型中。

    筆者正在開發(fā)和完善報(bào)表工具,其中就實(shí)現(xiàn)了樹狀報(bào)表數(shù)據(jù)源模型。首先是實(shí)現(xiàn)樹狀報(bào)表數(shù)據(jù)源的抽象模型,然后在這個(gè)抽象模型上掛靠針對(duì)不同格式的數(shù)據(jù)來源的適配器,目前筆者已經(jīng)實(shí)現(xiàn)了針對(duì)SQL查詢,CSV文件和XML的三種數(shù)據(jù)適配器,所有支持的外部數(shù)據(jù)經(jīng)過對(duì)應(yīng)的適配器后進(jìn)入到報(bào)表數(shù)據(jù)源內(nèi)部,而報(bào)表數(shù)據(jù)源內(nèi)部可以任意在這些數(shù)據(jù)間來回切換。由于目前只實(shí)現(xiàn)了三中數(shù)據(jù)適配器,因此只能在 SQL查詢,CSV和XML三者之間來回跳躍。

    在未來,筆者將會(huì)完善發(fā)展樹狀報(bào)表數(shù)據(jù)源,并增加對(duì)象數(shù)據(jù)適配器的種類,預(yù)計(jì)可以從對(duì)象樹中獲得報(bào)表數(shù)據(jù)。

    最廣泛報(bào)表數(shù)據(jù)源模型是筆者剛剛提出來的,可能有錯(cuò)誤的觀點(diǎn),有些想法可能不切實(shí)際,希望認(rèn)真閱讀過本文的人給予指正。

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有