欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Fly Higher

生命就像一條大河,時(shí)而寧靜時(shí)而瘋狂;
現實(shí)就像一把枷鎖,把我捆住無(wú)法掙脫;
這謎樣的生活鋒利如刀,一次次將我重傷;
我知道我要的那種幸福,就在那片更高的天空;

我要飛得更高,飛得更高 ;
狂風(fēng)一樣舞蹈,掙脫懷抱 ;
我要飛得更高,飛得更高 ;
翅膀卷起風(fēng)暴,心生呼嘯 ;
飛得更高

文章

智能客戶(hù)端(SmartClient)
 
    本文主要討論基于企業(yè)環(huán)境的客戶(hù)端應用程序模型,由于本人曾經(jīng)從事過(guò)傳統的客戶(hù)端/服務(wù)器兩層結構應用程序和基于.net平臺的多層結構應用程序的開(kāi)發(fā),因此本文將著(zhù)重描述.net平臺上的智能客戶(hù)端應用程序模型,并根據一般的企業(yè)應用系統的需求來(lái)一步一步構造出一個(gè)較為完整的客戶(hù)端軟件框架。

簡(jiǎn)介
    智能客戶(hù)端的概念作為Microsoft.net平臺的一個(gè)特性而被提出,其實(shí)它的很多功能在傳統的應用程序中早已存在,只是.net平臺從系統和語(yǔ)言級別對它提供了支持,使開(kāi)發(fā)智能客戶(hù)端應用程序更為便捷。本文將從企業(yè)應用系統的角度來(lái)討論智能客戶(hù)端應具有的功能和特性以及如何在.net平臺上實(shí)現。

概述
    1、當前的客戶(hù)端應用程序模型比較
    當前的客戶(hù)端應用程序模型大致分為兩種:C/S(客戶(hù)端/服務(wù)器模型)和B/S(瀏覽器/服務(wù)器模型)。以企業(yè)環(huán)境為對象的軟件開(kāi)發(fā)人員,對于以瀏覽器為基礎的精簡(jiǎn)型客戶(hù)端 (Thin Client) 應用程序模型,以及對應的豐富型客戶(hù)端 (Rich Client) 之間,究竟該如何取舍,面臨了困難的世代替換。
    以瀏覽器為基礎的應用程序的優(yōu)缺點(diǎn):

  • 易于安裝:可以用于許多桌上型計算機,并且和客戶(hù)機算計的操作平臺無(wú)關(guān)。大多數計算機已經(jīng)默認安裝有瀏覽器軟件(有些應用系統需要基于IE瀏覽器,或者需要安裝java虛擬機,在此暫且忽略不及)。
  • 易于部署與維護:只需要在服務(wù)器端進(jìn)行部署和維護工作。
  • 必須在線(xiàn)工作:工作效率和網(wǎng)絡(luò )是否延遲有關(guān)。
  • 不能充分利用客戶(hù)端計算機的資源:只能通過(guò)有限的HTML語(yǔ)言來(lái)呈現用戶(hù)界面,沒(méi)有利用客戶(hù)端計算機的計算處理能力。只能利用瀏覽器的打印功能來(lái)打印資料,不適用于企業(yè)的報表打印。
  • 網(wǎng)絡(luò )傳輸量大:由于客戶(hù)端不能保存狀態(tài)數據,因此必須在客戶(hù)端和服務(wù)器之間傳輸用戶(hù)界面內容以及所需的數據。
  • 安全性較低。對于服務(wù)器來(lái)說(shuō)可以通過(guò)防火墻軟件來(lái)過(guò)濾數據,因為所有傳輸內容都是基于HTTP端口。但很難對數據進(jìn)行加密和簽名以保證在傳輸過(guò)程中的完整性。(HTTPS似乎并不能解決問(wèn)題)
  • 適合電子商務(wù)或不要求嚴格控制客戶(hù)端的應用程序。  

    豐富型客戶(hù)端應用程序的優(yōu)缺點(diǎn):

  • 可以離線(xiàn)工作:前提是本地必須有緩存數據的能力,這涉及到與服務(wù)器數據同步的問(wèn)題。
  • 充分利用客戶(hù)端計算機的資源:可以為用戶(hù)提供豐富的界面元素,可以存取本機磁盤(pán)與本機應用程序接口 (API),執行速度較快。
  • 網(wǎng)絡(luò )傳輸量較?。褐恍柙诳蛻?hù)端和服務(wù)器之間傳輸數據。
  • 安全性較高??梢苑奖愕脑诳蛻?hù)端和服務(wù)器執行加密和解密操作,同時(shí)也可以通過(guò)Web Service來(lái)消除傳統的應用程序諸如防火墻和HTTP的障礙。
  • 安裝、部署和維護工作較為繁瑣:對客戶(hù)端計算機在操作平臺和附加軟件上有一定的限制和要求。
  • 適合企業(yè)內部應用程序。  


    目前,還有一種不是基于瀏覽器的瘦客戶(hù)端應用程序。通過(guò)諸如Microsoft Terminal Server、Citrix System的Independent Computing Architecture和MetaFrame產(chǎn)品這樣的技術(shù)和工具把它們提供給用戶(hù)。這些類(lèi)型的解決方案可以讓用戶(hù)運用胖客戶(hù)端的經(jīng)驗,并通過(guò)集中的軟件安裝和維護來(lái)進(jìn)行管理,這對公司來(lái)說(shuō)是很劃算的。這種模式的問(wèn)題是,當應用程序沒(méi)有連接到應用服務(wù)器時(shí),用戶(hù)就不能用了??蛻?hù)端不進(jìn)行真正的處理,處理完全依賴(lài)應用程序服務(wù)器,這種情況會(huì )導致服務(wù)器性能問(wèn)題,并消耗桌面計算機的CPU周期。
    總之,相對于豐富型客戶(hù)端,以瀏覽器為基礎的模型對于信息科技 (IT) 系統管理員而言是非常棒的模型,但對于開(kāi)發(fā)人員與使用者而言卻有很多不足的地方。
