• 沒有找到結果。

MSDN 介紹

在文檔中 印表工作佇列管理系統 (頁 19-0)

第二章 作業環境介紹

2.2 MSDN 介紹

MSDN 是 Microsoft Developer Network 的簡稱。這項服務是 針對使用微軟程式語言及其開發工具開發產品者為對象, 提供的資 訊超過一百五十萬頁技術資料, 並包括世界各國正式發行的作業系 統和各種語言的開發工具。

MSDN 是專門給所有視窗環境開發人員的技術光碟寶庫,同時,也是 開發系統的最佳個人技術圖書館。MSDN 包含有 Microsoft 全部的技 術文件,提供近一百五十萬頁的技術文件, 內容有:

程式語言的技術文件。如(Visual Basic, Visual C++,...) 圖 2-6 名稱說明圖

範例程式(Sample Code) 技術規格(Specifications) Knowledge Base and Bug Lists 書籍及期刊

產品手冊(電子版)

2.3 使用者操作介面

圖 2-7 使用者操作介面

1. 重整:因為顯示列印項目的視窗並非採即時性更新方式,如果在視 窗內找不到需要的 jobs,可按『重整』來搜尋新進的 jobs。

2. 選擇電腦:選擇連結印表機的電腦 3. 刪除:可刪除勾選的 job

4. 列印項目:用來顯示目前印表機接收到的 job 資料 5. 停止:用來暫停勾選的 job

6. 計價:計算勾選 job 的價格

7. 印表機:選擇搜尋到可用的印表機 8. 開始:讓勾選的 job 開始列印 9. 印表機狀態:顯示印表機狀態 10. 離開:結束程式

11. 總數:顯示應收價格

12. 單價:可輸入列印 元/頁 價格

第三章 系統架構與實作

3.1 ADSI 介紹

在 windows 2000 Active Directory 網域裡,提供了一個強大的 功能。Active Directory 的服務界面(Active Directory Service Interfaces, ADSI)提供了一種簡單、強大的物件導向程式設計界面 讓系統管理員或程式設計師可以直接使用這個開放式的界面來動態 管理 Active Directory 網域的各項系統管理工作。

ADSI 可以讓程式設計師或系統管理員透過一些高階的程式設計工 具,例如 Microsoft Visual Basic、Java、 C、 Visual C++。或著 其他程式設計工具來建立具有 Active Directory 網或目錄管理功能 的應用程式。

做應用)。

一般作業系統所提供用來管理網路資源的目錄最常見到的就是 LDAP 相容的目錄服務,這一類目錄服務包含了 windows2000 Active Directory 目錄系統、Novell Directory Services 等。而由應用程 式所提供的目錄服務則是提供了某一個應用範圍的資源管理機制,這 一類的目服務包含了 Lotus Notes、Microsoft Exchange server 等。

雖然每一種目錄服務都可以提供許多的資源管理與資源搜尋的功能 與機制,但是這些目錄服務彼此並沒有提供一種資源共用共享的機 制,也無提供一種開放式的架構,能夠讓系統管理人員或程式設計人 員可以透過一些開收性的方式來管理每一種目錄服務內的資源。

例如某公司內部的網路上同時建立了 Novell Directory services 以及早期的 windows NT 目錄服務,每一個公司的員工必須在這兩個 目錄服務內都建立一個帳號,而且同一部電腦的資源也必須公佈在兩 個目錄服務裡。最糟的是,這兩種目錄系統彼此無法進行統一性(集 中式)的管理方式。這些都會造成該公司在使用不同目錄服務時,所 產生的負擔。上述情況如圖 3-1

而 ADSI 最大的貢獻就是解決上述的問題,提供了一個開放式的介 面,可完成異質性目錄服務的統一管理工作目標。例如在 Windows 作業平台的 ODBC 可存取不同的關連式資料庫,只要 ODBC 設定好 關連式資料庫的別名後,不論底層是採用何種關連式資料庫,在上層 的應用程式都能夠採用統一的方法(亦即 SQL 配合一種程式設計工具) 就能夠存取到資料庫內的資料。而 ADSI 所扮演的角色就與 ODBC 相 同,只不過底層不是關連式資料庫,而是目錄服務。其情況如圖 3-2

圖 3-1 獨立型目錄服務的使用環境

ADSI 的名稱空間:

