<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于B/S體系結構開(kāi)發(fā)應用系統

基于B/S體系結構開(kāi)發(fā)應用系統

作者: 時(shí)間:2012-10-10 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要 本文介紹了組件以及ActiveX技術(shù),分析了Browser/Server體系結構開(kāi)發(fā)應用軟件的特點(diǎn)和不足。提出了克服該不足的一種方法。最后給出了一個(gè)應用實(shí)例。

本文引用地址:http://dyxdggzs.com/article/202164.htm

關(guān)鍵詞 WEB ,COM ,應用軟件,服務(wù)器

1 引言

由于客戶(hù)服務(wù)器兩層結構存在靈活性差、升級困難、維護工作量大等缺陷,已較難適應當前信息技術(shù)與網(wǎng)絡(luò )技術(shù)發(fā)展的需要。隨著(zhù)WEB技術(shù)的日益成熟,Browse/Server(簡(jiǎn)稱(chēng)B/S)結構已成為取代Browser/Server(簡(jiǎn)稱(chēng)C/S)結構的一種全新技術(shù)。采用該結構軟件的優(yōu)勢在于:(1)無(wú)須開(kāi)發(fā)客戶(hù)端軟件,維護和升級方便;(2)可跨平臺操作,任何一臺機器只要裝有WWW瀏覽器軟件,均可作為客戶(hù)機來(lái)訪(fǎng)問(wèn)系統;(3)具有良好的開(kāi)放性和可擴充性;(4)可采用防火墻技術(shù)來(lái)保證系統的安全性,有效地適應了當前用戶(hù)對管理信息系統的新需求。因此該結構在管理信息系統開(kāi)發(fā)領(lǐng)域中獲得飛速發(fā)展,成為應用軟件研制中一種流行的體系結構。

本文在對B/S體系結構分析的基礎上,提出了一種新的體系結構,把B/S與C/S相結合,將組件技術(shù)和ActiveX技術(shù)分別應用在服務(wù)器端和客戶(hù)端,開(kāi)發(fā)高效、安全的。最后給出了一個(gè)應用實(shí)例。

2 . COM組件技術(shù)和ActiveX技術(shù)

COM是一種技術(shù)標準。它是由微軟公司創(chuàng )建,提供了使多個(gè)應用程序或組件對象協(xié)同工作并相互通信的能力。COM組件是遵循COM規范編寫(xiě)、以WIN32動(dòng)態(tài)鏈接庫(DLL)或可執行文件(EXE)的形式發(fā)布的可執行的二進(jìn)制代碼。遵循COM的規范標準,使組件與應用、組件與組件之間可以相互操作,極其方便地建立可伸縮的。從工程的角度看,組件在應用開(kāi)發(fā)方面具有以下特點(diǎn):

(1) 組件與開(kāi)發(fā)的工具語(yǔ)言無(wú)關(guān)。開(kāi)發(fā)人員可以根據需要和愛(ài)好選擇特定語(yǔ)言工具實(shí)現組件的開(kāi)發(fā)。常用的開(kāi)發(fā)工具是VB、VC和Delphi。將組件編譯成DLL或EXE置于服務(wù)器端??捎行ПWo商業(yè)秘密。

(2) 通過(guò)接口有效保證了組件的復用性。一個(gè)組件具有若干個(gè)接口,每個(gè)接口代表組件的某個(gè)屬性或方法。其它組件或應用程序可以設置或調用這些屬性和方法來(lái)進(jìn)行特定的邏輯處理。組件和應用程序的連接是通過(guò)其接口實(shí)現的。負責集成的開(kāi)發(fā)人員無(wú)須了解組件功能的如何實(shí)現,而只須創(chuàng )建組件對象與其接口建立連接。在保證接口一致性的前提下,可以調換組件、更新版本,也可以將組件應用在不同的系統中。

(3) 組件運行效率高、便于使用和管理。因為組件是二進(jìn)制代碼,比ASP腳本運行效率高,所以核心的商務(wù)邏輯計算任務(wù)必須由組件來(lái)負責,ASP腳本只起組裝組件的角色。而且組件在網(wǎng)絡(luò )上的位置可被透明地分配,組件和使用它的程序既能在同一進(jìn)程中運行,也可在不同進(jìn)程或不同的機器上運行。組件之間是相互分離和獨立的。利用MTS或COM+對組件管理更加方便。