Microsoft .NET Framework 將滿(mǎn)足這三方的需求。它的智能型客戶(hù)端應用程序模型結合了豐富型客戶(hù)端模型的強大功能與彈性,還有以瀏覽器為基礎之模型的容易部署與穩定性。
    2、客戶(hù)端應用程序還應具備的其他功能
    對于企業(yè)應用系統來(lái)說(shuō),客戶(hù)端應用程序作為整個(gè)系統與用戶(hù)的交互界面,還需要考慮以下功能:

  • 安全性:這里的安全性主要是指應用層次的安全性,主要通過(guò)用戶(hù)權限、角色分配來(lái)實(shí)現。對于客戶(hù)端應用程序來(lái)說(shuō),通常需要提供一個(gè)登錄窗體或登錄頁(yè)面來(lái)完成用戶(hù)身份的認證。對安全性要求較高的應用系統可能還需要通過(guò)公共密鑰基礎設施(PKI)為應用提供可靠的安全服務(wù),客戶(hù)端則附加了加密簽名模塊。
  • 可擴展性:客戶(hù)端應用程序應該具有包含各種不同類(lèi)型的應用模塊的能力,同時(shí)又能在使用過(guò)程中的不斷的增加應用來(lái)完善整個(gè)系統。因此可以將客戶(hù)端應用程序設計為一個(gè)容器,而各個(gè)應用模塊作為組件由容器進(jìn)行動(dòng)態(tài)加載。
  • 可配置性:由于用戶(hù)權限和用戶(hù)喜好的不同,客戶(hù)端加載的應用組件以及呈現的表現形式都因人而異。需要由應用系統將用戶(hù)權限的范圍以及用戶(hù)的個(gè)性化配置信息傳遞給客戶(hù)端,由客戶(hù)端應用程序來(lái)解釋并呈現相應的用戶(hù)界面。  

定義
    綜上所述,我們對智能客戶(hù)端應用模型下一個(gè)概括性的定義:一個(gè)可擴展的能集成不同應用的桌面應用程序,并具有以下特征:

  • 無(wú)接觸部署:安裝時(shí)只要將一個(gè)主程序文件下載到本地,直接運行即可,無(wú)須改變注冊表或共享的系統組件,其他應用組件將在第一次運行時(shí)自動(dòng)下載。
  • 自動(dòng)更新:只需將新版本的程序發(fā)布在服務(wù)器上,由客戶(hù)端自動(dòng)發(fā)現最新版本的程序和應用組件,并自動(dòng)下載和更新。
  • 離線(xiàn)運用:允許脫離服務(wù)器時(shí),利用本地的客戶(hù)端程序和應用組件進(jìn)行工作。
  • 動(dòng)態(tài)加載應用組件:應用軟件開(kāi)發(fā)商可根據企業(yè)應用系統的公共接口進(jìn)行開(kāi)發(fā),然后將應用組件發(fā)布在企業(yè)的服務(wù)器上,客戶(hù)端應用程序將自動(dòng)發(fā)現并加載該應用組件。
  • 個(gè)性化用戶(hù)界面:用戶(hù)可根據喜好自行設置客戶(hù)端應用程序,配置信息將被保存到服務(wù)器上。

    以下我們將以.net平臺WinForms應用程序為例,對上述特征進(jìn)行詳細描述。