通常在一個電腦資源集中管理的目錄中,都必須具有一種命名的方 式,讓大家識別該目錄中特定的數個資源物件。

在 Active Directory 目錄系統中,也有一定的名稱空間定義方式,

讓大家可以根據這些路徑找到想要的物件。在透過 ADSI 介面存取 Active Directory 目錄系統中的物件前,必須先透過此名稱空間的 式找尋想操作的資源物件。

ADSI 的名稱空間又可以稱為 ADSPath 的字串命名方式,ADSPath 字 串主要是由兩個部份所組成:分別是服務提供器(Service Provider) 的名稱,以及該物件的名稱與存在的路徑兩個部分組成的。

服務提供器的名稱是一種識別想要存取之底層不同目務服務的類 圖 3-2 ADSI 的存取方式

別(例如 LDAP://或者 WinNT://)。在 ADSI 介面裡,一共提供了四種 不同的目錄服務提供者的存取機制。因此,在 ADSPath 字串裡的服務 提供器名稱一共可以有下列四種選項:

服務提供器名稱 說明 WinNT:// 使用來連接 windows NT4.0 形態的 PDC(主要網

域控制站)以及 BCD(備份網域控制站的網域目 錄系統的服務提供器

LDAP:// 用來連接 LDAP 相容的目錄服務伺服器的目錄 服務提供者,如 Windows 2000 Active

Directory 網域控制站、Microsoft Exchange 5.X Sever 等。

NDS:// 用來連接 Novell Directory Service 伺務器 的目錄服務提供者

NWCOMPAT:// 用來連接 Novell NetWare 伺服器的目錄服務 提供者

表 3-1 ADSPath 服務提供器表

3.2 實作原理與方法

一台電腦上所連接的每一抬印表機都有一個專屬的 print queue 來儲存 print jobs,所謂的 print jobs 就是使用者所要列 印的文件,print queue 則是用來儲存這些 jobs 的序列。其實 windows 本身就為使用者提供了一套簡易的 printer manager,我們 所要做的則是一套更適合用來管理網路印表機的軟體。在這邊我們是 以逢甲大學的電腦實習室為藍本,來構思這一套軟體,預計達成目標 如 1-2 所描述。

經過討論,我們發先要達成目標的重點有兩個。第一點,所有 新進的 print job 必須先暫停列印;第二點,管理員要有更改 print jobs 狀態的權力。首先說明第一點,print job 的狀態有三種,分 別是 printing(列印中)、pause(暫停)、ok(就緒),一般情況下,

print jobs 進入 print queue 時的預設狀態是 printing,而 print queue 本身是屬於 FIFO(First In First Out 先進先出)系統,所 以印表機會按照收到 jobs 順序,將 jobs 一一印出,如圖 3-3

圖 3-3 架構說明圖(一)

但這並不是我們所期望的狀況,所以我們加入了一個時間觸動物件,

這個物件會以很短的時間間隔,不斷的去將 print queue 裡的 jobs 狀態修改為 pause,使 job 不會立即印出,如圖 3-4

圖 3-4 架構說明圖(二)

第二點,為了方便管理,管理員必需具備權力修改 jobs 狀態的 能力,另外還有考量到制度修改的便利性(如漲價,特殊列印方式加 價等)我們認為提供管理員:開始、暫停、刪除及修改價格 四項功 能。

開始:使選定的 jobs 恢復可列印狀態 暫停:使選定的 jobs 進入停止狀態 刪除:將選定的 jobs 刪除

修改價格:可更改每列印一頁的單價 以上就是我們程式的整個架構。

3.3 使用函式解說

IADsContainer:

IADsContainer 介面可以使 ADSI 容器物件去產生、刪除和管理其它 Active Directory 物件。容器物件被使用來組織 Active Directory 的階層式架構和直接來代表在檔案系統裡目錄樹的階層式本性。

方法 說明 get_Count 計算 Active Directory objects 數量.

get__NewEnum 取得 enumerator object 介面.

Get/put_Filter 取得/設定階級計算的 filter.

Get/put_Hints 取得/設定讀取屬性.

GetObject 取得 named object 介面.

Create 產生 specified object.

Delete 刪除 specified object.

CopyHere 複製 sever 內部 specified object.

MoveHere 移動 sever 內部 specified object.

IADsPrintJob:

IADsPrintJob 介面可以使 COM(component object model)物件在 Active Directory 管理一般關於印表工作訊息。用

IADsPrintJobOperations 透過網路來管理這個印表工作本身。印表 工作的聚集被任何一個工作佇列管理是可以用

IADsPrintQueueOperatio::PrintJobs 操作。

方法 說明 get_HostPrintQueue 抓取 print queue

get_User 取得 print job 的 user name.

get_UserPath ADsPath name to user object for user submitting the print job.

get_TimeSubmitted Time job submitted to the print queue.

get_TotalPages 取得 print job 的總頁數.

get_Size 取得 print job 的大小.

get/put_Description 取得/設定 print job 說明.

get/put_Priority 取得/設定 print job 的優先權.

get/put_StartTime 取得/設定 print job 的起始時間.

get/put_UntilTime 取得/設定 print job 的完成時間.

get/put_Notify 通知 job 已完成.

get/put_NotifyPath 通知使用者 job 已完成.

IADsPrintQueue:

IADsPrintQueue 介面可以使在 Active Directory 的 COM 物件去管理 網路上印表工作佇列上的資訊。為了列出或修改佇列裡的工作,要用 IADsPrintQueueOperations::PrintJobs擷取在ADSI PrintJob Objects 聚集的介面。

方法 說明 get/put_PrinterPath 取得/設定共享印表機的路徑.

get/put_Model 取得/設定 print queue 的裝置名稱

get/put_Datatype 取得/設定 print queue 處理的資料型 態.

get/put_PrintProcessor 取得/設定 Print processor 與 print queue 連結.

get/put_Description 取得/設定 print queue 說明.

get/put_Location Administrator's description of print queue location.

get/put_StartTime 取得/設定 print queue 起始時間.

get/put_UntilTime 取得/設定 print queue 結束時間.

get/put_DefaultJobPriority 取得/設定放棄 print job 優先權.

get/put_Priority 取得/設定連接裝置的優先權.

get/put_BannerPage 取得/設定標示頁來區分 jobs.

get/put_PrintDevices 取得/設定列印裝置名稱.

get/put_NetAddresses 取得/設定來源位置.

IADsPrintQueueOperations:

IADsPrintQueueOperations 介面可使 Active Directory 裡的 COM 物 件來支援透過網路控制印表工作的屬性和方法。

方法 說明

get_Status 取得 print queue service 狀態.

PrintJobs 恢復介面觀點到指定的物件.

Pause 暫停 print queue 處理程序.

Resume 恢復 print queue 處理程序.

Purge 刪除 print queue 內全部 jobs.

IADsPrintJobOperations:

IADsPrintJobOperations 介面可使 Active Directory 裡的物件支援 經由網路來控制印表工作的方法。

方法 說明

get_Status 取得 print job 的狀態.

get_TimeElapsed 計算已花費的時間.

get_PagesPrinted 計算頁數.

get/put_Position 取得/設定 print job 在 queue 中的序號.

Pause 暫停處理 print job.

Resume 繼續處理 print job.

第四章 心得與討論

2000 與 windows98 的架構差滿多。在開發應用程式時,可要特別注 意,這次的經驗讓我實際體驗到作業平台與應用程式之間的相關性。

站請教別人,對方的回答,會讓我們更清楚下一步如何解決問題,去 那裡查相關資料。這時候,再次體驗到,要在資訊界生存,英文真得 要下功夫,否則很難掌握到最新的技術。

而這個專題能順利完成,除了要感謝李維斌老師的指導,最重要 的就是另一位組員勝銘的全力配合,碰到問題時一起討論研究,讓我 們的工作效率加倍,也才能有今天的成果。

4.2 未來展望

隨著科技不斷的進步,人們也不斷地在追求更方便的生活,生活 E 化已經成為全球一致的目標了,當然,我們學校也不例外。這幾年 來學校不斷的推行著 E 化的政策,象徵著資訊與科技的電腦實習教室

隨著科技不斷的進步,人們也不斷地在追求更方便的生活,生活 E 化已經成為全球一致的目標了,當然,我們學校也不例外。這幾年 來學校不斷的推行著 E 化的政策,象徵著資訊與科技的電腦實習教室

在文檔中 印表工作佇列管理系統 (頁 19-0)

相關文件