ActiveX是遵循COM/DCOM規程而開(kāi)發(fā)的用于INTERNET的一種對象鏈接與嵌入技術(shù)(OLE)。COM是應OLE設計者的需求而誕生的。其基本的出發(fā)點(diǎn)是想讓某個(gè)軟件通過(guò)一個(gè)通用的機構為另一個(gè)軟件提供服務(wù)。對于基于WEB的應用而言,它提供了使組件嵌入到WEB頁(yè)面以擴展交互功能的應用機制??蛻?hù)端控件是面向用戶(hù)的,以可視化的圖形視頻或文字界面、或者音頻形式在瀏覽器上出現。但它可能并不是瀏覽器的組成部分。這些控件原先是放在服務(wù)器上的。當瀏覽器發(fā)出請求時(shí),WEB服務(wù)器回傳頁(yè)面,由瀏覽器負責解釋。在解釋過(guò)程中,若發(fā)現頁(yè)面中要求調用ActiveX控件時(shí),則用該控件的在頁(yè)面中注明的ID值先在本地的注冊表內進(jìn)行查詢(xún)。若已經(jīng)存在,則說(shuō)明該控件已經(jīng)在本地安裝,然后通過(guò)注冊表中的相關(guān)信息直接使用該控件;否則就要根據頁(yè)面中所提示的該控件所在的服務(wù)器上的路徑到服務(wù)器上去下載并且自動(dòng)完成在本地的安裝注冊,使該控件成為本地資源,供今后使用,這就是所謂“一次下載,永久使用“??蛻?hù)端控件一旦在本地安裝完畢,就等價(jià)于一個(gè)可執行的應用程序,它能訪(fǎng)問(wèn)使用本地的資源,甚至進(jìn)行遠程訪(fǎng)問(wèn)。當然,這可能帶來(lái)了安全性問(wèn)題。

3 基于B/S體系結構開(kāi)發(fā)

3.1 B/S三層體系結構

在B/S體系結構系統中,用戶(hù)通過(guò)瀏覽器向分布在網(wǎng)絡(luò )上的許多服務(wù)器發(fā)出請求,服務(wù)器對瀏覽器的請求進(jìn)行處理,將用戶(hù)所需信息返回到瀏覽器。B/S結構簡(jiǎn)化了客戶(hù)機的工作,客戶(hù)機上只需配置少量的客戶(hù)端軟件。服務(wù)器將擔負更多的工作,對數據庫的訪(fǎng)問(wèn)和應用程序的執行將在服務(wù)器上完成。瀏覽器發(fā)出請求,而其余如數據請求、加工、結果返回以及動(dòng)態(tài)網(wǎng)頁(yè)生成等工作全部由Web Server完成。實(shí)際上B/S體系結構是把二層C/S結構的事務(wù)處理邏輯模塊從客戶(hù)機的任務(wù)中分離出來(lái),由Web服務(wù)器單獨組成一層來(lái)負擔其任務(wù),這樣客戶(hù)機的壓力減輕了,把負荷分配給了Web服務(wù)器。這種三層體系結構如圖1所示。

這種結構不僅把客戶(hù)機從沉重的負擔和不斷對其提高的性能的要求中解放出來(lái),也把技術(shù)維護人員從繁重的維護升級工作中解脫出來(lái)。由于客戶(hù)機把事務(wù)處理邏輯部分分給了功能服務(wù)器,使客戶(hù)機一下子苗條了許多,不再負責處理復雜計算和數據訪(fǎng)問(wèn)等關(guān)鍵事務(wù),只負責顯示部分,所以維護人員不再為程序的維護工作奔波于每個(gè)客戶(hù)機之間,而把主要精力放在功能服務(wù)器上程序的更新工作。這種三層結構在層與層之間相互獨立,任何一層的改變不會(huì )影響其它層的功能。

3.2 B/S三層體系結構的不足

經(jīng)過(guò)近一兩年的應用,B/S體系結構也暴露出了許多不足地方,具體表現在以下幾個(gè)方面:

(1) 由于瀏覽器只是為了進(jìn)行WEB瀏覽而設計的,當其應用于WEB應用系統時(shí),許多功能不能實(shí)現或實(shí)現起來(lái)比較困難。比如通過(guò)瀏覽器進(jìn)行大量的數據輸入,或進(jìn)行報表的應答都是比較困難和不便的。

(2) 復雜的應用構造困難。雖然可以用ActiveX、Java等技術(shù)開(kāi)發(fā)較為復雜的應用,但是相對于發(fā)展已非常成熟C/S的一系列應用工具來(lái)說(shuō),這些技術(shù)的開(kāi)發(fā)復雜,并沒(méi)有完全成熟的技術(shù)供使用。