.net平臺WinForms應用程序舉例
    一、系統需求
        1、客戶(hù)端軟件要求

  • 任何支持 .NET Framework 的操作系統
  • 已安裝 SP1 的 .NET Framework
  • Internet Explorer 5.0.1 或更高版本  

        2、服務(wù)器軟件要求
            自動(dòng)發(fā)布、更新服務(wù)器:Microsoft .NET Framework、MDAC2.7、IIS


    二、運行方式
    客戶(hù)端應用程序有兩種運行方式,不同的運行方式將直接影響以后的程序集發(fā)布和更新,以下將詳細解釋?zhuān)?br>        1、網(wǎng)絡(luò )運行
    .NET Framework 安裝提供了一個(gè)掛接 Internet Explorer 5.01 和更高版本以偵聽(tīng)所請求的 .NET 程序集的機制。在請求期間,可執行程序被下載到磁盤(pán)上稱(chēng)為程序集下載緩存的位置(Windows2000下為:C:\Documents and Settings\Administrator \Local Settings\Application Data\assembly下的某個(gè)子目錄中),同時(shí)該程序集本身以及它引用的其他相關(guān)程序集也被下載到本地IE緩存中(Windows2000下為:C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files)。然后,名為 IEExec 的進(jìn)程在具有有限安全設置的環(huán)境中啟動(dòng)該應用程序。例如:您可以在IE的地址欄中輸入一個(gè)已發(fā)布在web服務(wù)器上的.net可執行程序(http://SmartClient/MyApplication.Exe),IE并不會(huì )像其他文件一樣提示您另存為,而是直接執行該程序。

    通過(guò)這種方式運行的應用程序擁有非常有限的安全設置(Internet權限集),該權限集中的權限包括:安全性、文件對話(huà)框、正在打印、獨立存儲文件、用戶(hù)界面。獨立存儲文件允許您的應用程序保存一些數據(Windows2000下為:C:\Documents and Settings\Administrator.TOMATO\Local Settings\Application Data\IsolatedStorage下的某個(gè)子目錄中,默認存儲空間大小為10MB),您可以通過(guò)System.IO.IsolatedStorage命名空間中的類(lèi)來(lái)保存數據而不會(huì )拋出安全異常。

舉例:
//按用戶(hù)、域、程序集獲取獨立存儲區
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, null, null);
//創(chuàng )建目錄
isoStore.CreateDirectory("TestDir");
//創(chuàng )建文件
IsolatedStorageFileStream isoStream1 = new IsolatedStorageFileStream("TestDir//test.txt", FileMode.Create, isoStore);
//寫(xiě)入文件
StreamWriter writer = null;
writer = new StreamWriter(isoStream1);
writer.WriteLine("Hello Isolated Storage");
writer.Close();
isoStream1.Close();

    為了讓你的智能應用程序運轉,你需要改變一些客戶(hù)端的安全設置,實(shí)質(zhì)上就是通知客戶(hù)端運行時(shí)間相信你的應用程序。一種方法就是將帶有你的程序集的站點(diǎn)添加到IE中可信任站點(diǎn)清單中,然后用安裝在你的管理工具目錄下的Microsoft .NET Framework Configuration工具來(lái)修改.NET Framework安全設置。打開(kāi)Framework Configuration工具,選擇運行庫安全策略,然后選擇調整安全區域。對于受信任站點(diǎn)中指定的所有站點(diǎn),將信任級別調整到完全信任。作為選擇,你也可以用Framework Configuaration工具來(lái)修改安全策略,使它信任你的應用程序的個(gè)別程序集。右擊運行庫安全策略,選擇提高程序集的信任級別。

    另一個(gè)可選擇的方法就是用代碼組,用Framework Configuration工具來(lái)幫助你提高應用系統的程序集的安全設置。你需要讓所有運用你的應用程序的桌面用戶(hù)做這種改變。為了幫助完成該任務(wù),Framework Configuration工具可以創(chuàng )建一個(gè)包含安全策略的Microsoft Installer (MSI)部署包。MSI安裝了應用程序加載器來(lái)分布你的應用程序需要的安全策略和加載器裝配。右擊運行庫安全策略,選擇創(chuàng )建部署包。

    在網(wǎng)絡(luò )運行中,自動(dòng)更新是依靠IE的緩存機制來(lái)完成的。即當您需要下載并運行一個(gè)應用程序時(shí),IE將向Web服務(wù)器發(fā)送一個(gè)HTTP請求,該請求將獲取服務(wù)器上該程序的最新更新日期,如果該日期大于本地緩存的程序的日期或者本地緩存中不存在該程序,則從服務(wù)器上下載,否則直接使用本地緩存的程序。因此對于.net本身所具有的版本機制而言,不能作為版本更新的依據,只有在某個(gè)程序集文件引用另外一個(gè)程序集時(shí),才會(huì )由.net運行時(shí)依據自身的版本機制判斷版本號。

