• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于CallBack機(jī)制實(shí)現(xiàn)的實(shí)時(shí)互動(dòng)服務(wù)系統(tǒng)設(shè)計(jì)

      2019-07-23 02:20:04鐘秋亭
      關(guān)鍵詞:咨詢服務(wù)控件頁面

      鐘秋亭

      (鞍山師范學(xué)院 圖書館,遼寧 鞍山 114007)

      網(wǎng)絡(luò)技術(shù)改變了交流方式,以溝通交流為基礎(chǔ)的圖書館信息咨詢服務(wù)建立了形式多樣的服務(wù)系統(tǒng),有外購的專門系統(tǒng)型,有借助免費(fèi)工具的網(wǎng)絡(luò)平臺(tái)型.本文所研究設(shè)計(jì)的基于網(wǎng)頁交流形式的服務(wù)系統(tǒng),搭建了信息交流溝通平臺(tái),彰顯了圖書館的專業(yè)信息咨詢服務(wù)特色.

      1 信息咨詢服務(wù)系統(tǒng)的規(guī)劃

      本文利用ASP.NET的CallBack機(jī)制和改進(jìn)的WebPart控制組和DataSource控件等技術(shù)實(shí)現(xiàn)實(shí)時(shí)互動(dòng)的信息咨詢服務(wù)系統(tǒng),解決了頁面不斷刷新加載而造成的頁面閃爍、停滯等問題,為信息咨詢服務(wù)提供了順暢交流的系統(tǒng)平臺(tái)[1-4].

      1.1 系統(tǒng)實(shí)現(xiàn)的理論基礎(chǔ)

      ASP.NET的Postback和Callback均可以實(shí)現(xiàn)對(duì)服務(wù)器請(qǐng)求頁面信息的功能,Postback對(duì)服務(wù)器請(qǐng)求保存上一次的請(qǐng)求頁面狀態(tài),而客戶端與服務(wù)端的交互默認(rèn)依然是整頁面提交,加重了網(wǎng)絡(luò)數(shù)據(jù)傳輸負(fù)擔(dān),加大了服務(wù)器的工作壓力,而且用戶還需要付出時(shí)間等待最終處理結(jié)果[2].

      ASP.NET在2.0版增加了Callback機(jī)制,實(shí)現(xiàn)了通過客戶端系統(tǒng)網(wǎng)頁腳本向服務(wù)器端傳遞相應(yīng)的信息數(shù)據(jù),服務(wù)器端以接收到的數(shù)據(jù)進(jìn)行查詢和處理,最后將結(jié)果回傳到客戶端進(jìn)行顯示.ASP.NET提供了實(shí)現(xiàn)無刷新回調(diào)接口IcallbackEventHandler,該接口分別定義了RaiseCallbackEvent和GetCallbackResult.通過它們實(shí)現(xiàn)接受客戶端傳遞的信息數(shù)據(jù),再將所得到的結(jié)果傳回給客戶端的系統(tǒng)頁面.Callback減輕了數(shù)據(jù)傳輸負(fù)擔(dān),緩解了服務(wù)端的工作壓力,并且具有異步性[3].

      1.2 系統(tǒng)功能的設(shè)計(jì)

      這個(gè)咨詢服務(wù)系統(tǒng)的主頁僅在一個(gè)頁面通過WebPart和菜單組合機(jī)制來實(shí)現(xiàn)各項(xiàng)功能,其整體效果如圖1所示.

      圖1是信息咨詢系統(tǒng)所有功能全部顯示的頁面,每部分功能均采用WebPart機(jī)制,用戶可以根據(jù)喜好而取舍任何一個(gè)WebPart,或進(jìn)行位置的改變.

      其中“在線咨詢”和“交流信息”兩個(gè)WebPart就是利用CallBack機(jī)制,通過自動(dòng)讀取傳輸數(shù)據(jù)實(shí)現(xiàn)的互動(dòng)交流功能.而“信息公告”和“待辦事務(wù)”這些功能是通過非常方便的ASP.NET信息訪問機(jī)制DataSource完成的.

      圖1 功能顯示頁面

      1.3 系統(tǒng)部件的設(shè)計(jì)

      除了主頁,獨(dú)立的頁面還有登錄機(jī)制的Login頁面,其它的子功能采用WebPart方式整合在系統(tǒng)中,整個(gè)系統(tǒng)的各項(xiàng)規(guī)劃設(shè)計(jì)如圖2所示.

      圖2 系統(tǒng)規(guī)劃設(shè)計(jì)圖

      咨詢系統(tǒng)中的每個(gè)功能的WebPart都有自己的文件夾,其中大多都有兩個(gè)文件,如圖2中信息公告文件夾中的兩個(gè)文件.其中的.ascx文件是功能的WebPart,被存放在主頁中,另一個(gè)文件是實(shí)現(xiàn)各個(gè)WebPart的數(shù)據(jù)添加、整理等功能.

      1.4 數(shù)據(jù)庫的設(shè)計(jì)

      本文設(shè)計(jì)的系統(tǒng)中每一個(gè)WebPart的子功能,都采用數(shù)據(jù)庫處理機(jī)制,這些機(jī)制使用的是Oracle數(shù)據(jù)庫,在Oracle數(shù)據(jù)庫管理工具P/L SQL Developer中創(chuàng)建4個(gè)表,分別為待辦事務(wù)、交流信息、信息公告、在線咨詢.

      在Web.config文件中找到節(jié)點(diǎn),在這個(gè)節(jié)點(diǎn)中添加代碼,用于定義Oracle數(shù)據(jù)庫的名稱,以及所需要的用戶名和密碼,具體如下:

      在項(xiàng)目App_Code下建一個(gè)類,命名為DB.cs,該類主要用于創(chuàng)建數(shù)據(jù)的連接和操作Oracle數(shù)據(jù)庫.編寫代碼如下:

      using System;

      using System.Data;

      ...

      using System.Data.SqlClient;

      using System.Data.OracleClient;

      ...

      OracleConnection con=DB.GetCon();

      con.Open();

      OracleCommand cmd=new OracleCommand(P_str_cmdtxt,con); ...

      在這個(gè)DB.cs類頁面前端拖一個(gè)GridView控件,然后在后臺(tái)查詢表中記錄,把記錄綁定到GridView中.后臺(tái)部分代碼如下:

      using System;

      using System.Collections.Generic;

      ...

      protected void Page_Load(object sender,EventArgse)

      {string sql="select*from WARE_RETAIL_PART";

      //string tab name="WARE_RETAIL_PART";

      DataSet ds=DB.getDataSet(sql);

      GridView1.DataSource=ds.Tables[0].DefaultView;

      GridView1.DataBind();

      ...

      以此實(shí)現(xiàn)網(wǎng)頁各表單選項(xiàng)對(duì)數(shù)據(jù)庫的訪問,向服務(wù)器提交數(shù)據(jù)請(qǐng)求獲取數(shù)據(jù)表中的信息并顯示在系統(tǒng)頁面相應(yīng)欄目中.

      2 信息咨詢系統(tǒng)的實(shí)現(xiàn)

      2.1 登錄機(jī)制

      信息咨詢系統(tǒng)的使用,首先是登錄機(jī)制,涉及幾個(gè)WebPart功能的使用權(quán)限問題,未登錄的訪客只能看到信息公告.在主頁上端有一個(gè)用戶狀態(tài)字段,顯示當(dāng)前用戶名和登錄狀態(tài),通過登錄機(jī)制,跳轉(zhuǎn)入系統(tǒng)主頁面,并還原WebPart的設(shè)置初始值,它是通過控制主頁面上的WebPartManager而實(shí)現(xiàn),其中關(guān)鍵代碼如下:

      Ctype(Me.page.FindControl("WebPartManager1"),WebPartManager).DisplayMode = WebPartManager.BrowseDisplayMode

      把用戶的WebPart個(gè)性化還原初始值,通過如下代碼實(shí)現(xiàn):

      CType(Me.Page.FindControl("WebPartManager1"),WebPartManager).Personalization.ResetPersonalizationState()

      由于此用戶數(shù)據(jù)來自圖書館讀者數(shù)據(jù)庫,只需在Login控制的Authenticate中添加如下程序:

      Protected Sub Login1_Authenticate(ByVal sender As Object,ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs)

      HandlesLogin1.Authenticated=Membership.ValidateUser(Login1.UserName,Login1.Password)

      上面程序中,Login控件本身不處理身份驗(yàn)證,此功能由“Membership類”來完成,Membership用“ValidateVser方法”判斷賬號(hào)密碼是否正確,確定是否為數(shù)據(jù)庫中的用戶,最終完成登錄.

      2.2 交流信息的實(shí)現(xiàn)機(jī)制

      在不換頁面的前提下實(shí)現(xiàn)這個(gè)功能,要建立一個(gè)發(fā)送信息的機(jī)制,一個(gè)隨時(shí)檢查是否有用戶信息的Listener(監(jiān)聽)控件,以及一個(gè)存儲(chǔ)信息的數(shù)據(jù)結(jié)構(gòu).

      2.2.1 發(fā)送信息機(jī)制 這是一個(gè)WebPart類型,設(shè)置了查詢對(duì)方是否收到信息的功能,頁面上設(shè)置了兩個(gè)按鈕分別對(duì)應(yīng)“發(fā)送信息”和“顯示發(fā)送信息記錄”兩個(gè)View控件,具體樣式如圖3所示.

      圖3 發(fā)送信息樣式圖

      在圖3頁面中的“內(nèi)容”中輸入所傳遞的信息,然后點(diǎn)擊“發(fā)送”按鈕,便將信息發(fā)送了出去,所謂的“發(fā)送”實(shí)際是把此信息存入數(shù)據(jù)庫,發(fā)送信息功能的實(shí)現(xiàn)代碼如下:

      For i As Integer = 0 To Me.CheckBoxList1.Items.Count-1

      If Me.CheckBoxList1.Items(i).Selected = True Then

      緊接著的下面代碼為關(guān)鍵部分,調(diào)用EIP.Message.SendRtMsg發(fā)送信息:

      If EIP.Message.SendRtMsg(My.User.Name,Me.CheckBoxList1.Items(i).Text,Me.TextBox1.Text) <= 0 Then

      上面的EIP.Message.SendRtMsg存儲(chǔ)信息到數(shù)據(jù)庫中,此功能實(shí)現(xiàn)的代碼如下:

      db.InsertCommand = "insert into 即時(shí)信息 (發(fā)信息者,收信息者,發(fā)送時(shí)間,信息內(nèi)容) values (?,?,?,?)"

      db.InsertParameters.Clear()

      db.InsertParameters.Add("發(fā)信息者",發(fā)信息者)

      db.InsertParameters.Add("收信息者",收信息者)

      db.InsertParameters.Add("發(fā)送時(shí)間")My.StudyHost20.Clock.GetNowByYYYYMMDDHHMMSS)

      db.InsertParameters.Add("信息內(nèi)容",信息內(nèi)容)

      Return db.Insert()

      利用DataSource控件把數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫,主頁上的CallBack獲取到用戶端傳入的數(shù)據(jù),通過EIP.Message.GetRtMsgForMe控件獲取數(shù)據(jù)庫中該用戶未讀的信息組成字符串,由RetData返回給用戶端的程序函數(shù),并顯示在用戶的頁面上,此結(jié)果如圖4所示.

      2.2.2 即時(shí)互動(dòng)咨詢交流的實(shí)現(xiàn)機(jī)制 在線咨詢可以實(shí)現(xiàn)多人同時(shí)交流,包括邀約和互動(dòng)交流兩個(gè)功能.

      (1)邀約

      即時(shí)邀約功能,方便用戶申請(qǐng)咨詢邀約和信息服務(wù)者約請(qǐng)用戶參加交流.網(wǎng)頁上即時(shí)出現(xiàn)約請(qǐng)信息,用戶或服務(wù)者進(jìn)行相應(yīng)回應(yīng),同時(shí)也能看到咨詢窗口的最新實(shí)時(shí)交流信息,免去了換頁面的麻煩,該模塊見圖1中的交流信息,從邀請(qǐng)人員窗口中選中邀約對(duì)象,提交邀約信息,這部分操作的主要代碼如下:

      Shared Sub invite(ByVal Who As String,ByVal UserID As String,Optional ByVal time As String = "")

      EIP.Message.SendRtMsg(UserID,Who,UserID & "邀請(qǐng)您參加在線咨詢,歡迎加入!")

      End Sub

      這時(shí),對(duì)方一端則出現(xiàn)如圖5的顯示.

      圖4 頁面顯示圖

      圖5 邀約顯示圖

      圖6 在線咨詢顯示圖

      2.2.3 互動(dòng)交流的在線咨詢服務(wù) 在線咨詢服務(wù)主要包括在線咨詢的WebPart和在線咨詢的數(shù)據(jù)表,每位成員的每次發(fā)言,會(huì)自動(dòng)存儲(chǔ)到數(shù)據(jù)庫中,頁面上的CallBack即時(shí)地從數(shù)據(jù)庫中讀取最近幾條發(fā)言記錄顯示在頁面上,成為在線咨詢中的內(nèi)容,如圖6所示.

      用戶在內(nèi)容中輸入信息,點(diǎn)擊“發(fā)言”按鈕,則生成一個(gè)CallBack操作,將內(nèi)容和發(fā)言者等數(shù)據(jù)一起傳給服務(wù)器端,并存儲(chǔ)到數(shù)據(jù)庫中,用戶端功能實(shí)現(xiàn)的部分代碼為:

      Dim SentMsgScript As String =Me.ClientScript.GetCallbackEventReference(Me,"document.all." & Me.txb_msg.ClientID & ".value+'," & My.User.Name & "'","receivedData","document.all." & Me.Panel1.ClientID)

      Me.btn_Send.Attributes("onclick") = SentMsgScript

      服務(wù)器端接收數(shù)據(jù)并存儲(chǔ)到數(shù)據(jù)庫中的代碼主要如下:

      If eventArgument <> ""

      Then Dim buf()As String = Split(eventArgument,",")

      EIP.OnlineAdvice.InsertMessage(1,buf(0),buf(1))

      End If

      對(duì)數(shù)據(jù)庫的訪問操作,是通過DataSource類實(shí)現(xiàn)的.程序用SQL語法,“InsertMessage()”函數(shù)把發(fā)言信息存儲(chǔ)到在線咨詢數(shù)據(jù)表,“GetMessage()”函數(shù)把在線咨詢數(shù)據(jù)表中的信息,組成HTML代碼發(fā)送給用戶端.其實(shí)現(xiàn)代碼主要部分如下:

      Shared Sub InsertMessage(ByVal OnlineAdviceNO As String,ByVal Message As String,ByVal UserID As String)

      ...

      Shared Function GetMessage(ByVal OnlineAdviceNO As String,ByVal LastN As Integer)

      Dim db As New SysDB

      If LastN <= 0 Then LastN = 15

      如此不需換頁操作,便實(shí)現(xiàn)了在一個(gè)頁面上進(jìn)行發(fā)言的同時(shí)也能看到其他用戶與館員在線咨詢的交流信息.

      3 結(jié)語

      網(wǎng)絡(luò)改變生活,也改變交流的方式,更加方便、快捷的交流渠道促進(jìn)了信息知識(shí)快速流動(dòng)的發(fā)展,提高了知識(shí)的價(jià)值轉(zhuǎn)化[5].信息咨詢服務(wù)的專業(yè)化和便捷化是時(shí)代的需求,“工欲善其事必先利其器”,良好的交流工具既有利于通信溝通,也提高了工作效率[6].隨著讀者對(duì)于圖書館信息咨詢服務(wù)要求的日益增加,為讀者提供個(gè)性化的信息咨詢服務(wù)成為圖書館提高自身核心競爭力的途徑之一[7].基于ASP.NET網(wǎng)絡(luò)技術(shù)設(shè)計(jì)的信息咨詢服務(wù)系統(tǒng),以頁面簡潔、交流方便、數(shù)據(jù)傳輸快捷的特點(diǎn),將會(huì)提升圖書館信息咨詢服務(wù)的質(zhì)量和效率,也充分體現(xiàn)了圖書館服務(wù)的專業(yè)化特色.

      猜你喜歡
      咨詢服務(wù)控件頁面
      刷新生活的頁面
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      為“一帶一路”建設(shè)做好咨詢服務(wù)
      咨詢服務(wù)
      咨詢服務(wù)
      咨詢服務(wù)
      就這樣玩會(huì)VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      同一Word文檔 縱橫頁面并存
      淺析ASP.NET頁面導(dǎo)航技術(shù)
      其實(shí)IE也懂Chrome的心
      砀山县| 甘肃省| 剑阁县| 莆田市| 广安市| 常山县| 勐海县| 高雄县| 富锦市| 广饶县| 安多县| 容城县| 丰镇市| 溧阳市| 休宁县| 鲁山县| 宾川县| 宁强县| 吴桥县| 桂平市| 巴塘县| 东乌珠穆沁旗| 泰和县| 萝北县| 监利县| 和政县| 宁阳县| 米林县| 绥阳县| 曲阳县| 新沂市| 罗山县| 深州市| 龙游县| 绥棱县| 宜黄县| 合作市| 龙井市| 安义县| 芜湖市| 米泉市|