(3) HTTP可靠性低有可能造成應用故障,特別是對于管理者來(lái)說(shuō),采用瀏覽器方式進(jìn)行系統的維護是非常不安全與不方便的。

(4) WEB服務(wù)器成為對數據庫的唯一的客戶(hù)端,所有對數據庫的連接都通過(guò)該服務(wù)器實(shí)現。WEB服務(wù)器同時(shí)要處理與客戶(hù)請求以及與數據庫的連接,當訪(fǎng)問(wèn)量大時(shí),服務(wù)器端負載過(guò)重。

(5) 由于業(yè)務(wù)邏輯和數據訪(fǎng)問(wèn)程序一般由JavaScript、VBScript等嵌入式小程序實(shí)現,分散在各個(gè)頁(yè)面里,難以實(shí)現共享,給升級和維護也帶來(lái)了不便。同時(shí)由于源代碼的開(kāi)放性,使得商業(yè)規則很容易暴露,而商業(yè)規則對應用程序來(lái)說(shuō)則是非常重要的。

為克服以上不足,在原有B/S體系結構基礎上,采用一種新的體系結構,如圖2所示。

在該種結構體系中,一些需要用WEB處理的,滿(mǎn)足大多數訪(fǎng)問(wèn)者請求的功能界面(如信息發(fā)布查詢(xún)界面)采用B/S結構。后臺只需少數人使用的功能應用(如數據庫管理維護界面)采用C/S結構。組件位于WEB應用程序中,客戶(hù)端發(fā)出HTTP請求到WEB SERVER。WEB SERVER將請求傳送給WEB應用程序。WEB應用程序將數據請求傳送給數據庫服務(wù)器,數據庫服務(wù)器將數據返回WEB應用程序。然后再由WEB SERVER將數據傳送給客戶(hù)端。對于一些實(shí)現起來(lái)困難的功能或一些需要豐富的HTML頁(yè)面,通過(guò)在頁(yè)面中嵌入ActiveX控件來(lái)實(shí)現。

采用這種結構優(yōu)點(diǎn)在于:(1)充分發(fā)揮了充分了B/S與C/S體系結構的優(yōu)勢,彌補了二者不足。充分考慮用戶(hù)利益,保證瀏覽查詢(xún)者方便操作的同時(shí)也使得系統更新簡(jiǎn)單,維護簡(jiǎn)單靈活,易于操作。(2)信息發(fā)布采用B/S結構,保持了瘦客戶(hù)端的優(yōu)點(diǎn)。裝入客戶(hù)機的軟件可以采用統一的WWW瀏覽器。而且由于WWW瀏覽器和網(wǎng)絡(luò )綜合服務(wù)器都是基于工業(yè)標準,可以在所有的平臺上工作。(3)數據庫端采用C/S結構,通過(guò)ODBC/JDBC連接。這一部分只涉及到系統維護、數據更新等,不存在完全采用C/S結構帶來(lái)的客戶(hù)端維護工作量大等缺點(diǎn)。并且在客戶(hù)端可以構造非常復雜的應用,界面友好靈活,易于操作,能解決許多B/S存在的固有的缺點(diǎn)。(4)對于原有基于C/S體系結構的應用,可以非常容易地升級到這種體系結構,只需開(kāi)發(fā)用于發(fā)布的WWW界面,可以保留原有的C/S結構的某些子系統,充分地利用現有系統的資源。使得現有系統或資源無(wú)需大的改造即可以連接使用,保護了用戶(hù)以往的投資(5)通過(guò)在瀏覽器中嵌入ActiveX控件可以實(shí)現在瀏覽器中不能實(shí)現或實(shí)現起來(lái)比較困難的功能。比如通過(guò)瀏覽器進(jìn)行報表的應答。另外,在客戶(hù)端ActiveX控件的加盟,可以豐富HTML頁(yè)面,產(chǎn)生另人驚奇的效果。(6)將服務(wù)器端劃分為WEB服務(wù)器和WEB應用程序兩部分。WEB應用程序采用組件技術(shù)實(shí)現三層體系結中的商業(yè)邏輯部分,達到封裝源代碼,保護知識產(chǎn)權的目的。Internet應用程序大部分屬于分布式應用程序,采用組件技術(shù)一個(gè)重要特點(diǎn)就是它的處理能力能夠隨著(zhù)用戶(hù)數量、數據量所需性能的提高而增加。COM的無(wú)逢擴展集COM+,有著(zhù)如內存數據庫、負載平衡等強大的功能。