注意事項:

  • 這種運行方式通常需要在運行前先設置用戶(hù)的安全策略。
  • 加載應用組件時(shí),需要一個(gè)完整的url地址。
  • 如果應用程序集中需要調用Web Service,該Web Service所在的服務(wù)器地址只能是最初下載程序集的服務(wù)器,可以構造一個(gè)重定向來(lái)解決該問(wèn)題。
  • 某些文件可能不能通過(guò)自動(dòng)更新機制來(lái)完成版本更新,如:.Config應用程序的配置文件。
  • 如果某些應用程序集文件的版本之間存在著(zhù)某些關(guān)聯(lián)性,則在某些情況下(如:網(wǎng)絡(luò )突然中斷)可能會(huì )出現不能正確加載并導致客戶(hù)端應用程序出錯的問(wèn)題。
  • 如果用戶(hù)清空IE的緩存,則客戶(hù)端應用程序將不能離線(xiàn)工作。  

        2、本地運行
    顧名思義,這種運行方式客戶(hù)端應用程序和其他應用組件并不在IE緩存和.net下載緩存中運行,需要用戶(hù)首先下載客戶(hù)端程序集并保存到一個(gè)本地目錄下,然后運行。這樣客戶(hù)端應用程序以及其他應用組件就擁有了所有的本地安全權限。

    雖然不涉及安全性問(wèn)題,但應用組件以及程序的自動(dòng)更新如何實(shí)現?這就需要一個(gè)單獨的組件來(lái)完成這些任務(wù)。通過(guò)該鏈接地址可以下載一個(gè)非常完善且支持擴展的自動(dòng)更新組件(http://www.gotdotnet.com/team/windowsforms/DotNetUpdater.zip),該打包文件中提供了源碼、一些例子以及文檔。該更新組件使用HTTP-DAV技術(shù)來(lái)完成文件在服務(wù)器和客戶(hù)端之間的傳輸,因此對Web服務(wù)器有一定的限制,IIS5.0和新版本的Apache支持該功能。具體使用方式請參見(jiàn)內含文檔。

注意事項:

  • 由于需要自己來(lái)實(shí)現更新和下載功能,所以會(huì )增加一定的工作量。(就是使用第三方的更新組件,也需要對其進(jìn)行完善以滿(mǎn)足自己的要求)
  • 基本解決了網(wǎng)絡(luò )運行的缺點(diǎn),但需要每次更新時(shí)重新下載所有的文件(如果采用增量更新的話(huà),某些情況下會(huì )出現某個(gè)版本的文件被遺漏的問(wèn)題),會(huì )增加網(wǎng)絡(luò )流量。
  • 應該在后臺線(xiàn)程中執行更新和下載,不影響用戶(hù)的正常操作。  

    三、創(chuàng )建程序
    客戶(hù)端應用程序的執行步驟:

  1. 登錄系統。通過(guò)輸入用戶(hù)名和密碼或其他任何方式進(jìn)行系統登錄,通常需要一個(gè)登錄窗體。(該步操作需要客戶(hù)端應用程序在線(xiàn)執行,因此可以考慮在窗體上提供一個(gè)離線(xiàn)工作的按鈕,然后直接使用上次在線(xiàn)登錄時(shí)服務(wù)器傳遞的配置文件副本。這樣做會(huì )引發(fā)一些安全性問(wèn)題和客戶(hù)端數據和服務(wù)器數據同步的問(wèn)題。)
  2. 由應用服務(wù)器驗證通過(guò)以后,根據系統設定的用戶(hù)權限獲取用戶(hù)可以加載的應用組件及其相應的配置信息,同時(shí)從數據庫中獲取用戶(hù)的個(gè)性化配置信息,將這些配置信息組合成一個(gè)XML配置文件流傳遞給客戶(hù)端應用程序。該步操作通常由一個(gè)Web服務(wù)調用來(lái)執行。
  3. 客戶(hù)端程序解析該配置文件流,根據個(gè)性化配置信息設置主窗體樣式,根據應用組件配置信息加載相應的程序集文件。保存該配置文件以備離線(xiàn)工作時(shí)使用。
  4. (本地運行方式)啟動(dòng)后臺更新線(xiàn)程,該線(xiàn)程定時(shí)搜索更新服務(wù)器上是否有最新版本的程序,如果有則自動(dòng)下載,并提示用戶(hù)更新程序。
  5. 用戶(hù)通過(guò)點(diǎn)擊相應的應用組件的按鈕或菜單,在客戶(hù)端主窗體中將顯示應用組件自身攜帶的用戶(hù)界面。  

    客戶(hù)端應用程序基本包含了登錄窗體、主窗體和應用組件加載器。加載器內有一個(gè)應用組件集合類(lèi),同時(shí)還提供一些方法用于主程序和應用組件之間以及不同應用組件之間的通訊,某些應用組件是作為公共組件為其他應用提供數據,因此應該通過(guò)統一的方法來(lái)獲取數據。

注意事項和建議:
    1、對于網(wǎng)絡(luò )運行方式,程序集在動(dòng)態(tài)加載的過(guò)程從服務(wù)器被下載到本地緩存中,而本地運行方式的下載過(guò)程由更新組件執行,加載過(guò)程則客戶(hù)端主窗體執行。
在.net中動(dòng)態(tài)加載程序集的方法:
using System.Reflection;
//網(wǎng)絡(luò )運行方式,加載的程序集路徑為服務(wù)器上的url地址
assemblyFileName = "http://SmartClient/AppComponent1.dll";
//本地運行方式,加載的程序集路徑為本地的目錄路徑
assemblyFileName = @"c:\SmartClient\AppComponent1.dll";
Assembly asm = Assembly.LoadFrom(assemblyFileName);

    2、客戶(hù)端應用程序的主窗體作為應用組件的容器,可以通過(guò)兩種方法來(lái)顯示應用組件的用戶(hù)界面:
    第一種方式是將客戶(hù)端應用程序設計為多文檔界面(MDI)應用程序,每個(gè)應用組件都包含有各自的啟動(dòng)主窗體,客戶(hù)端應用程序執行每個(gè)應用組件時(shí),將構造并顯示該組件的啟動(dòng)窗體類(lèi)型。MDI 應用程序中常有包含子菜單的“窗口”菜單項,用于在主窗口或應用之間進(jìn)行切換。

    另一種方式是在客戶(hù)端應用程序的主窗體界面中預留一塊應用界面區域,而每個(gè)應用組件作為一個(gè)用戶(hù)控件在執行時(shí)被添加到應用界面區域的控件數組中。應用界面區域通常是一個(gè)面板(Pane)控件,通過(guò)更改用戶(hù)控件的Z順序在各個(gè)應用之間進(jìn)行切換(Control. BringToFront())。

    3、在客戶(hù)端應用程序根據配置信息加載相應的應用組件時(shí),同時(shí)需要在客戶(hù)端主窗體的工具欄或菜單上創(chuàng )建對應的按鈕和菜單項,并添加事件以便于用戶(hù)操作??蛻?hù)端應用程序和應用組件之間應盡量保持獨立性,減少關(guān)聯(lián),以體現客戶(hù)端應用程序結構清晰和簡(jiǎn)單??梢酝ㄟ^(guò).net中的回調(事件委托)等方法實(shí)現這一點(diǎn)。

    4、.net由于緩存的原因,在加載程序集時(shí)會(huì )出現以下問(wèn)題:
//第一次加載
Assembly asm = Assembly.LoadFrom (@"c:\SmartClient\AppComponent1.dll");
Activator.CreateInstanceFrom(asm.GetType("AppComponent1.MainForm"));

//第二次加載一個(gè)不同目錄下的文件名稱(chēng)相同但內容不同的程序集
Assembly asm = Assembly.LoadFrom (@"c:\test\AppComponent1.dll");
Activator.CreateInstanceFrom(asm.GetType("AppComponent1.MainForm"));

第二次加載后,沒(méi)有正確的構造出不同目錄下的程序集中的窗體類(lèi)型,而是使用了緩存中的第一次加載時(shí)的構造類(lèi)型。
為了解決上述問(wèn)題,必須在不同的應用程序域(Domain)中構造這兩個(gè)類(lèi)型實(shí)例。
//第二次加載一個(gè)不同目錄下的文件名稱(chēng)相同但內容不同的程序集
AppDomain newDomain = AppDomain.CreateDomain("newDomain");
newDomain.CreateInstanceFromAndUnwrap(@"c:\test\AppComponent1.dll", "AppComponent1.MainForm");

使用此方法時(shí)需要注意,如果您構造的類(lèi)型實(shí)例包含一個(gè)帶參數的構造函數,則這些參數對象必須是可跨應用程序域訪(fǎng)問(wèn)的對象,即是可序列化的對象??梢酝ㄟ^(guò)繼承MarshalByRefObject對象或使用[Serializable]特性標記類(lèi),同時(shí)設置遠程對象的生存期策略。
示例:
public class ParameterClass : MarshalByRefObject
{
    public override Object InitializeLifetimeService()
    {
        //定義遠程處理生存期服務(wù)所使用的生存期租約對象
        ILease lease = (ILease)base.InitializeLifetimeService();
        if (lease.CurrentState == LeaseState.Initial)
        {
            //設置租約的初始時(shí)間。該租約將永遠不會(huì )到期,并且與之關(guān)聯(lián)的對象將具有無(wú)限長(cháng)的生存期。
            lease.InitialLeaseTime =TimeSpan.Zero;
        }
    }
}

    四、發(fā)布程序

    1、在發(fā)布和更新服務(wù)器上設置一個(gè)虛擬目錄(如:SmartClient)將應用組件的所有文件放置在相應的目錄下。
    虛擬目錄的設置屬性中必須包括:讀取和目錄瀏覽權限,執行許可為純腳本。
    對于本地運行方式,需要根據客戶(hù)端應用程序的版本號設置多個(gè)目錄,每個(gè)目錄存放不同版本的所有文件。(也可以在新版本目錄下只存放更新了的文件,但需要修改更新組件。當用戶(hù)更新版本時(shí),必須下載大于當前版本的所有新版本目錄下的文件,以防止某些情況下會(huì )出現某個(gè)版本的文件被遺漏的問(wèn)題)。
    在本地運行方式中,還需要在根目錄下維護一個(gè)更新版本清單文件,因為它允許用戶(hù)以老版本客戶(hù)端應用程序登錄。

    2、發(fā)布一個(gè)Web Service。該Web服務(wù)主要完成以下任務(wù):

  • 執行客戶(hù)端用戶(hù)的身份驗證
  • 從整個(gè)應用系統的安全模塊中獲取該用戶(hù)允許執行的應用組件的清單,包含應用組件的位置、文件名稱(chēng)和應用組件本身所需的配置信息。(在本地運行方式下,該清單還和版本有關(guān))
  • 從數據庫中獲取該用戶(hù)的個(gè)性化配置信息,和上一步獲取的信息合并為一個(gè)XML文件流。
  • 將該配置文件流作為返回參數返回給客戶(hù)端應用程序。  

    3、將客戶(hù)端應用程序放置在虛擬根目錄下作為應用組件程序集的加載器,同時(shí)在企業(yè)內部網(wǎng)站上增加一個(gè)指向客戶(hù)端應用程序的鏈接。對于網(wǎng)絡(luò )運行方式,還將提供一個(gè)安全策略部署包(MSI)文件的鏈接。
    用戶(hù)第一次運行時(shí)的執行步驟
    網(wǎng)絡(luò )運行方式:

  • 下載并安裝安全策略部署包
  • 通過(guò)點(diǎn)擊客戶(hù)端應用程序的鏈接,下載并執行客戶(hù)端應用程序
  • 將該鏈接添加到收藏夾中或建立桌面快捷方式,以便于運行  

    本地運行方式:

  • 不直接點(diǎn)擊客戶(hù)端應用程序的鏈接,將此鏈接另存到用戶(hù)選擇的目錄下
  • 在資源管理器中執行客戶(hù)端應用程序
  • 在桌面上建立可執行文件的快捷方式,以便于運行  

    五、更新程序
    網(wǎng)絡(luò )運行方式的更新步驟較為簡(jiǎn)單,只須將更新了的文件直接覆蓋老文件即可。其缺點(diǎn)是某些程序集附帶的引用文件不能自動(dòng)下載新版本,只有清空客戶(hù)端的IE緩存后才能實(shí)現更新。

    本地運行方式的更新步驟如下:

  • 在服務(wù)器虛擬根目錄下新建一個(gè)以新版本號命名的目錄,增量更新只需將更新了的文件復制到該目錄下,否則需要將所有文件都復制到目錄。
  • 修改保存所有版本清單的文件,并指明當前活動(dòng)的最新版本號,用于和客戶(hù)端進(jìn)行版本比較。  

    六、擴展應用組件
    為了實(shí)現企業(yè)應用系統的可擴展性,通過(guò)接口定義,可以使應用開(kāi)發(fā)商通過(guò)實(shí)現這些接口將自己的應用組件方便的添加到客戶(hù)端應用程序中。以下介紹一些接口中主要包含的方法和屬性。

  1. 應用組件名稱(chēng)屬性:用于標明該應用組件功能的注釋性文本。
  2. 應用組件在客戶(hù)端應用程序上的各個(gè)界面元素屬性:指客戶(hù)端應用程序上的工具欄、菜單欄、下拉菜單項和列表框等用于標志該應用組件的控件上,需要應用組件提供的文本、圖片、圖標、菜單、事件處理方法等。
  3. 初始化方法:在客戶(hù)端應用程序加載應用組件時(shí),首先執行的方法。在加載應用組件時(shí),對于由服務(wù)器傳來(lái)的配置文件中包含的各個(gè)應用組件自身的配置信息,客戶(hù)端應用程序并不解析,而是將該配置信息在初始化應用組件時(shí)作為參數傳遞給應用組件,增加了靈活性。
  4. 獲取應用組件加載器方法:獲取應用組件加載器后,可以通過(guò)其中包含的公共方法獲取一些應用所需的共享數據。
  5. 獲取應用組件啟動(dòng)控件的方法:?jiǎn)?dòng)控件可以是窗體或用戶(hù)控件。
  6. 關(guān)閉應用組件的方法(可選):當客戶(hù)端應用程序被關(guān)閉時(shí),執行該方法。應用組件本身根據自身情況決定是否可以立即關(guān)閉,同時(shí)立即釋放組件所占用的系統資源。

    對于MDI應用程序,可以在啟動(dòng)窗體的關(guān)閉事件中處理而不需要該方法。

    客戶(hù)端應用程序內的應用組件加載器可以通過(guò)枚舉組件程序集內的類(lèi)型來(lái)判斷該組件是否符合借口定義。同時(shí)可以將多個(gè)應用組件打包在一個(gè)應用程序集中。此過(guò)程非常耗時(shí)。