4 實(shí)例

下面以某學(xué)校學(xué)生管理系統為例說(shuō)明B/S結構軟件的設計方法,該系統采用B/S體系結構與COM+技術(shù)相結合。通過(guò)該系統管理人員可以對學(xué)生的學(xué)籍、學(xué)生的日常表現、學(xué)生的學(xué)習成績(jì)、學(xué)校教師、學(xué)校的資產(chǎn)進(jìn)行管理與維護。任課教師可以通過(guò)瀏覽器查詢(xún)所教班級學(xué)生各種相關(guān)信息。學(xué)校管理人員通過(guò)瀏覽器對學(xué)校的學(xué)生、教師等信息進(jìn)行管理與維護以及有關(guān)查詢(xún)統計功能。學(xué)校資產(chǎn)管理人員通過(guò)C/S體系結構實(shí)現對學(xué)校資產(chǎn)的管理維護。

本系統結合了ASP技術(shù)和COM+技術(shù),是一個(gè)三層結構。表示層由ASP頁(yè)面組成,用以實(shí)現WEB頁(yè)面顯示和調用COM+組件,業(yè)務(wù)邏輯和數據訪(fǎng)問(wèn)由一組用VC實(shí)現的COM+組件構成。為了便于維護、升級和實(shí)現分布式應用,在實(shí)現過(guò)程中,又將業(yè)務(wù)邏輯層和數據訪(fǎng)問(wèn)層分離開(kāi),ASP頁(yè)面不直接調用數據訪(fǎng)問(wèn)層,而是通過(guò)業(yè)務(wù)邏輯層來(lái)調用數據庫。

4.1 COM組件技術(shù)應用

該系統的實(shí)現主要分為三個(gè)部分:數據庫、COM+組件和ASP頁(yè)面。其中數據庫與ASP頁(yè)面的實(shí)現與一般B/S結構的WEB應用相似。COM+實(shí)現可分為三個(gè)步驟:COM+組件的設計、COM+應用程序的生成和組件注冊、基于屬性編程。該管理系統利用VC中的ATL開(kāi)發(fā)COM+組件。下面是該系統中一個(gè)定制組件部分主要代碼

在showscore.asp頁(yè)面中接受、辨別用戶(hù)的查詢(xún)請求,做出不同的查詢(xún)處理。當客戶(hù)的身分為教師或教務(wù)員時(shí),可以查詢(xún)所有學(xué)生的成績(jì);當客戶(hù)的身分為學(xué)生時(shí),只能查詢(xún)本人的成績(jì)。

定制COM組件Score.dll進(jìn)行查詢(xún)處理。首先設計該組件的接口,為組件設計四個(gè)屬性:SubjNo(課程號),Term(課程所屬學(xué)期),ClassNo(班級號)和StuNo(學(xué)號)。定義兩個(gè)方法RequeryScores和RequeryAllScores,分別對教師、教務(wù)部門(mén)和學(xué)生的請求做出相應的處理,并將查詢(xún)結果集返回給用戶(hù)。

以下是實(shí)現該組件Score.dll接口描述以及實(shí)現方法的部分代碼,從中可以看到組件的接口是如何實(shí)現的:

import ocidl.idl;

[

object,

uuid(46C01798-BE39-4FC0-A25D-718BA31DFADC),

dual,

helpstring(IStudentScore Interface),

pointer_default(unique)

]

interface IStudentScore : IDispatch{

[propget, id(1), helpstring(課程號)] HRESULT SubjNo([out, retval] BSTR *pVal);

[propput, id(1), helpstring(課程號)] HRESULT SubjNo([in] BSTR newVal);

//其它接口部分從略

[id(5), helpstring(method RequeryScores)] HRESULT RequeryScores(([out,retval]LPDISPATCH* ppRecordset));

};

STDMETHODIMP CStudentScore::RequeryScores()