示例:
//根據程序集文件名稱(chēng),加載程序集
Assembly asm = Assembly.LoadFrom(assemblyFile);
Type[] types = asm.GetTypes();

//搜索程序集中的所有類(lèi)型
foreach (Type t in types)
{
    //指示類(lèi)型是否由引用封送,支持遠程處理
   
if (!t.IsMarshalByRef)
    continue;
    //判斷該程序集的類(lèi)型是否有符合應用組件接口的類(lèi)型
   
if (Array.IndexOf(t.GetInterfaces(), pluginType) > 0)
    {
        ...
    }
}

小結
    上述僅僅是對創(chuàng )建智能客戶(hù)端應用程序作了簡(jiǎn)單的描述和示范,并對其中可能遇到的問(wèn)題給與了必要的解釋?zhuān)M軐δ鷦?chuàng )建更為強大、靈活、便捷的應用程序提供幫助。

參考資源鏈接
1、Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients
http://msdn.microsoft.com/msdnmag/issues/02/07/NetSmartClients/default.aspx

2、Smart Client Application Model and the .NET Framework
http://msdn.microsoft.com/netframework/techinfo/articles/smartclient/default.asp

3、State Sanity Using Smart Clients
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/Winforms05202002.asp

4、Increasing Permissions for Web-Deployed Windows Forms Applications
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms11122002.asp

5、.NET Application Updater Component
http://www.gotdotnet.com/team/windowsforms

 


- 作者: longhope 2005年09月26日, 星期一 18:33  回復(0) |  引用(0) 加入博采

powerbuilder10正式版試用手記

 
這些天都在看VB.NET,很長(cháng)時(shí)間沒(méi)有關(guān)心過(guò)POWERBUILDER了.今天沒(méi)有事,下載一個(gè)看看.

對于我們大多數編程者而言,一個(gè)開(kāi)發(fā)工具是好是壞不是聽(tīng)宣傳是沒(méi)有什么意思的,我們所關(guān)心的,就是好不好用,而好不好用,得用了才知道.OK?下面開(kāi)始.

(1)界面變化:在XP系統下,所有的控件在設計時(shí)與運行時(shí)都變成XP風(fēng)格了,呵呵.記得網(wǎng)上有很多怎么樣在PB下做XP界面的文章,當時(shí)我就想:這些東西都是沒(méi)有用的東西,因為SYBASE遲早有一天會(huì )解決這個(gè)問(wèn)題,根本用不著(zhù)我們關(guān)心它.哈哈,夢(mèng)想成真.看到這個(gè)漂亮的界面,感覺(jué)是自已的程序真的要變成天鵝了,就沖這一點(diǎn),裝個(gè)PB10值.

(2)看看控件:暈.多了一個(gè)MONTHCALENDER控件.哈哈,這不就是那個(gè)圖形方式選擇日期的控件么?DELPHI中早就有了,當然,PB下也不是不能用,就是得用第三方控件來(lái)實(shí)現,現在不用了,PB本身就帶了一個(gè).一個(gè)字,爽!

再看看還有什么?啊!ANIMATION,兄弟,還用我說(shuō)是什么東西么?不用了吧.一看名就是放動(dòng)畫(huà)的東西,還是那句話(huà),這東西能實(shí)現,但是得用API,第三方控件也行.現在不用了,想搞點(diǎn)好看的小電影,用它就行了.

好了,再看看SYBASE是怎么說(shuō)的吧,呵呵,都是英文啊,時(shí)間有限,長(cháng)話(huà)短說(shuō)吧:

PowerDesigner plug-in :呵呵,PowerDesigner 應當是數據庫建模工具吧,我沒(méi)有用過(guò)那個(gè)東西,但我知道它是一個(gè)獨立的產(chǎn)品.估計SYBASE在.NET的打壓下受不了,只好拿出看家的本領(lǐng)了,呵呵,考慮打架,路人受益啊!(只是我下載的不是完全版,不知里面有沒(méi)有這個(gè)東西,現在用不上,也懶得找了.


XML Web DataWindow:我切!這個(gè)東西不是早就有了么?怎么又當成亮點(diǎn)了?對于我現在來(lái)說(shuō)用不上,呵呵

DataWindow .NET:還有什么好說(shuō)的么?聽(tīng)說(shuō)現在只能用于WINFORM,呵呵,沒(méi)有什么實(shí)際的意義,你想想,要是用這個(gè)東西做WINDOWS程序,就用PB本身好了,還用得上VB.NET什么的么?也許你會(huì )用到,但是軟件分發(fā)時(shí),麻不麻煩啊!


Unicode support:我再切,以前SYBASE搞支持雙字節,搞了不好用,又搞回去了,不知明天這個(gè)東西是不是也要搞回去,哈哈,看SYBASE的空頭支票太多了,都不敢信了.但是大家注意了,因為這個(gè)東西,你原有的程序可能不會(huì )得到正確運行.呵呵這可是我研究VB.NET得出來(lái)的結論啊.不信你試試,用PB9與PB10分別運行:sle_1.text = char(222)+char(222),看看是什么結果.哈哈.我記得我的程序中好象沒(méi)有這樣的代碼吧.要是有就:555555555,還得改程序啊.


New controls:這個(gè)就不說(shuō)了,前面都說(shuō)了,
EAServer components as Web services:沒(méi)有什么意思,呵呵,大家都.NET,SYBASE自已搞的東西沒(méi)有什么意思,直到現在我還沒(méi)有聽(tīng)說(shuō)哪個(gè)工程是用這玩意的呢.


http://club.yesky.com/bbs/jsp/view.jsp?articleID=1476600


- 作者: longhope 2005年09月12日, 星期一 18:37  回復(0) |  引用(0) 加入博采

[灌水]IT人離開(kāi)IT還能干什么 ?

導言——35歲對于IT人是個(gè)坎兒,過(guò)了這個(gè)年紀基本技術(shù)生涯即告終結,這是IT界多數人認可的。所以,也讓IT人著(zhù)實(shí)為35歲后的自己生了不少憂(yōu)慮:IT人離開(kāi)IT后能干什么?


今天一位同事(已三十多了),被老板叫到他的辦公室去。老總對他說(shuō),由于效益不好,公司不再和他續訂到期的合同!我看到他很落寞地離去。他前年才結婚,還供著(zhù)房子,老婆孩子要養,這一下子就失業(yè)了,而且又是快過(guò)年的時(shí)候!我跑去和他道別,他沒(méi)有說(shuō)什么,只讓我好好干,公司還是大有前途的。

他是一個(gè)好人,在技術(shù)上決不保密。記得三年前我剛進(jìn)公司的時(shí)候,他正是公司的主力,他對我這個(gè)應屆畢業(yè)生十分關(guān)照,只要我不懂的,他一定盡力相告。那時(shí)公司的老板也很器重他,可能是正當壯年的時(shí)候(還有很多剝削價(jià)值)。但自去年開(kāi)始,公司轉向了。NET平臺,我們都去研發(fā)新技術(shù)了,原有的PB老版本程序基本上都由一些老程序員來(lái)維護(可能老板想他們年齡不小了,學(xué)新技術(shù)有些障礙)。公司產(chǎn)品的升級工作進(jìn)展很快,PB版本的程序越來(lái)越少了,我們晚上經(jīng)常加班,而他由于年齡和家庭的緣故,并不經(jīng)常加班了。我漸漸地從老板對他的態(tài)度的變化——從最早的極為欣賞到一般到漸漸地嫌棄。今年公司的效益不太好,也許正是到了鳥(niǎo)盡弓藏、兔死狗烹的時(shí)候了?

上世紀末那會(huì )兒,曾有“做IT,35歲就可以退休”的說(shuō)法,歷經(jīng)滄海這么多年,35歲退休成了童話(huà),35歲的職業(yè)坎兒卻無(wú)法讓眾多IT人回避。有人說(shuō),可以轉為管理,然而管理的一條線(xiàn)就像窄窄的獨木橋,又有多少人可以通過(guò)呢(據統計平均大約一百個(gè)程序員也就只有一兩個(gè)做管理的機會(huì ))?轉向傳統行業(yè)?已經(jīng)30多了,能再重新來(lái)過(guò)嗎?絕大多數平凡IT人的出路又在哪兒呢?

35歲對于IT人是個(gè)坎兒,過(guò)了這個(gè)年紀基本技術(shù)生涯即告終結,這是IT界多數人認可的。所以,也讓IT人著(zhù)實(shí)為35歲后的自己生了不少憂(yōu)慮:IT人離開(kāi)IT后能干什么?

印象中的IT人都因為職業(yè)的緣故而木訥寡言。他們與機器溝通的能力顯然優(yōu)于與人溝通的能力。從機器到人,IT人必須跨過(guò)來(lái)。

IT業(yè)的技術(shù)語(yǔ)言過(guò)于狹窄。社會(huì )卻是復雜的。IT人的知識面不夠廣泛。社會(huì )上不需要人人都懂如何設計程序,但IT人卻必須要懂社會(huì )。

IT內的項目,有些人也有些經(jīng)驗,但這些經(jīng)驗性的東西多數是專(zhuān)業(yè)性的,個(gè)別種類(lèi)項目的經(jīng)驗能否轉化為普遍的社會(huì )經(jīng)驗,也確實(shí)需要時(shí)間。

這些劣勢,可以說(shuō),凡是地球上的IT人大概都知道。除了IT,要重新?lián)Q個(gè)活法一時(shí)還真的玩不轉。