{

HRESULT hr=S_OK;

IobjectContext* m_spObjectContext=NULL;

//利用ADO訪(fǎng)問(wèn)數據庫

::CoInitialize(NULL);

_RecordsetPtr pRecordSet=NULL,pRecordSetClone=NULL;

BSTR bstrDSN=::SysAllocString(LProvider=SQLOLEDB.1;Persist Security Info=True;

Password=;Initial Catalog=pubs;Data Source=zhudamiing;User ID=sa);

BSTR bstrSQL;

try{

GetObjectContext(m_spObjectContext);

pRecordSet.CreateInstance(__uuidof(Recordset));

//根據查詢(xún)要求(查詢(xún)所有課程、查詢(xún)特定學(xué)期所有課程、查詢(xún)指定課程、查詢(xún)

//特定學(xué)期某一課程)進(jìn)行不同操作生成相應SQL語(yǔ)句,程序具體處理從略

pRecordSet->CursorLocation = adUseClient;

pRecordSet->Open(bstrSQL,bstrDSN,adOpenKeyset,adLockOptimistic,adCmdText);

pRecordSet->PutRefActiveConnection(NULL);

pRecordSetClone = pRecordSet->Clone(adLockOptimistic);

pRecordSetClone->QueryInterface(IID_IDispatch, (void**)ppRecordset);

pRecordSet->Close();

pRecordSet = NULL;

::SysFreeString(bstrDSN);

::SysFreeString(bstrSQL);

//事物成功完成,則提交該事物

I f(m_spObjectContext-)

m_spObjectContext->SetComplete();

}

catch(_com_error e){

if(m_spObjectContext) //事物失敗,回滾事物處理

m_spObjectContext->SetAbort()

// 其他錯誤處理,從略

}

return hr;

}

RequeryAllScores()實(shí)現部分從略。另外ASP調用實(shí)現部分比較簡(jiǎn)單從略。

組件編譯結束后可以用COM+組件服務(wù)管理工具來(lái)管理COM+組件及其所在的應用程序。COM+組件服務(wù)是個(gè)圖形界面的管理工具,利用它可以安裝和發(fā)布組件、配置組件及其所在應用程序的屬性,以實(shí)現組件安全性、MTS支持、排對組件、設置組件構造參數等。

4。2 ActiveX技術(shù)應用

在本系統中許多報表的打印如學(xué)生成績(jì)打印、學(xué)籍報表、學(xué)籍卡打印等需要特殊的格式。而瀏覽器所提供的打印功能無(wú)法實(shí)現。為此可采用ActiveX技術(shù),實(shí)現在WEB環(huán)境下的本地端打印和報表生成。具體實(shí)現過(guò)程為:(1)WWW服務(wù)器在接到用戶(hù)請求后調用WEB應用程序中的相應組件,通過(guò)組件訪(fǎng)問(wèn)數據庫,對數據處理生成報表數據,以文件形式存儲于WEB服務(wù)器中相應目錄下。(2)WWW服務(wù)器向用戶(hù)瀏覽器發(fā)送內嵌ActiveX控件的HTML頁(yè)面,并在HTML頁(yè)面里的(OBJECT)標志中的param屬性里指明數據文件的URL地址。(3)HTML頁(yè)面根據所提供的ActiveX標志從WWW服務(wù)器上下載ActiveX控件到本地端,并在瀏覽器里執行。ActiveX控件在客戶(hù)瀏覽器里完成初始化工作以后,則需直接與服務(wù)器端聯(lián)系,以獲取報表數據。ActiveX控件與服務(wù)器端的連接采用HTTP協(xié)議所提供的GET方法,根據數據文件在WWW服務(wù)器上的URL地址,直接將數據文件從WWW服務(wù)器下載到本地端。(4)對數據文件進(jìn)行解析,輸入到控件的存儲顯示模塊里,用以存儲顯示。(5)當用戶(hù)按下打印按鈕時(shí),ActiveX調用打印模塊進(jìn)行打印輸出。

5 結束語(yǔ)

隨著(zhù)INTERNET普及,基于B/S體系結構開(kāi)發(fā)應用程序變?yōu)榱餍械姆绞?。將組件技術(shù)應用到B/S體系結構中,實(shí)現業(yè)務(wù)邏輯封裝,提高軟件的可重性和可維護性。

參考文獻:

[1]余英 ,梁剛 VC實(shí)踐與提高COM和COM+篇. 中國鐵道出版社

[2]林子禹等 基于WEB與組件技術(shù)的企業(yè)應用系統設計模型 計算機工程與應用 2000.6.

[3]夏驕雄等 基于Intranet的管理信息系統 小型微型計算機系統 2001、4

[4]樓偉進(jìn),應飚.COM/DCOM/COM+組件技術(shù) :計算機應用2000、4.

[5]張震、張曾科 一種新的WEB數據庫系統結構

更多計算機與外設信息請關(guān)注21ic計算機與外設頻道



關(guān)鍵詞: 應用系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>