但IT人畢竟是IT人。IT是高薪行業(yè),IT人從業(yè)幾年十幾年,一般都有了歡ǖ奈鎦駛?。震}荌T人比其他行業(yè)的人具有的優(yōu)勢。有了這樣的物質(zhì)基礎,我認為,后IT人的關(guān)鍵是要實(shí)現思維方式的轉變:從技術(shù)性思維到社會(huì )性思維,從而開(kāi)創(chuàng )人生事業(yè)的第二高峰。

技術(shù)性思維是面向機器的、僵硬的、封閉的、單向性的;社會(huì )性思維要求是面向常識和社會(huì )的、靈活的、開(kāi)放的、多向綜合的。后IT的人士最需要的是這種思維方式的轉變。思維一轉天地寬。后IT人會(huì )發(fā)現社會(huì )比IT里面其實(shí)更精彩。

后IT人可以走出來(lái)干銷(xiāo)售。這個(gè)工作富于挑戰,而且收入與工作業(yè)績(jì)直接掛鉤。IT人有很強的技術(shù)背景,更擅長(cháng)發(fā)掘產(chǎn)品性能的優(yōu)缺點(diǎn),對于IT產(chǎn)品的介紹具有權威性,容易被客戶(hù)相信。

后IT人可以走出程序迷宮來(lái)做培訓。IT人在運用某一技術(shù)語(yǔ)言上相當精深,另外他們在技術(shù)研發(fā)中的實(shí)戰經(jīng)驗,對于學(xué)員來(lái)說(shuō)也是相當寶貴的教學(xué)資源。

后IT人也可以由直面數字轉為面向眾人做咨詢(xún)。成功的咨詢(xún)師決不會(huì )因為年齡而貶值。有過(guò)實(shí)際項目經(jīng)驗的IT人,解決實(shí)際問(wèn)題的能力非常強,出身IT的人作為咨詢(xún)師是其他行業(yè)人士無(wú)法取代的。還可以做老板,做IT活動(dòng)策劃等等。

需要提醒的是,思維方式的轉變不是一朝一夕的事。一旦離開(kāi)IT,IT人所要做的是不斷調整自我,保持對社會(huì )的參與激情。閱讀一些人際溝通技巧之類(lèi)的書(shū)籍是必要的,還可以參加社會(huì )活動(dòng),給自己洗洗腦,從以數字中心、個(gè)人中心的思維方式轉換到以人為中心、社會(huì )為中心的模式中。要注意多與人溝通。同時(shí),個(gè)人應該盡早明確自己的發(fā)展方向,并根據新的事業(yè)來(lái)重新積累,不斷升級完善自身的“軟硬件”。






農民離開(kāi)了土地還能干什么?
工人離開(kāi)了機器還能干什么?
軍人離開(kāi)了戰場(chǎng)還能干什么?
教師離開(kāi)了講堂還能干什么?
劉祥離開(kāi)了跑道還能干什么?
醫生離開(kāi)了手術(shù)刀還能干什么?
屠夫離開(kāi)了牲畜還能干什么?
CEO離開(kāi)了老板桌還能干什么?
三陪離開(kāi)了酒吧還能干什么?
罪犯走出了監獄還能干什么?
人類(lèi)離開(kāi)了地球還能干什么?
所有的問(wèn)題——
可以組成十萬(wàn)個(gè)干什么?

問(wèn)題不在你能干什么?
只要你想好了要干什么,
只要你想好了何時(shí)干什么,
只要你想好了怎樣干什么,
只要你堅定信念一定要干什么,
只要你朝著(zhù)目標努力干什么,
總有一天,
你就知道你能夠干什么!
你也就不會(huì )哀嘆:我離開(kāi)了什么還能干什么?

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
智能客戶(hù)端一些摘抄
智能客戶(hù)端SmartClient
COM和COM
使用intraweb進(jìn)行web編程
多線(xiàn)程在Visual C#網(wǎng)絡(luò )編程中的應用
在Visual Studio 2010中快速跟蹤和調試.Net程序
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久