史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   Windows 10 疑難討論 Q & A 精華區 (http://forum.slime.com.tw/f124.html)
-   -   Windows XP和Vista雙系統安裝不完全攻略 (http://forum.slime.com.tw/thread181135.html)

psac 2006-07-26 01:23 AM

Windows XP和Vista雙系統安裝不完全攻略
 
 不論先裝Windows XP還是先裝Windows Vista,都無關緊要。最重要的是後面的操作。現在將介紹我個人安裝雙系統的方法。

  本人裝Vista 5456 32Bit裝在C碟,將Win XP裝在D碟。

  一、雙系統共用

  1.全新安裝雙系統

  這裡關係到啟動雙系統問題,將要修改Vista的Boot Manager,將Win XP的啟始信 息加入到BCD文件中。在遠景論壇上曾發過通過bcdedit.exe(Vista----X:\Windows\system32\)程序修改Vista和其他Windows的多重新啟動動表單的帖子,這是一個指令行程序,將用到大量指令,對普通用戶來說極為不方便。於是我建議大家用VistaBoot Pro 1.0。VistaBoot Pro 1.0提供了一個圖形化的操作介面,修改設定一目瞭然,這樣對於普通用戶來說也不是很難。

  附加檔案 29365

  附加檔案 29366

  VistaBoot Pro 1.0的安裝說明:

  1 Wndows XP系統必需裝有 Microsoft .NET Framework 2.0 才能安裝本軟體。

  2 Windows Vista 系統下安裝後,必需用滑鼠右鍵點擊程序或它的建立捷逕,選項「用管理員賬戶執行」或者關閉」UAC「,否則會出現權限不夠的出現錯誤提示項。

  3 如系統裝有防火牆,則必須允許它訪問網路。

  VistaBoot Pro 1.0的使用方法如圖:

  1 Current Settings:在這裡可以檢視現用的啟始管理器的配置資訊,檢視之前建議選項「File→Check for Updates」進行檢測,或者執行「Rescan BCD Registry」重新掃瞄,以保證當前配置資訊是最新的。

  附加檔案 29359

  2 Change Settings:用戶可以在這裡設定預設值啟動的作業系統,直接從下拉列表項中選項即可,使用方法與「System Properties→Advanced→Startup and Recovery」大致相仿,修改後直接按下「Apply!」按鈕即可生效。必須指出的是,這裡還提供了移除Vista Boot Loader的選項,但使用之前請慎重,因為移除後將無法進入Vista。

  附加檔案 29360

  3 Manage Entries:在這裡可以調整多重新啟動動表單中各個項目的次序,通過「Up」和「Down」兩個按鈕選項即可,當然也可以在這裡移除某個啟動項。還可以在此增加作業系統。比如我在這裡增加一個名為」Windows XP SP2 Professional「的作業系統 ,其啟始程序所在盤為」C「。

  附加檔案 29361

  4 Backup/Restore:這是VistaBootPRO的一個特色功能,我們可以將現用的設定制作備份到文件中,以後可以隨時恢復以前的個性化設定。

  附加檔案 29362

  5 在「Tools」表單下選項「Legack Editor」能開啟記事本對boot.ini文件進行編輯,當然你能夠修改的只有除了Windows Vista之外的啟動項目。

  附加檔案 29363

  設定完後用指令「bcdedit」來檢視設定

  方法:1 開啟「執行」 (開始〉執行), 輸入 cmd

  2 輸入bcdedit

  附加檔案 29367



啟始文件制作備份

  設定完成並重啟動之後就用上了雙系統了,那麼現在就要做一件重要事情進行文件制作備份,制作備份很重要。這些文件被隱藏,須開啟資料夾選項進行設定,如圖:

  附加檔案 29368

  1制作備份的啟始文件為(文件位於「當前啟始程序所在盤」比如此時是C碟):Boot(資料夾);autoexec.bat;bootmgr.sys;config.sys;BOOTSECT.BAK;boot.ini;bootfont.bin;IO.SYS;MSDOS.SYS;NTDETECT.COM;ntldr.sys其中Boot(資料夾);autoexec.bat;bootmgr.sys;config.sys;BOOTSECT.BAK為Vista的啟始,而boot.ini;bootfont.bin;IO.SYS;MSDOS.SYS;NTDETECT.COM;ntldr.sys為Win XP的啟始。

  2制作備份BCD文件:1 開啟「執行」 (開始〉執行), 輸入 cmd

  2 輸入bcdedit /export "X:\XXX\bcd"

  恢復BCD文件:1 開啟「執行」 (開始〉執行), 輸入 cmd

  2 輸入bcdedit /import "X:\XXX\bcd"

  圖中我是把BCD文件制作備份到「f:\123\"資料夾下,又從「f:\123\"資料夾下恢復。BCD文件位於「C:\Boot\"資料夾下。

  附加檔案 29369

  2.重新安裝雙系統

  但是又出現了問題,有些人要重新安裝WinXP或Vista。安裝後又沒有了雙系統啟動表單了,這裡就有兩種形式了。

  第一:Vista安裝在C碟,Vista不動,重新安裝Win XP。

  方法一:由於是重新安裝Win XP,所以Win XP在C碟的啟始文件沒有動,那麼就只把先前制作備份的BCD文件恢復就可以了。(推薦)

  方法二:就是再次使用VistaBoot Pro 1.0的方法。

  第二:Vista安裝在C碟,Win XP不動,重新安裝Vista。

  因為Vista安裝在C碟,安裝好後,C碟中Win XP的啟始文件將全都消失,那麼就要把Win XP的啟始文件複製到C碟中。再使用恢復BCD文件的方法來恢復雙系統啟動表單。

  注意:此方法必須保證C碟中WinXP和Vista的啟始文件無損失,建議系統安裝好後就制作備份它們,最好是全部制作備份。

psac 2006-07-26 01:24 AM

二、雙系統改為單系統

  1.保留Vista,移除Win XP

  1恢復系統預設值以Vista啟動。

  方法:1 使用光碟載入 Vista 光碟(可以使用虛擬光碟)

  2 開啟「執行」 (開始〉執行), 輸入 cmd

  3 輸入 X: (X代表你的光碟磁碟代號)

  4 輸入 cd boot

  5 輸入 bootsect /nt60 SYS

  6 重新啟動, Vista 的 啟動管理器已經消失了

  2 移除Win XP在C碟的啟始文件(上面有介紹哪些是Win XP的啟始文件);

  3 格式化你安裝Win XP的那個盤。

  附加檔案 29370

  2.保留Win XP,移除Vista

  1 格式化你安裝Vista的那個盤。

  2用系統光碟中「系統啟始修復」啟始進入系統,進入後把制作備份的Win XP啟始程序複製到「當前啟始程序所在盤」,我這裡為C碟。

  3恢復系統預設值以Win XP啟動。

  方法:1 使用光碟載入 Vista 光碟(可以使用虛擬光碟)

  2 開啟「執行」 (開始〉執行), 輸入 cmd

  3 輸入 X: (X代表你的光碟磁碟代號)

  4 輸入 cd boot

  5 輸入 bootsect /nt52 SYS

  6 重新啟動, Vista 的 啟動管理器已經消失了,系統將預設值以Win XP啟動。

  附加檔案 29371

  注意:在此C碟為「當前啟始程序所在盤」。如果你對「當前啟始程序所在盤」不清楚可以直接輸入 bootsect /nt60或52 磁碟代號:如(bootsect /nt52 C:)

  在此強調一點,保留Vista,則Vista全部啟始文件無損失;保留Win XP,則WinXP全部啟始文件無損失。


三、其它設定:

  1.更改系統名稱

  1預設值XP系統名稱在Vista啟動管理器中是"earlier version of Windows",要更改它:

  1 按住Windows+R開啟執行

  2 輸入cmd開啟指令行模式

  3 輸入bcdedit /set {ntldr} Description "Windows XP SP2 Professional"

  2預設值Vista系統名稱在Vista啟動管理器中是"Microsoft Windows",要更改它:

  1 按住Windows+R開啟執行

  2 輸入cmd開啟指令行模式

  3 輸入bcdedit /set {current} Description "Windows Vista 5456 Ultimate"

  附加檔案 29372

  2.更改表單時間為10秒

  1 按住Windows+R開啟執行

  2 輸入cmd開啟指令行模式

  3 輸入bcdedit /timeout 10

  附加檔案 29373

psac 2006-07-26 01:24 AM

Vista移轉工具保證安裝程序簡單

IT管理員在明年安裝微軟的Vista時,可能發現過去的令人討厭和費時的桌面佈署。

  一系列免費工具也將隨著這個新的桌面作業系統到來,這些工具會在微軟的企業桌面設定(Business Desktop Deployment即BDD)架構之中。這些工具將使用映射來讓企業電腦上的軟體安裝變得比如今使用的指令碼導向模式效率更高。

  現在也有其它廠商來提供可以移動使用者設定檔的工具。ScriptLogic公司是美國佛羅里達州的公司,他們的Desktop Authority是其中之一;Symantec公司的Ghost Solution Suite是另外一個。微軟的隨著新系統發怖的工具和架構與XP和之前的一些版本作業系統帶來的工具相比,是一個巨大的進步。

  這些早期的版本,IT管理員使用嚮導來安裝文件、設定桌面時間區域、語言等等,這樣來佈署電腦。在Vista中,企業桌面設定(BDD)現在包括如應用程式相容性工具包和用戶移轉工具等工具。

  Vista包括關於XML的回應文件(answer files),這樣可以使用遠端和無人職守安裝、關於指令碼的安裝和其它能夠提高安裝工作的功能。但是企業桌面設定(BDD)同樣也是第三方廠商能夠提供給Vista作業系統安裝工作的方法。

  這個架構有兩個設定:少接觸(light touch),這意味著IT管理員必須仍要偶爾訪問桌面系統來進行維護,零接觸 (Zero-Touch),這意味著完全解放雙手。「兩者都為減少佈署花費方面走了一大步,」 Bernie Klinder,藍籌(Blue chip)咨詢集團的顧問說道。

  一些新的佈署工具能夠通過作業系統佈署(OSD)功能包在系統管理伺服器(SMS)上被套用。

  例如,Vista在獨立硬體映射文件格式的CD上,你可以直接從SMS上或者第三方管理產品內佈署以達到零接觸。當Vista被安裝,用戶的組態文件訊息、文件、桌面佈署、列印等等都能自動進行。

  「如過這些真能做到真正的零接觸,這將讓我的工作簡單多了,」,David Driggers,Alabama Gas公司的IT管理和佈署部門的技術經理說道,「當新的SMS版本發怖,它將有作業系統佈署(OSD)功能包,我們的目標是在2008年或者2009年前,我們的技術工程師永遠不用再離開辦公室。」

  企業桌面設定(BDD)將對Vista的佈署很重要——管理員需要理解它如何工作——一些專家說他們認為零接觸很值得期待。

  「微軟和它的夥伴將建立企業桌面設定(BDD),所以我們轉向零接觸,現在,它能給我們一個架構來讓Windows佈署更好、更簡單也更快,而需要較少的操作。」

psac 2006-07-26 01:25 AM

Vista中TCP/IP堆砌對實際文件傳輸的影響
此部落格登入系統由微軟負責Windows Vista/Longhorn作業系統TCP/IP強化工作的小組完成。

  "我們的小組對伺服器版Longhorn進行測試和採樣已有一段時間了,我們對其中的網路功能非常感興趣.特別是Vista和Longhorn中TCP/IP堆疊的變化.我們知道這將在很大程度商影響系統後端操作,如資料中心間資料傳輸,但我們還認為,包括Vista下載功能的前端也將因此得到很大改善.這就意味著你將可以在家或辦公室輕鬆享受高速下載,除非你的網路存在帶寬限制."

  Windows網路組讓我們說明 測試資料中心TCP/IP堆疊以取得一些現實世界資料,這是我們對TCP/IP堆疊的首次嘗試。

  現在,TTCP正不斷挑戰著堆疊、cpu、總線、網路等的限制,但它還並未影響倒發生在實際工作中的文件傳輸。

  由於這些文件傳輸給我們帶來了更多挑戰,我們將兩台新的伺服器放在華盛頓和加州,它們均帶有GigE NIC.每個資料中心均擁有一台W2K3伺服器和一台Longhorn伺服器.

  我們設定了兩項自動工作,以從加州伺服器傳輸201GB大小的文件倒華盛頓伺服器商.這兩項自動工作分別是由W2K3和Longhorn兩種系統來執行.兩台伺服器均為HP DL385 雙核 16GBRAM記憶體以及GigE網路.其實驗結果是:

  使用W2K3系統執行的文件傳輸工作的兩端速度均為12Mb/s.

  使用Longhorn系統執行的文件傳輸工作的兩端速度均超過400Mb/s

  而Longhorn系統在同一虛擬區域網路中傳輸1GB文件的速度為502Mb/s左右

psac 2006-07-26 01:27 AM

Windows Vista作業系統八大套用技巧
Windows Vista可能很多人都還沒有開始使用,但是使用者已經開始整理出Windows Vista的套用技巧了,現在就說了一下他們的使用感受。

  禁用Vista的休眠功能

  Vista的休眠佔用系統碟與實體記憶體一樣大小的空間,實在太浪費了,如果系統碟空間緊張,可以考慮禁用休眠。

  禁用方法如下:按Win+R鍵開啟「執行」視窗,輸入「powercfg -h off」,按Enter鍵即可(前提是禁用UAP)。

  禁用Vista的UAP!

  UAP就是User Account Protection - 用戶帳戶保護,預設值情況下登入的帳號雖然是管理員等級,但是執行大部分的系統操作都需要被詢問是否執行。禁用UAP有什麼用呢?事實上,很多程序不能正常安裝或不能正常執行都以UAP有關,如極點五筆不能在IE7下執行、PhotoshopCS2無法啟動和執行、Kmplayer執行時彈出現錯誤誤視窗等,最重要的是,如果在預設值登入的帳號下開啟了UAP,系統和很多應用程式的設定都不能儲存。因此,禁用UAP是安裝系統後首先要做一件事!

  禁用方法如下:按Win+R鍵開啟「執行」視窗,輸入「Regedit」執行註冊表,然後將HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PoliciesSystem下的EnableLUA的值該為0即可。

  實現Vista自動登入

  每次開機都要輸入密碼,是不是很麻煩?如果不想通過修改註冊表的方法來實現自動登入,試一下以下的方法:

  按Win+R鍵開啟「執行」視窗,輸入「Rundll32 netplwiz.dll,UsersRunDll」指令開啟用戶帳戶視窗(注意區分大小寫),選項預設值登入的用戶名,然後去除「要使用本地機,用戶必須輸入用戶名密碼」複選項中的勾號,再按「Shift+Ctrl+A」,在彈出視窗中輸入用戶密碼,儲存結束即可(前提是禁用UAP)。

  修改虛擬記憶體的位置

  Vista的虛擬記憶體也是佔用系統碟空間的大戶,設定一下也可以給系統減負。方法與在WinXP下差不多。具體方法如下:右鍵「機算機」,選「內容」,點擊「進階系統設定」,在「系統內容」視窗選項「進階」選擇項,在「效能」區點擊「設定」,再在「效能選項」視窗選項「進階」選擇項(在這裡,也可以設定設定視覺效果,方法同WinXP一樣),在」虛擬內在「區點擊「更改」,在「虛擬記憶體」視窗裡,把「自動管理所有驅動器的分頁文件大小」單選框前面的勾號,選項系統碟,把虛擬記憶體的初始大小和最大值都設為0,然後選項要放置虛擬記憶體的分區,分別輸入初始值(一般為實體記憶體的1.5倍)和最大值(一般為實體記憶體的3倍),點「確定」儲存設定即可。





  關閉不需要的服務


  由於Vista是一個全新的系統,很多服務都不是很瞭解,因此如果不是執行比較卡,最好不要關閉服務。以下是本人嘗試關閉的一些服務(都是設定成手動,沒敢設定成禁用),僅供參考(前提是禁用UAP)。

  1.Base Firewall Engine

  2.IPSEC Services

  3.mpssvc

  4.IP

  5.Network Access Protection Agent

  6.Software Licensing Service

  7.Security Center

  8.System Restore Service

  9.UPnP Device Host(用BT的最好不要關閉)

  10.WinHTTP Web

  11.Error Reporting Service

  12.Tablet PC 輸入服務

  加快視窗彈出速度

  Windows Vista在開啟視窗時使用了動畫效果,對記憶體較小的用戶來說,會影響開啟視窗的速度,而改善的方法就是將動畫效果關閉。

  方法如下:按Win+R鍵開啟「執行」視窗,輸入「Regedit」執行註冊表,找到「HKEY_CURRENT_USER\Control PanelDesktop\Window Metrics」分支,在右邊的視窗中找到MinAniMate鍵值,把它的值由1修改為0即可關閉動畫顯示。

  縮短關機等待時間

  Vista執行關閉指令後,會對電腦內還在執行的服務進行關閉,如果某一程序在系統預設值時間內沒有停止執行,系統就會強制執行停止操作。如果覺得太浪費時間,可能通過修改註冊表來實現關機加速。

  方法如下:按Win+R鍵開啟「執行」視窗,輸入「Regedit」執行註冊表,,找到「HKEY_LOCAL_MACHINE\System\Current ControlSet\Control」分支,在右邊的視窗中找到「WaitToKillServiceTimeout」鍵值,把預設值情況下的值由20000更改為5000或更低。



開啟真正Administrator帳戶


  老實說,預設值情況下登入的帳戶的管理員權限與Administrator相比還是差距挺大的。如果不想禁用UAP,直接使用Administrator以取得最高的權限,就是要開啟Administrator帳戶了。不過,開啟Administrator後會給系統帶來安全隱患!在當前殺毒軟體還沒有配套之前,個人認為還是用預設值帳戶同時禁用UAP這種方法比較合適。

  開啟Administrator帳戶方法如下:

  1. 開機按F8進入安全模式,使用Administrator用戶登入Vista(很奇怪,在5384簡體中文版下,Administrator登入竟然不需要密碼,而且也不能設定密碼,不知道是不是BUG);

  2. 按Win+R鍵開啟「執行」視窗,輸入"regedit",開啟註冊表;

  3. 進入HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon;

  4. 增加新的鍵值(key) ,名稱為SpecialAccounts;

  5. 在SpecialAccounts中建立子鍵,名稱為UserList;

  6. 完成後看看位置對不對:HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList;

  7. 在UserList鍵中,新增DWORD (32 bit) ,名稱為Administrator,鍵值為1;

  8. 在指令行中輸入"net user Administrator /Active:yes";

  9. 註銷或重新啟動,就可以使用Administrator帳號了。

  附:先前的方法(供參考)

  很多人認為Vista的UAC功能很是不爽,不考慮安全問題的話,就開啟Administrator帳號吧。

  方法如下:

  1. 使用安裝時新增的帳號登入Vist;

  2. 開始選單,找到"All Programs","Accessories";

  3. 右擊"Command Prompt" ,選項 "Run as Administrator";

  4. 在提示對話視窗(如果有的話)中按下"Allow";

  5. 進入指令行視窗,輸入"regedit",Enter鍵;

  6. 進入HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogon;

  7. 增加新的鍵值(key) ,名稱為SpecialAccounts;

  8. 在SpecialAccounts中建立子鍵,名稱為UserList;

  9. 完成後看看位置對不對:HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonSpecialAccountsUserList;

  10. 在UserList鍵中,新增DWORD (32 bit) ,名稱為Administrator,鍵值為1;

  11. 在指令行中輸入"net user Administrator /Active:yes";

  12. 註銷或重新啟動,就可以使用Administrator帳號了。

  對於加入域中的用戶,只要開啟了administrator 帳號,就可以使用切換始用者登入。

psac 2006-07-26 01:28 AM

Win Vista完整制作備份:更方便還是更危險
 Windows Vista重要特性之一便是支持CompletPC系統完整制作備份,能夠以Virtual Server Virtual Disk格式將你的整個PC系統/資料製作成制作備份映射。這一功能非常實用,但是業內人士則對其安全性表示疑慮。

  CompletPC制作備份功能的使用存在潛在風險:用戶可以通過Virtual Server完成系統制作備份和還原工作,但是這種完整的PC系統制作備份是否安全可靠?

  微軟並未透露CompletPC制作備份功能是否/如何提供有效的安全/保密方案,不過,這種完整制作備份功能很有可能導致用戶資料更容易被盜竊或非法利用。對於商業用戶來說,Vista提供的完整制作備份PC的方案在提供便利的同時亦帶來了更大風險。

psac 2006-07-26 01:28 AM

誤解!Win Vista系統需求無需混和硬碟
此前國外網站報導的Vista Premium最低規格包括混和硬碟的消息近日被微軟否認,根據詳細官方我的文件顯示,此前的媒體報導對微軟我的文件理解錯誤,導致以訛傳訛。

  根據《Storage Requirement 0005》我的文件內容,混合型硬碟並沒有「被微軟要求」為必備規格。

  「如果OEM商們決定採用混合型硬碟,混和硬碟需求適用於如下情況:

  1.Windows最低獲得50MB非易失性快取

  2.快取能提供最低16MB/s資料讀取速度,連續寫入速度最低8MB/s

  3.快取必須能夠提供至少4MB/s以上速度的隨機讀取

  以上規格需求將從2007年6月起在Vista Premium系統中生效」--也就是說,所謂混和硬碟規格要求僅適用於「OEM商決定採用混和硬碟的條件下」。

  在和數個主要OEM廠商溝通後我們進一步驗證,微軟從未沒將混合硬碟作為Vista Premium必備要求,換句話說,OEM商更願意讓用戶將高昂的混和硬碟「視為Vista Premium必備」。

  慨歎自己剛買的筆記型「立刻淘汰」的筆記本用戶們,可以送一口氣了。

psac 2006-07-26 01:29 AM

安裝Vista Beta2之前必須知道的5件事
上週三,微軟那讓人望眼欲穿,卻又不斷延期的Windows Vista終於發怖了一個公開的測試版本:Vista Beta 2。這一消息,又一如往常地給早已喪失了耐心的大眾們帶來了些許騷動。這甚至最終導致相關下載站點超出負荷,無法再提供下載。
WinSystem子站熱點
Windows Vista
Windows Server 2003
Windows Server 2000
Windows XP
系統故障診斷
終端用戶
網路管理
安全防範
Windows儲存於
活動目錄
認證和職業
硬體知識
  事實上,無法下載到Vista Beta 2那數GB之巨的安裝文件說不定並不是什麼壞事,反而卻是你交上了好運。絕大多數人都沒有留意那些深埋在微軟官方網站中的注意事項和警告訊息,而這些小東西卻可能會破壞掉眾多Beta 2用戶的黃粱美夢。
  在你下載Vista Beta 2,或花費10美元向微軟訂購一張DVD安裝光碟前,你應當先知曉下面5件事情:
  1、你最好能有一台DVD燒錄機
  假如你沒有一台DVD-RW光碟的話,你耗費在下載Vista Beta 2上的巨額時間--按照微軟的估計,如果使用1.5Mbps的網路連接(如DSL)的話大約需要花費9個小時--有可能會被白白浪費掉。當然,你也可以在別人的電腦上下載好安裝文件,然後將文件燒錄至DVD中,最後再安裝到自己的電腦上。這當然也行,只要你不閒麻煩。
  如果沒有DVD-RW光碟的話,你剩下的唯一選項就是向微軟訂購一張DVD的安裝光碟。在美國,你需要花費6美元來購買這張光碟,另外再付4美元的運輸和手續費。微軟說你可以在兩到四周內收到這張光碟。
  2、Vista Beta 2的軟體生命週期是2007年
  像其它所有微軟軟體的預覽版本一樣,Vista Beta 2有一個時間限制,在此之後就……嘿嘿……立刻死翹翹!所以,請時刻牢記Vista Beta 2的死亡日期:2007年7月1日!
  雖然現在看起來這個時間還是挺充裕的--還有整整一年多的時間--但是你依然不能肯定到時候自己心愛的電腦會碰到什麼問題,假如,我是說假如,微軟到時候沒有在它預先宣佈的2007年1月推出Vista的正式零售版本的話。
  什麼?你說這是不可能的嗎?你這樣說就好像微軟以前從來沒這樣幹過一樣。
  3、安裝Vista前最好制作備份全部文件
  這個世界上沒有什麼簡單的方法可以讓時光倒流,使一台跑著Vista Beta 2電腦又退回到先前的作業系統狀態中。你被Vista給粘住了,進退兩難!
  微軟是這樣說的:「一旦安裝了Windows Vista Beta 2,你就無法通過復原安裝,退回到先前的作業系統狀態之中--你只有在未來昇級到Windows Vista的最終發怖版本,或是乾脆完全重新安裝一個先前的Windows版本。」
  接著,它又指出了一個所有人都應該牢記的忠告:「在任何電腦上安裝Windows Vista Beta 2前,請記住要制作備份你的全部文件。」
  一個可以避免完全重新安裝先前Windows版本(比如Windows XP)的方法是:
  在嘗試安裝Vista前,先使用像諾頓Ghost之類的磁牒鏡象軟體在另一個外部磁牒上制作備份你的電腦系統。這樣做了後,你就可以在需要的時候,簡單地將外部磁牒中的制作備份鏡象複製到自己的電腦硬碟中,從而恢復到先前的系統狀態。
4、Vista安裝的「可能」與「一定」

  下面是來自微軟的邪惡寓言:「你可能無法將現在安裝的Windows Vista Beta 2昇級到其最終版本,即Windows Vista的正式零售版。」

  從常理推斷,你當然會想要Vista的最終正式版--什麼!你認為微軟會免費地把最終版本分發給你?--OK,退一萬步來講,就算是這樣,你可能依然不得不進行所謂的「乾淨」安裝。換句話講,如果你在未來要安裝Vista最終正式版的話,很可能會不得不被迫清空自己電腦硬碟上的所有資料。

  請注意上述警告中的「可能」一詞。我們強烈建議你將其理解為「一定」!

  5、Vista Beta 2中存在著很多「陷阱」

  最後,因為這還只是一個測試版本--這一點很容易被人們忘記,因為現在這個世界上充斥著太多的讓人眼花繚亂的測試版本軟體,感謝我們親愛的微軟、Google和雅虎等等軟體巨頭--這兒當然會存在著一份很長,很長的已知問題列表(更不要提那些不計其數的未知問題了)。

  Vista Beta 2的發怖說明也許會讓你讀得兩眼翻白,但這些內容的確值得一讀。或者,至少你應該將其列印出來,以便以後如果需要的時候可以作為參考。

  在所有稀奇古怪的問題中,TechWeb挑出了其中的一個:那就是在從Windows XP昇級到Vista後,無論何時你想要啟動電子郵件程式時,都會導致Outlook 2003嘗試去重新安裝。

  毫無疑問,微軟一直在試圖擺脫掉自己的用戶。

  「在您決定使用Vista Beta 2前,您應當能夠以一顆平靜而祥和的心靈來面對安裝作業系統,昇級驅動程式,以及一般的電腦故障等等問題,」微軟在Vista Beta 2的下載頁面深情地寫到,「使用這個測試版本的作業系統是有一定風險的,其中包括硬體或軟體的衝突,以及系統的不穩定。」

psac 2006-07-26 01:30 AM

微軟Vista又添新元件
為了進一步吸引商業用戶昇級至Windows Vista作業系統,微軟近日宣佈將在Vista中加入新軟體工具元件,以簡化Vista作業系統的軟硬體佈署工作。

  新軟體工具元件名為Windows Automated Installation Kit(WAIK),將隨2006年底發佈的Vista一同面世。

  根據微軟Windows客戶端部門產品經理Greg Sullivan表示,WAIK專為企業IT專業人士設計,說明 他們在新硬體中安裝Windows系統。該軟體工具還可以說明 OEM商簡化在PC上預裝Windows軟體的工作。

psac 2006-07-26 01:31 AM

Windows Vista系統應用程式安裝測試情況
Windows Vista系統應用程式安裝測試情況【2006-07-05 08:58】【】【天極】WinSystem子站熱點
Windows Vista Windows Server 2003 Windows Server 2000 Windows XP
系統故障診斷 終端用戶 網路管理 安全防範
Windows儲存於 活動目錄 認證和職業 硬體知識

  安裝注意事項:

  1、必須在NTFS文件系統中安裝

  2、如果你安裝了虛擬軟式磁碟機VFLOOPY,那麼在安裝前請在啟動表單中取消,編輯一下BOOT.INI,把「由虛擬軟式磁碟機啟動」一項移除。否則在安裝開始後提示「編輯啟動檔案錯誤」而自動結束安裝。

  3、不能用虛擬光碟安裝,要拷貝到硬碟上安裝,不然安裝無法完成!我用酒精120安裝的(注:有網友從虛擬光碟安裝成功!而且次數不少!此條僅供參考)

  4、安裝KEY:TCP8W-T8PQJ-WWRRH-QH76C-99FBW

  5、我是在虛擬光碟中拷貝到硬碟上覆蓋C碟的XP安裝的,原來的XP不能用了

  6、如果安裝在其它分區做成雙系統,網友反映好像後裝的VISTA資料夾無法徹底移除。。。。(只能格式化)

  7、重要提示:(可能也是出問題最多的),網路卡、音效卡、顯示卡的驅動不容易裝上!NVIDA顯示卡可以去下載FOR VISTA最新的驅動!

  安裝情況:

  1、安裝完成後顯示卡系統能認出,但有些設定沒法調整,僅僅是認出而已:)網路卡要手動尋找光碟安裝,音效卡要安裝主機板驅動才行(具體組態見下)

  2、顯示卡用最新的NVIDA適用於VISTA的驅動安裝成功,但系統進入桌面時間大增!自動認出的顯示卡無法調整重新整理率,顯示不夠清晰,滾動網頁時有停頓,裝上最新驅動後一切OK!

  3、新安裝的系統上網後瀏覽中文網頁可以正常顯示,但硬碟卷冊無法正常顯示中文,在地區和語言選項中設定後,本機顯示也正常了

  4、全新安裝大小:全新安裝4.25G(4,569,###),含PageFile 1.12G,驅動,刪掉了IIS root。我自己覆蓋安裝後刪掉一些原XP文件(夾)後在5個多G(未做更多瘦身)


已經驗證無法正常使用的軟體有:

  1、殺毒軟體諾頓裝7.6黃金企業版安裝後無法開啟既時防護,刪!再裝9.0企業版,安裝自動結束,(諾頓10中文伺服器版也不能用)

  2、防火牆天網裝上7.0、7.1安裝後重新啟動均不能進入系統!用最近一次正確組態登入,移除後正常。

  3、ACDSee7.0不能用!

  4、安裝在其它分區的原XP使用的OFFICE 2003無法使用

  5、Daemon Tools V3.47 漢化版不要裝,會顯示藍色

  6、KV不好用

  7、拼音加加無法使用,無法彈出設定和輸入法;系統聲音沒辦法取代。

psac 2006-07-26 01:32 AM

Vista新特性逼Intel推出新的獨立顯示卡
無論Intel是否已經計劃/沒有計劃推出獨立圖形晶片來配合Windows Vista趨勢,Intel都需要一個新的強有力的圖形產品來支持下一代作業系統的需求。
WinSystem子站熱點
Windows Vista
Windows Server 2003
Windows Server 2000
Windows XP
系統故障診斷
終端用戶
網路管理
安全防範
Windows儲存於
活動目錄
認證和職業
硬體知識
  Vista是微軟首個主要特性和硬體組態直接相關的作業系統,換句話說,微軟首個強硬硬體昇級推進系統。
  ATi軟體開發部門經理Terry Makedon表示,Vista Aero圖形接頭為圖形製造商開闢了更為廣闊的市場領域,新驅動模型不僅在遊戲和桌面效果上至關重要,還能夠大幅減少Vista當機--絕大多數Windows XP當機都和圖形驅動有關。
  ATi和nVIDIA為了開發改進自己的Vista驅動方案已經進行了至少18個月努力,在Intel方面,Intel很有可能感到自己已經被Vista「逼入」獨立顯示卡市場。
  距離VIsta發佈僅有半年時間,Intel眼前還有另一個問題:Vista Aero桌面驅動。

Vista顯示記憶體需求有大學問 Intel老大將不保

 reghardware網站透露了Vista的顯示卡需求更多細節,可能讓我們更加耳目一新,看來Vista的顯示卡方面並不是那麼簡單的事情,而且你可能需要購買更加豪華的顯示卡才可以有不錯的享受。
WinSystem子站熱點
Windows Vista
Windows Server 2003
Windows Server 2000
Windows XP
系統故障診斷
終端用戶
網路管理
安全防範
Windows儲存於
活動目錄
認證和職業
硬體知識
  在Vista的系統需求裡此前僅僅是強調需要DirectX9的硬體,現在看來事情更複雜,而且似乎不利於Intel。一個Vista Capable電腦需要DX9顯示卡,而Vista Premium Ready電腦則需要支持Aero Glass的顯示卡。Vista Premium Ready要求使用支持DX9的顯示卡必須支持WDDM驅動,硬體必須支持Pixel Shader 2.0,而且最低支持32-bit色深,這是非常重要的,而且在顯示記憶體方面也有要求:
  ——如果是64MB顯示記憶體的顯示卡,只能支持最高1,310,720像素(1280x1024解析度)的單顯示輸出。
  ——如果是128M顯示記憶體的顯示卡,可以支持從1,310,720到2,304,000像素(1280x1024-1920x1280解析度)的單顯示輸出。
  ——只有256MB顯示記憶體以上才可以支持2,304,000像素以上(1920x1020解析度)的單顯示輸出。
  聽起來似乎不難,因為SM2.0和128M顯示記憶體已經比較普及了,但是並不這麼簡單。Vista Premium內裝WinSAT (Windows系統評估工具),會通過一系列測試來判桌上型或者筆記型對Vista Premium的支持程度,其中包括圖型、Direct3D、儲存於、處理器和視瀕解碼。其中前兩項與顯示卡有關,WinSAT會測定系統顯示卡的顯示記憶體帶寬以決定是否開啟Aero介面,目前這個工具會對Intel等的整合顯示卡以及一些顯示記憶體較低的DX9顯示卡亮出紅燈,因為顯示記憶體帶寬不夠,無法執行Aero介面!
  在這個測試中ATI的Radeon X300整合顯示卡不行,X1300也很勉強,X1600肯定足夠了,Geforce 6200核心的nVIDIA的C51也很困難,不過據稱NV正在驅動上大下功夫解決這個問題。
  Intel的G965整合的GMA3000顯示卡支持DX9、SM3.0,正好滿足了Aero的最低需求,但是僅此一個還沒有問世的而已,而且非常勉強。Vista Premium迫使所有的電腦用戶,包括只是上網聊天辦公等的用戶也需要一個好的顯示卡,而ATI和NVIDIA在顯示卡上更有優勢,說不定在Vista之後,因為顯示卡的需求,主機板的世界會發生天翻地覆的變化。

psac 2006-07-26 05:23 PM

賽門鐵克繼續「揭發」Vista安全漏洞

賽門鐵克近日揭露了Windows Vista系統中的又一個安全漏洞,這次遭殃的是Vista的新功能:用戶帳戶控制(UAC)。

賽門鐵克指出,雖然UAC的初衷是讓Vista PC執行在一個安全的模式下,但攻擊者可以建立一個特殊網站,然後通過ActiveX控件將惡意文件安裝到用戶的硬碟上,從而繞過UAC,控制整個系統。

微軟發言人隨即回應說:「Windows Vista早期測試版中的任何問題都不能代表最終正式產品的品質。」繼Windows XP SP2之後,Windows Vista也在安全性上投入了巨大精力,並被微軟宣傳為有史以來最安全的作業系統。

在此之前,賽門鐵克的第一份Vista報告曾指出其網路技術存在安全漏洞;此次發怖的是第二份報告;第三份預計將在本周通過賽門鐵克的DeepSight安全服務中公佈,內容是關於Vista內核。

在微軟進入安全市場後,與賽門鐵克就成了冤家對手,雙方在安全問題上的每一次過招都會引起很多思考。今年5月份,賽門鐵克還對微軟提起了訴訟,稱後者盜竊其商業機密。這也是兩家公司第一次對簿公堂。

psac 2006-10-19 03:02 AM

新版Windows:Vista快問答


Ina Fried‧唐慧文譯  2005/07/26




原先代號為Longhorn的下一版Windows作業系統,已正名為Windows Vista。儘管推出日期比預期晚了些,而且可能不包含當初規劃的所有功能,但Windows產品負責人Jim Allchin仍堅稱是「大事一樁」。

新版作業系統的主要特色包括:安全性改良、新的炫麗繪圖效果,以及新的資料搜尋與組織方法。一改往日必須記得檔案存在哪個檔案夾的麻煩,使用者將能把文件存在數目不拘的虛擬檔案夾內,也可建立本身會自動更新的檔案夾,例如「上周修改的檔案」夾或「珍傳來的文件」夾。

此外,微軟也設法簡化其他的任務,例如把一台PC加入家庭網路,或把投影器與筆記型電腦連結。以下是其他常見的問題。

Windows Vista何時上市?

微軟已承諾,Vista會在2006年耶誕購物季前上市。初期的測試版預定在今年8月3日發佈。伺服器版本訂於2007年推出。

Vista有何內涵?

Vista昔稱Longhorn,和微軟2003年展示的初期版本大不相同。微軟已放棄原先納入全新WinFS檔案系統的計畫,並已更改落實新網路服務架構(稱為Indigo)的方式,並增加新的繪圖引擎,稱為Avalon。

根據目前所知,Vista主要的功能包括:新的安全性改良、新的搜尋機制、許多新的筆記型電腦功能、家長控制,以及更強的家庭網路功能。拜Avalon之賜,視覺效果也將令人耳目一新,從閃閃發亮的透明視窗到形同文件縮圖的圖示,不一而足。對企業用戶而言,微軟表示,Longhorn會更容易讓企業在多台PC上安裝新軟體,並降低電腦必須重開機的次數,藉此降低成本。

就這樣而已?

不止於此。微軟公開證實的其他功能還包括:廣泛支援IPv6技術、改良式的用戶端伺服器資料快取儲存、全量的加密保護保護(whole-volume encryption)、翻新的同步化引擎、支援筆記型電腦輔助顯示器的功能、自動的硬碟最佳化,以及安全的開機過程,可協助預防萬一電腦失竊資料遭某人存取的風險。

一切都定案了嗎?

還沒有。Allchin曾表示,首要之務是讓Vista準時推出,包含每一項功能倒不是第一優先的考量。所以,如果開發小組遭遇障礙,某些功能可能會被砍掉。

我的PC可以執行Vista嗎?

那要看你的電腦什麼時候買的。Allchin今年4月時表示,他認為Vista需要搭配大約512MB的記憶體,以及「今日水準」的處理器。要顯示所有新增的花稍繪圖效果,端視你用的是哪一型的繪圖卡。在舊型的機器上,展現出的繪圖效果可能與目前的Windows類似。

Vista會依照往例,分成家用版、專業版、平板電腦版以及媒體中心版嗎?

Allchin說,微軟即將做出決定,但還未準備好宣佈。「我們正把一些功能搬來搬去,」他說。

Vista售價多少?

訂價也尚未決定。





Indigo 簡介:初探
發佈日期: 4/11/2005 | 更新日期: 4/11/2005
David Chappell
Chappell & Associates
摘要:概要介紹了 Microsoft 用於構建面向服務的應用程式的統一編程模型「Indigo」的體系結構。本文涵蓋了 Indigo 與 .NET Framework 中現有的分佈式應用程式技術之間的關係、有關創建和使用 Indigo 服務的基本知識以及對 Indigo 功能的概述,包括安全性、可靠消息傳輸和事務支持等。(本文包含一些指向英文站點的連接。)
注意:本文是根據 Indigo 的第一個社區技術預覽 (CTP) 的預發佈版本撰寫的。請注意,功能和實現細節會隨著 Indigo 產品週期的不斷推進而改變。
http://img.microsoft.com/library/gallery/templates/MNP2.Common/images/3squares.gif
本頁內容

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif

什麼是 Indigo?

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif

Indigo 有哪些特性

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif

創建 Indigo 服務

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif

創建 Indigo 客戶端

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif

Indigo 的其他特性

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif

共存和移植

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif

結論
什麼是 Indigo?
為構建軟件選擇最佳的抽像方式是一個仍在不斷演變的過程。對象是目前構建應用程式業務邏輯的主流方法,但使用對像構建應用程式與應用程式之間的通信模型卻沒有達到同樣的成功。一種較好的方法是將軟件的各個獨立塊之間的交互顯式地構建為「服務」。對於構建面向物件的應用程式,已經存在大量的支持,但將服務作為基本軟件構造塊來考慮,則還是一種比較新的觀念。因此,專門用於創建面向服務的應用程式的技術還沒有得到廣泛應用。
Microsoft 用於構建面向服務應用程式的代號為 Indigo 的框架,正好改變了這一狀況。Indigo 允許目前創建面向物件應用程式的開發人員採用 .NET Framework 以相似的方式來創建面向服務的應用程式。同時為了讓這些應用程式能夠與執行在 Windows 和其他平台上的軟件有效地進行交互,Indigo 還實現了 SOAP 和其他 Web 服務技術,這樣開發人員就可以創建可靠、安全且能夠與執行在任何系統上的軟件實現互操作的事務型服務。
http://www.microsoft.com/china/MSDN/library/windev/longhorn/art/introindigov1-001.gif
上圖顯示了 Indigo 客戶端和服務的簡單視圖。Indigo 提供了創建由客戶端訪問的服務的基礎,這一基礎主要由一組執行於公共語言執行庫 (CLR) 上的類來實現。客戶端與服務通過 Indigo 的內置協議 SOAP 進行交互,因此雖然圖中顯示兩個部分均基於 Indigo 構建,但這顯然並不是必需的。
Indigo 基於 .NET Framework 2.0 並對其進行了擴展,該版本計劃於 2005 年發佈。Indigo 本身會包含在計劃於 2006 年發佈的代號為 Longhorn 的 Windows 版本,同時也會在 Windows XP 和 Windows Server 2003 上提供。本文的介紹基於 Indigo 的第一個社區技術預覽的預發佈版本。請注意,在最終版本發佈之前,可能會(實際上幾乎肯定會)有一些變化。

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif
返回頁首
Indigo 有哪些特性
在 Microsoft,有許多人已投入數年時間來創建 Indigo。如果其解決的問題很簡單,或者其解決方案很明顯的話,就不會需要這樣的努力程度。因此,Indigo 是一種極為重要的技術。然而,作為 Indigo 最重要的方面,Indigo 有三項突出的特性:與多種現有 Microsoft 技術的統一性,對跨供應商互操作性的支持,以及顯式的面向服務特性。本節對逐一探討這三項特性。
Microsoft 分佈式計算技術的統一性
.NET Framework 的最初版本中包含多種不同的技術,用於創建分佈式應用程式。下圖列出了每種技術與開發人員採用該技術的主要理由。例如,要構建基本的可互操作的 Web 服務,最佳選擇是 ASP.NET Web 服務,即通常所說的 ASMX。要連接兩個基於 .NET Framework 的應用程式,有時應當選擇 .NET Remoting。如果應用程式需要分佈式事務和其他更高階的服務,其創建者一般會使用企業服務,即 .NET Framework 推出的 COM+ 的繼任者。要瞭解最新的 Web 服務規範,如 WS-Addressing 和 WS-Security,開發人員可以構建採用 Web 服務增強(縮寫為 WSE,是 Microsoft 對這些新興規範的初始實現)的應用程式。而要創建基於消息的排隊式應用程式,基於 Windows 的開發人員則應使用 Microsoft 消息隊列 (MSMQ)。

ASMX
.NET Remoting
企業服務
WSE
MSMQ
Indigo
可互操作 Web 服務
X
X
.NET - .NET 通信
X
X
分佈式事務等。
X
X
WS-* 規範支持
X
X
隊列消息傳輸
X
X
所有這些選擇都有其存在價值,但其多樣性也會讓開發人員感到迷惑。為什麼要有這麼多選擇?好的解決方案應當是一種技術就能解決所有問題。隨著 Indigo 的到來,這種技術出現了。Indigo 不再強迫開發人員從多種可能當中做出選擇,而是允許他們創建能夠解決所有問題的分佈式應用程式,各種問題由 Indigo 所包含的技術負責解決。儘管 Microsoft 將繼續支持這些早期的技術,但大多數以前可能會採用這些技術來實現的新應用程式都將基於 Indigo 來構建。
與非 Microsoft 應用程式的互操作性
通過統一各種獨立技術使 Windows 開發人員的生活更加輕鬆是一件好事。但通過 Web 服務供應商之間的通用協議,長期存在的應用程式互操作性問題也可以解決。由於 Indigo 的基本通信機制是 SOAP,因此 Indigo 應用程式可與大量執行於各種上下文環境的其他軟件進行通信。如下圖所示,基於 Indigo 構建的應用程式可與下列所有程式進行交互:

執行於同一 Windows 電腦上不同工作行程中的 Indigo 應用程式。

執行於另一 Windows 電腦上的 Indigo 應用程式。

基於其他技術構建的應用程式,如基於 Java 2 企業版 (J2EE) 構建的、支持標準 Web 服務的應用程式服務器。這些應用程式可以執行在 Windows 電腦上,也可以執行在採用其他操作系統(如 Sun Solaris、IBM 的 z/OS 或 Linux)的電腦上。
http://www.microsoft.com/china/MSDN/library/windev/longhorn/art/introindigov1-003.gif
Indigo 應用程式還可以與基於 Indigo 以前的 .NET Framework 技術(如後面講到的 ASMX)構建的應用程式進行互操作。
為了實現基本通信以外的功能,Indigo 採用了一些更新的 Web 服務技術,這些技術統稱為 WS-* 規範。這些文檔定義了用於新增可靠消息傳輸、安全性、事務以及更多基於 SOAP 的 Web 服務的多供應商方式。所有這些規範最初均是由 Microsoft、IBM 及其他供應商共同制定的。隨著它們日漸穩定,所有權通常會轉移到一些標準機構,如結構化訊息標準促進組織 (OASIS)。Indigo 第一版中支持的 Web 服務規範包括 WS-Addressing、WS-Policy、WS-MetadataExchange、WS-ReliableMessaging、WS-Security、WS-Trust、WS-SecureConversation、WS-Coordination、WS-AtomicTransaction 和 SOAP 消息傳輸優化機制 (MTOM)。
當一個 Indigo 應用程式與執行在非 Windows 系統上的應用程式進行通信時,採用的協議為標準 SOAP(可能具有某些 WS-* 擴展),傳輸時以基於普通文本的 XML 編碼形式表示。然而,當一個基於 Indigo 的應用程式與另一個基於 Indigo 的應用程式進行通信時,就非常有必要優化這種通信。與前者相比,所有的功能都相同,包括可靠消息傳輸、安全性和事務,但採用的傳輸編碼則是 SOAP 的一種優化二進製版本。消息仍遵循 SOAP 消息的資料結構,稱為「訊息集」,但其編碼採用了訊息集的二進製表示,而不是標準尖括號加文本的 XML 格式。
對面向服務開發的顯式支持
把應用程式看作提供和使用服務並不是什麼新觀念。新穎之處在於明確將服務作為與對像截然不同的東西來看待。為此,Indigo 創建者們在設計此項技術的過程中始終牢記四項基本原則:

共享架構,而不是類:與舊的分佈式對像技術不同,服務僅通過精心定義的 XML 接頭與其客戶端進行交互。跨越服務邊界傳遞完整的類、方法及全部之類的行為被禁止。

服務具有自主性:服務及其客戶端同意它們之間的接頭,但相互獨立。它們可以採用不同的語言編寫,可以使用不同的執行時環境(如 CLR 和 Java 虛擬機),可以執行在不同操作系統上,還可以存在其他方面的不同。

邊界是顯式的:分佈式對像技術 [如分佈式 COM (DCOM)] 的目標之一是使遠端對像盡可能看上去像本機對像一樣。雖然這種方法通過提供一種通用編程模型在某些方面簡化了開發,但也同時隱藏了本機對象與遠端對像之間不可避免的區別。服務通過使服務與其客戶端之間的交互更明顯而避免了這一問題。隱藏分佈式特性並非目的。

採用基於策略的相容性:如果可能,決定在系統之間使用哪些選項應取決於基於 WS-Policy 的機制。
面向服務是一個廣泛的領域,它包含面向服務應用程式和更廣泛的面向服務體系結構 (SOA) 的概念。Indigo 將成為基於 Windows 的面向服務應用程式的基礎,因而對許多組織的 SOA 工作都將非常重要。

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif
返回頁首
創建 Indigo 服務
如下圖所示,每個 Indigo 服務均由三個部分構成:

一個「服務類」,採用 C# 或 VB.NET 或其他基於 CLR 的語言編寫,實現一個或多個方法;

一個「宿主」環境,這是一種應用程式域和工作行程,服務將在該環境中執行。

一個或多個「終結點」,由客戶端用於訪問服務。
http://www.microsoft.com/china/MSDN/library/windev/longhorn/art/introindigov1-004.gif
與 Indigo 服務的所有通信均需通過該服務的終結點實現。每個終結點將指定一個「合同」,確定通過該終結點可以訪問哪些方法;一個「綁定」,確定客戶端如何與該終結點通信;以及一個「位址」,指示可在什麼地方找到該終結點。
理解 Indigo 需要掌握所有這些概念。本節將從服務類開始逐一描述每個概念。
創建服務類
Indigo 服務類就像其他任何類一樣,但它還有一些新特性。這些新特性允許該類的創建者定義該類實現的一個或多個「合同」。每個 Indigo 服務類至少應實現一個「服務合同」,用於定義該服務提供的操作。服務類還可以顯式實現一個「資料合同」,用於定義那些操作傳遞的資料。本節將從服務合同開始對兩者進行探討。

psac 2006-10-19 03:04 AM

定義服務合同
每個 Indigo 服務類均需實現一些方法,以供其客戶端使用。服務類的創建者通過將這些方法包含在某個服務合同中,來決定將哪些方法公開為客戶可呼叫的操作。定義服務合同,實際上通常就是顯式使用服務,對 .NET 領域來說基本上是一個新觀念。Indigo 的創建者需要找到一條途徑,從 CLR 以及在其基礎上構建的編程語言的角度來把握這一觀念。幸運的是,CLR 的創建者們早就預見到了這種擴展需求,因而提供了對「內容」的支持。從開發人員的角度來看,內容就是一些字元串,可能具有關聯的內容,它們可能出現在類定義、方法定義的前面,也可能出現在其他位置。只要有內容出現,它就會改變其所關聯的事物的某些行為。
.NET Framework 從初始版本開始就對各種事物使用了內容。例如,在 .NET Framework 的 ASMX 技術中要使一個方法成為 SOAP 可呼叫的 Web 服務,該方法將被前置一個 WebMethod 內容。與此相似,企業服務使用 Transaction 內容來指示一個方法需要事務。Indigo 將這種觀念用於服務,定義了大量內容來定義和控制服務。
Indigo 中最基本的內容是 ServiceContract。實際上,Indigo 服務類本身就是標記有 ServiceContract 內容的類或者是實現了標記有該內容的接頭的類。以下是採用第一種方法的一個簡單 C# 示例:
using System.ServiceModel;
[ServiceContract]
class Calculator
{
[OperationContract]
private int Add(int a, int b)
{
return a + b;
}

[OperationContract]
public int Subtract(int a, int b)
{
return a - b;
}

public int Multiply(int a, int b)
{
return a * b;
}
}
ServiceContract 內容以及 Indigo 使用的所有其他內容均在 System.ServiceModel 命名空間中定義,因此本例開頭使用 using 語句來引用該命名空間。服務類中可被客戶端呼叫的每個方法都必須使用名為 OperationContract 的另一個內容加以標記。服務類中帶有前置 OperationContract 內容的所有方法都將自動被 Indigo 公開為 SOAP 可呼叫操作。在本例中,Add 和 Subtract 均標記有該內容,因此兩者均對該服務的客戶端公開。服務類中未標記有 OperationContract 的任何方法(如上例中的 Multiply)將不包含在服務合同中,因而不能被該 Indigo 服務的客戶端呼叫。
服務和對象,這兩個本來互不相干的抽像,在 Indigo 中卻走到了一起。必須理解的是,兩者均顯式或隱式地依賴於合同來定義它們將向外界公開什麼。通過類定義的對象有效地定義了一種合同,此合同決定了它的哪些方法可以被同一應用程式中的其他對像呼叫。對這些方法的訪問由語言關鍵字如 public 和 private 控制。例如,在上面所示的類 Calculator 中,同一應用程式中的其他對象可以呼叫該類的兩個公共方法 Subtract 和 Multiply。該類公開的對象合同中只包含這兩個方法。
通過 Indigo 的內容,Calculator 還定義了一個服務合同,如前所述。此合同也擁有兩個方法,但它們與對像合同中的那些方法不同。一個方法能否被此 Indigo 服務的客戶端呼叫,由 OperationContract 內容控制,而不是由 public 和 private 關鍵字控制。由於此內容只出現在 Add 和 Subtract 上,因此只有這兩個方法才能被客戶端呼叫。對像合同與服務合同彼此完全獨立,正因如此,同一方法(如 Add)才可以既是 private 同時又具有 OperationContract 內容。
剛才的示例展示了創建 Indigo 服務類的最簡單方法:直接使用 ServiceContract 標記類。這樣做之後,該類的服務合同將隱含定義為包含該類中所有標記有 OperationContract 的方法。還可以(並且大多數情況下這樣做會更好)使用語言中的 interface 類型顯式地指定服務合同。使用這種方法,Calculator 類可能會如下所示:
using System.ServiceModel;
[ServiceContract]
public interface ICalculator
{
[OperationContract]
private int Add(int a, int b);
[OperationContract]
public int Subtract(int a, int b);
}
class Calculator :ICalculator
{
private int Add(int a, int b)
{
return a + b;
}

public int Subtract(int a, int b)
{
return a - b;
}

public int Multiply(int a, int b)
{
return a * b;
}
}
在本例中,ServiceContract 和 OperationContract 內容被指定到 ICalculator 接頭及其包含的方法,而不是 Calculator 類本身。但結果是相同的,因此這一版本的服務公開的服務合同與前一版本相同。像這樣使用顯式接頭稍微有點複雜,但同時也具有更大的靈活性。例如,一個類可以實現多個接頭,這意味著它也可以實現多個服務合同。通過公開多個終結點,每個終結點擁有一個不同的服務合同,一個類就可以向不同的客戶端提供不同的服務組。
最後一點:使用 ServiceContract 和 OperationContract 標記服務類還允許以 Web 服務描述語言 (WSDL) 自動產生服務合同定義。因此,可將每個 Indigo 服務合同的外部可見定義作為指定該合同中的操作的標準 WSDL 文檔來訪問。雖然本文不作講解,但直接從 WSDL 文檔創建 Indigo 服務類的做法同樣是可行的,這一方法對於實現外部定義的 WSDL 接頭十分有用。
定義資料合同
Indigo 服務類指定了一個服務合同,該服務合同定義了將向服務客戶端公開哪些方法。這些操作中的每個操作一般都將傳遞一些資料,即一個服務合同還隱含有某種資料合同,該資料合同用以描述將被交換的訊息。有些情況下,這種資料合同被作為服務合同的一部分來隱含定義。例如,在上面所示的 Calculator 類中,每個方法使用了兩個整數型輸入參數並返回一個整數。這些參數定義了此服務交換的所有資料,因此它們包含服務的資料合同。對於這種每個操作僅使用簡單類型的服務,在服務合同內隱含定義該合同的資料特性較為恰當。無需再進行任何其他操作。
但服務還可能擁有更複雜類型的參數,如結構。在這種情況下,就需要使用顯式資料合同。資料合同定義記憶體中的類型如何轉換為適合通過線路傳輸的形式,即所謂的「序列化」過程。實際上,資料合同是控制資料如何序列化的一種機制。
在 Indigo 服務類中,資料合同使用 DataContract 內容來定義。標記有 DataContract 的類、結構或其他類型都可以擁有一個或多個帶有前置 DataMember 內容的成員,指示該成員必須被包含在此類型的序列化值中。以下是一個簡單示例:
[DataContract]
struct Customer {
[DataMember] public string Name;
int public age;
[DataMember] private int CreditRating;
}
當將此 Customer 類型的實例作為一個參數在標記有 OperationContract 的方法中傳遞時,將只有那些標記有 DataMember 內容的字段(Name 和 CreditRating)被傳遞。
字段標記為 public 或 private 對該字段是否被序列化沒有影響。就像方法的情況一樣,public 和 private 關鍵字是定義此類型如何被同一應用程式中的其他對像訪問的合同的一部分。DataMember 則像 OperationContract 一樣,定義該類型如何被此類所實現的服務的客戶端訪問。兩者再次完全獨立。
關於 Indigo 合同需要強調的最後一點是,沒有任何東西預定成為服務合同或資料合同的一部分。相反,開發人員必須顯式地使用 ServiceContract 和 DataContract 內容指示哪些類型擁有 Indigo 定義的合同,然後使用 OperationContract 和 DataMember 內容顯式地指定這些類型的哪些部分向此服務的客戶端公開。其設計者的基本原則之一便是服務必須擁有顯式邊界,因此 Indigo 是一種明確選擇技術。服務要向其客戶端提供的任何事物均需在代碼中明確指定。
合同以及用於定義它們的那些內容是 Indigo 的主要特性,此處的簡短描述僅涵蓋了最顯著的部分。OperationContract 內容可用於定義「單向」操作,例如不需要應答的服務呼叫。還可通過創建「雙工」合同定義雙方均可充當客戶端和服務的交互操作,每一方均可呼叫操作並公開對方呼叫的操作。DataContract 內容同樣擁有多個選項,甚至可以使用一個稱為 MessageContract 的內容直接與 SOAP 消息進行內部交互。Indigo 提供的大部分操作均通過合同來表示,因此合同是其最基本的概念。
選擇宿主
實現 Indigo 服務的類通常編譯到庫中。按照定義,所有庫都需要執行在宿主應用程式域和 Windows 工作行程中。Indigo 提供了兩種實現服務的宿主庫的方法。一種是使用宿主應用程式域和由 Windows 啟動服務 (WAS) 提供的工作行程,而另一種是允許服務托管於執行在任意工作行程內的任何應用程式域中。本節將從 WAS 開始對兩者進行介紹。
使用 Windows 啟動服務托管服務
托管 Indigo 服務的最簡單方式就是依靠 WAS。(請注意,在 Indigo 的第一個社區技術預覽中不支持 WAS。相反,Indigo 服務可托管在 Windows Server 2003 和 Windows XP 上的 Internet 訊息服務器中,雖然在該配置中只支持通過 HTTP 傳遞的 SOAP。)使用 WAS 與使用 IIS 提供的用於 ASMS 的托管機制很相似。其中,兩者均依靠「虛擬目錄」的概念,它是 Windows 文件系統中的實際目錄路徑的一個簡短別名。
要檢視 WAS 托管如何工作,假設前面所述的兩個 Calculator 類中有一個類被編譯到名為 calc.dll 的庫中,然後放置到執行於 Windows Server 2003 上的系統的虛擬目錄 calculator 中。要指示 calc.dll 中實現的 Indigo 服務需要使用 WAS 托管,開發人員應在 Calculator 虛擬目錄中創建一個帶有 .svc(當然是表示「服務」的意思)延伸名的文件。對於我們的簡單示例,此文件可能稱為 calc.svc,其整個內容可以是:
%@Service language=c# class="Calculator" %
一旦完成這一步,且如下一節所示定義了一個終結點,則客戶端對 Calculator 服務的某個方法的請求將自動創建一個該類的實例,以執行指定的操作。該實例將執行在由 WAS 提供的標準工作行程中創建的應用程式域中。
在任意工作行程中托管服務
依靠 WAS 提供一個工作行程來托管 Indigo 服務無疑是最簡單的選擇。但應用程式經常需要從其自己的工作行程中公開服務,而不是依靠 Windows 提供的工作行程。幸運的是,這樣做並不困難。下面的示例顯示了如何創建托管前面定義的兩種 Calculator 類的工作行程。


using System.ServiceModel;
public class CalculatorHost
{
public static void Main()
{
ServiceHost s1 =
new ServiceHost();
s1.Open();
Console.Writeline("Press ENTER to end service");
Console.Readline();
}
}
由於類 CalculatorHost 包含一個 Main 方法,因此它將作為一個獨立的工作行程執行。要托管示例 Calculator 服務,此方法必須創建一個新的 ServiceHost 類的實例,在 Calculator 類中進行傳遞。(請注意,這種標準 Indigo 類屬於「泛型」,通過括住其參數的 指示。泛型是版本 2.0 的 C#、Visual Basic .NET 及其他基於 .NET Framework 2.0 的語言中的一種新語言特性。)一旦創建此類的實例,則使服務可用所需的唯一操作就是對該實例呼叫 Open 方法。這時 Indigo 將自動將來自客戶端的請求轉到 Calculator 類中相應的方法。
要使 Indigo 服務能夠處理來自其客戶端的請求,托管它的工作行程必須始終在執行。對於 WAS 托管的服務這不是問題,因為 WAS 提供的標準工作行程可以確保這一點。然而宿主應用程式則必須自己解決這個問題。在這個簡單的示例中,工作行程將按等待控制台用戶輸入的簡單機制持續執行。
定義終結點
除了在 Indigo 服務類中定義操作並指定執行這些操作的宿主工作行程,Indigo 服務還必須公開一個或多個終結點。每個終結點將指定以下三項內容:

一個「合同」名稱,指示該 Indigo 服務類通過該終結點公開哪個服務合同。一個標記有 ServiceContract 且未實現任何顯式接頭的類(例如前面第一個示例中所示的 Calculator)只能公開一個服務合同。在這種情況下,所有終結點將公開同一合同。但是,如果一個類顯式實現了兩個或多個標記有 ServiceContract 的接頭,則不同的終結點就可以公開不同的合同。

一個「位址」,指示該終結點位於何處。位址為標識一台電腦以及該電腦上的一個特定終結點的 URL。

一個「綁定」,決定如何訪問該終結點。綁定決定可以使用哪些協議組合來訪問該終結點,還決定了其他一些內容,如通信是否可靠以及可採用哪些安全機制。例如,假設一個服務的創建者希望允許客戶端使用通過 HTTP 或 TCP 傳遞的 SOAP 來訪問該服務。它們每個都是一個不同的綁定,因此該服務需要公開兩個終結點,一個擁有 SOAP-over-HTTP 綁定,另一個擁有 SOAP-over-TCP 綁定。
綁定是實現通信的關鍵部分。為了使它們更易於使用,Indigo 包含了一組預先定義好的綁定集合,其中每個綁定指定一個特定的選項組。這個集合包括:

BasicProfileHttpBinding:遵循 Web Services Interoperability Organization (WS-I) Basic Profile 1.0,該規範定義了通過 HTTP 傳遞的 SOAP。這是未顯式指定時,終結點的預定綁定方式。

BasicProfileHttpsBinding:遵循 WS-I Basic Security Profile 1.0,該規範定義了通過 HTTPS 傳遞的 SOAP。

WsHttpBinding:支持採用 WS-ReliableMessaging 的可選消息傳輸、採用 WS-Security 的安全性以及採用 WS-AtomicTransaction 的事務。此綁定允許與同樣支持這些規範的其他 Web 服務實現之間進行互操作。

WsDualHttpBinding:與 WsHttpBinding 類似,但還支持採用雙工合同的交互。使用此綁定,服務和客戶端均可接收和發送消息。

NetTcpBinding:直接通過 TCP 發送二進制編碼的 SOAP,包括對可靠消息傳輸、安全性和事務的支持。此綁定只能用於 Indigo 對 Indigo 通信。

NetNamedPipeBinding:通過命名管道發送二進制編碼的 SOAP。此綁定只能用於同一 Windows 電腦上兩個工作行程之間的 Indigo 對 Indigo 通信。

NetMsmqBinding:通過後面將要介紹的 MSMQ 發送二進制編碼的 SOAP。此綁定只能用於 Indigo 對 Indigo 通信。
http://www.microsoft.com/china/MSDN/library/windev/longhorn/art/introindigov1-005.gif
上圖顯示了前面所示第一個 Calculator 服務的一個終結點的三個元素中每個元素的示例值。服務合同的名稱為 Calculator,也就是實現該服務的類的名稱,綁定則是 BasicProfileHttpBinding。假設此服務採用 WAS 托管,安裝在前面所述的虛擬目錄 calculator 中,並執行在一台名稱為 qwickbank.com 的電腦上,則其位址可能為 http://www.qwickbank.com/calculator/calc.svc。
與合同不同,終結點不使用內容來定義。雖然可以通過編程方式創建終結點,但最通用的方式大概還是使用與該服務關聯的配置文件來實現。WAS 托管的服務使用 web.config 文件,而那些獨立托管的服務則使用與它們執行於其中的應用程式關聯的配置文件(通常為 app.config,實際文件名可能會有變化)。如果僅用於前面所示的第一個 Calculator 服務類,此配置文件可能如下所示:
一個 Indigo 應用程式實現的所有服務的配置訊息均包含在 system.serviceModel 元素內。此元素包含一個 services 元素,而後者又包含一個或多個 service 元素。這個簡單的示例僅有一個服務,因此只出現了一個 service。service 元素的 serviceType 內容標識了實現該配置所應用的服務的服務類,在本類中就是 Calculator。每個 service 元素可以包含一個或多個 endpoint 元素,其中每個元素指定一個可通過它訪問此 Indigo 服務的特定終結點。在本例中,服務僅公開了一個終結點,因此僅出現了一個 endpoint 元素。終結點合同的名稱為 Calculator,也就是實現它的類的名稱。如果此配置文件用於前面所示的第二個 Calculator 服務,即使用顯式接頭定義其服務合同的服務,則 serviceType 內容的值將不變,但 contractType 的值將替換為 ICalculator,即該顯式接頭的名稱。此處指定的綁定為 basicProfileHttpBinding,但由於它是預定設置,因此可以省略。假設 Calculator 是一個 WAS 托管的服務,則位址將自動產生,因此不需要在此配置文件中指定。

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif
[url=http://www.microsoft.com/china/MSDN/library/windev/longhorn/introindigov1.mspx#top]
創建 Indigo 客戶端
創建基本 Indigo 服務沒有什麼特別複雜的地方。創建 Indigo 客戶端則更加簡單。需要做的一切就是為服務創建一個稱為「代理」的本機替身,它連接到目標服務的某個特定終結點,然後就是通過代理呼叫該服務的操作。下圖顯示了此原理。
http://www.microsoft.com/china/MSDN/library/windev/longhorn/art/introindigov1-006.gif
創建代理需要準確知道目標終結點公開的合同,然後使用該合同的定義產生代理。在 Indigo 中,此過程是由一個稱為 svcutil 的工具完成的。如果服務採用 Indigo 實現,svcutil 可以訪問該服務的 DLL 以瞭解合同並產生代理。如果只有服務的 WSDL 定義可用,則 svcutil 可讀取它以創建代理。如果只有服務本身可用,svcutil 可通過 WS-MetadataExchange 或一條簡單的 HTTP GET 命令直接訪問它,以獲得該服務的 WSDL 接頭定義,然後產生代理。
不管它是如何產生的,客戶端均可創建該代理的一個新實例,然後通過該實例呼叫服務的方法。以下是 Calculator 類的一個客戶端的簡單示例:
using System.ServiceModel;
using Indigo.Example; // 所產生的代理類的命名空間
public class CalculatorClient
{
public static void Main()
{
CalculatorProxy p = new CalculatorProxy();
Console.WriteLine("7 + 2 = {0}", p.Add(7, 2));
Console.WriteLine("7 - 2 = {0}", p.Subtract(7, 2));
p.Close();
}
}
還有一項內容客戶端需要定義:它要呼叫操作的具體終結點。與服務一樣,客戶端必須指定終結點的合同、其綁定以及其位址,這些通常是在配置文件中完成的。實際上,如果有足夠的訊息可用,svcutil 將自動為目標服務產生適當的客戶端配置文件。

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif
[url=http://www.microsoft.com/china/MSDN/library/windev/longhorn/introindigov1.mspx#top]]

psac 2006-10-19 03:05 AM

Indigo 的其他特性
服務和客戶端的基礎知識對每個 Indigo 應用程式都很重要。但這些應用程式中大部分還將用到此技術的其他方面。本節探討 Indigo 為基於它建立的應用程式提供的一些其他特性。
控制本機行為
Indigo 的許多特性(如合同、綁定及其他)均跟服務與其客戶端之間的通信有關。但也有部分服務行為本質上是本機行為。例如,一個服務實例的生存期是如何控制的,對該實例的並發訪問是如何管理的?為了讓開發人員控制此類行為,Indigo 定義了兩個基本內容,其中每個都擁有大量內容。內容之一為 ServiceBehavior,可用於同樣標記有 ServiceContract 內容的類。另一個內容為 OperationBehavior,可用於服務類中同樣標記有 OperationContract 內容的方法。
ServiceBehavior 內容具有各種內容,共同影響服務的行為。例如,有一個內容名為 ConcurrencyMode,可用於控制對服務的並發訪問。如果設置為 Single,Indigo 在任何時候都只處理對該服務的一個客戶端請求,即服務是單線程的。如果設置為 Multiple,Indigo 在任何時候都可以處理對該服務的多個客戶端請求,每個請求執行於一個不同的線程上。與此類似,ServiceBehavior 的 InstanceMode 內容可用於控制如何創建和銷毀服務的實例。如果 InstanceMode 設置為 PerCall,將為處理每個客戶端請求創建該服務的一個新實例,然後當該請求完成時將其銷毀。而如果設置為 PrivateSession,則將使用服務的同一實例處理來自某個客戶端的所有請求。
例如,假設其創建者決定 Calculator 類應當是多線程的,並且將使用同一實例處理來自某個客戶端的每個呼叫。類的定義將如下所示:
using System.ServiceModel;
[ServiceContract]
[ServiceBehavior(
ConcurrencyMode=Multiple,
InstanceMode=PrivateSession)]
class Calculator { ... }
與此類似,OperationBehavior 內容上的內容允許控制實現該操作的方法的模擬行為、其事務要求(將在後面講述)以及其他內容。
消息傳輸選項
本文中所示的簡單示例採用了同步遠端過程呼叫 (PRC) 方法來實現客戶端/服務交互。Indigo 支持這種選擇,但它不是唯一的選擇。SOAP 是一種面向消息的協議,這意味著它可以支持各種編程模型。實際上,Indigo 支持多種可能,包括以下選擇:

傳統 RPC,使用帶有類型化參數的阻塞呼叫;

異步 RPC,使用帶有類型化參數的非阻塞呼叫;

傳統消息傳輸,使用帶有一個消息參數的非阻塞呼叫;




基於消息的 RPC,使用帶有一個消息參數的阻塞呼叫。
儘管絕大多數分佈式應用程式需要,但 SOAP 規範未對可靠性進行任何規定。確保可靠性的一種通用方法就是只在點對點情況下使用 SOAP,依靠 TCP 來保證請求和響應的傳送。在有些情況下,這樣做就已經足夠,使用 BasicProfileHttpBinding 時就是這樣。
但仍有大量的情況,這樣做還不夠。例如,如果通過多個 SOAP 中間方訪問服務會怎麼樣?由 TCP 提供的可靠性保證在這種情況下是無法確保端對端可靠性的。為了解決這個問題,Indigo 採用了 WS-ReliableMessaging 規範。通過選擇一個使用 WS-ReliableMessaging 的綁定(如 WsHttpBinding),服務及其客戶端可以在通過多重 SOAP 中間方的情況下也能保證可靠的端對端通信。
安全性
在網路上公開服務,即使是在內部網路上,一般也會需要某種程度的安全性。服務如何確定客戶端的身份?如何防止發送到服務的消息和從服務接收的消息被惡意更改和竊取?如何使對服務的訪問僅限於那些被授權使用它的客戶端?如果沒有解決這些問題的解決方案,公開大量服務就會非常危險。而構建安全的應用程式則會使事情複雜化。理想的情況,應當是採用簡單直接的方式應對通用的安全情況,同時對有需要的應用程式採取更精細的控制。
為達到這一目的,Indigo 提供了身份驗證、消息完整性、消息保密和授權等核心安全功能。Indigo 實現這些功能中前三個功能的方法主要依靠綁定,開發人員的選擇有:

選擇一種支持安全性的標準綁定。例如,只需要基於傳輸的安全性的應用程式可以採用 BasicProfileHttpsBinding 之類的綁定。這種方法對於那些不需經過任何中間方(如 HTTP 代理或其他 SOAP 節點)而直接從客戶端到達服務的請求已經足夠。需要確保經過多重 SOAP 中間方的消息的端對端安全性的應用程式,則可以採用支持 WS-Security 的綁定,如 WsHttpBinding。

選擇一種支持安全性的標準綁定,然後通過改變一個或多個預定值對其進行自定義。例如,如果需要,可以更改一些綁定(如 WsHttpBinding)所採用的身份驗證機制。

創建一個準確提供開發人員需要的安全特性的自定義綁定。這種方法不適合害怕繁瑣者,但確實是一些高階情況的正確方法。

選擇一種不支持安全性的標準綁定,如 BasicProfileHttpBinding。雖然採用不支持安全性的綁定通常是件危險的事,但在有些情況下這仍然是最佳選擇。
Indigo 服務還可以控制授權哪些客戶端使用該服務。大體而言,Indigo 只支持 .NET Framework 中已有的授權機制。例如,服務可以使用標準 PrincipalPermission 內容定義允許哪些客戶端訪問它。
讓開發人員構建安全的應用程式而又避免使他們面對極大的複雜性,已被證明極具挑戰性。通過為大多數通用情況提供簡單直接的方法,同時為更為複雜的情況提供精細的控制,Indigo 正在以一種可行且有效的方式實現這一目標。
事務
處理事務是構建許多業務邏輯的一個重要方面。但在面向服務的世界中使用事務卻很麻煩。分佈式事務假設參與各方之間存在高階別的信任,因此一般不適合跨服務邊界的事務。但仍然存在一些情況,將事務和服務綁定起來可以起到很好的作用,因此 Indigo 包含了對這一重要的應用程式設計特性的支持。
.NET Framework 2.0 中的事務
Indigo 中的事務支持構建在 .NET Framework 2.0 提供的機制上。這一即將發佈的版本中包含 System.Transactions,這是一種新的命名空間,完全專注於控制事務性行為。開發人員將最常將 System.Transactions 與某個「執行上下文」配合使用,這是 .NET Framework 2.0 中的一種新結構。執行上下文允許指定適用於包含在一個定義範圍內的所有代碼的通用訊息,如事務。以下是應用程式如何使用該方法將一組操作組合成一個事務的示例:
using System.Transactions;
using (TransactionScope ts = new TransactionScope(Required)) {
// 執行操作,例如更新不同的 DBMS
ts.Complete();
}
位於 using 塊內的所有操作將成為一個事務的一部分,因為它們共享其所定義的事務執行上下文。本例中的最後一行,呼叫 TransactionScope 的 Complete 方法,將導致退出該塊時請求提交該事務。此方法還提供了內置的錯誤處理,出現異常時會停止事務。
如本例那樣,為新 TransactionScope 指定 Required,意味著此代碼將總是作為事務的一部分執行:若其呼叫方的事務存在,則加入之;若不存在,則創建一個新的。如同在企業服務中一樣,還可以指定其他選項,包括 RequiresNew、Supported 和 NotSupported。
與企業服務及其前任 MTS 和 COM+ 不同,Systems.Transactions 完全專注於控制事務性行為。例如,事務與對象的內部狀態之間不需要存在連接。企業服務要求一個對像在其結束事務時被停用,但 Systems.Transactions 則沒有這種需要。由於 Indigo 建立在 Systems.Transaction 上,因此 Indigo 應用程式也是獨立管理事務和對像狀態的。
Indigo 中的事務
Indigo 應用程式可以顯式使用 System.Transactions,也可以隱式使用依賴於 System.Transactions 的內容來控制事務。一種選擇是,對位於標記有 ServiceContract 內容的類中的方法,使用前面所述的 TransactionScope 將其工作包裝到一個事務中。例如,該方法可以包含一個 using 語句,建立一個事務範圍,然後在該事務內更新兩個獨立的資料庫。
服務的方法還可以使用內容來控制事務性行為。除了顯式使用 System.Transactions 外,服務還可以使用前面所述的 OperationBehavior 內容。下面是一個示例:
using System.ServiceModel;
[ServiceContract]
class XactOperations
{
[OperationContract]
public int Add(int value1, int value2)
{
return value1 + value2;
}
[OperationContract]
[OperationBehavior(RequireTransaction=true,
AutoCompleteTransaction=true)]
int Update(int value1, int value2)
{
// 將 value1 和 value2 插入到
// 兩個不同的資料庫中
}
}
本例中的第一個方法 Add 沒有使用事務,因此其簡單操作將和以前一樣發生。但是第二個方法 Update 前置有 OperationBehavior 內容,同時 RequireTransaction 內容被設置為 true。因此,該方法中完成的所有工作將發生在一個事務內,就像其位於前面所示的 using 塊事務範圍內一樣。同時由於還指定了 AutoCompleteTransaction 內容,因此如果不出現異常,事務將自動提交。
如果呼叫此方法的客戶端不是執行在事務內,則 Update 方法將在其自己的事務內執行,沒有其他選擇。但這裡假定客戶端在呼叫 Update 時已經是某個現有事務的一部分。Update 方法所完成的工作是否會加入客戶端的事務,或其是否仍執行在自己獨立的事務中?答案取決於此服務能否接受由客戶端傳遞的「事務上下文」,這是通過 OperationContract 內容的 TransactionFlowAllowed 內容控制的一個選項。如果服務中的一個方法未附加 TransactionFlowAllowed 內容,如上例所示,該方法內所完成的工作將永遠不會加入現有事務中。而如果此內容存在,則方法將能夠加入其客戶端的事務中。
值得強調的還有,基於 Indigo 的應用程式可以參與包含執行於非 Indigo 平台上的應用程式的事務。例如,一個 Indigo 應用程式可以啟動一個事務,更新本機 SQL Server 資料庫中的記錄,然後呼叫在一個 J2EE 應用程式服務器上實現的 Web 服務,更新另一個資料庫中的記錄。如果該服務是事務型的,且其執行的平台支持 WS-AtomicTransaction 規範,則兩個資料庫的更新可以是同一事務的一部分。與安全性和可靠消息傳輸相似,Indigo 事務工作在 Web 服務導致的異質環境中。
隊列
使用綁定(如 WsHttpBinding),Indigo 應用程式可以與基於 Indigo 或任何其他實現了 WS-ReliableMessaging 的 Web 服務平台上的另一個應用程式進行可靠通信。但儘管此規範定義的技術確保了 SOAP 消息的可靠端對端傳送,它卻不能實現消息隊列。使用隊列,應用程式只需將消息發送到隊列,而不是直接發送到另一個應用程式。當接收應用程式準備好時,它就可以從隊列讀取消息並進行處理。啟用這種交互很有用,例如,當消息的發送方和接收方可能不是同時執行的時候。
因此,Indigo 提供了對消息隊列的支持。這種支持建立在 MSMQ 之上,這意味著與 Indigo 的大多數其他特性(如可靠消息傳輸、安全性和事務等)不同,Indigo 隊列並不支持跨供應商邊界直接進行互操作(儘管可以使用 MSMQ-MQSeries 橋)。
要使用 Indigo 隊列,開發人員需要創建一個標準的 Indigo 服務類,照常使用 ServiceContract 進行標記。但位於此類的服務合同中的操作具有一些限制。特別是,它們必須全部標記為單向,即不返回任何響應。這並不奇怪,因為呼叫排隊的操作是將消息發送到一個隊列中,而不是其最終接收方,因此等待立即響應沒有任何意義。與其他任何服務類一樣,隊列 Indigo 應用程式也需要公開終結點。這些終結點使用了一些綁定,例如:NetMsmqBinding,允許與其他隊列 Indigo 應用程式進行通信;或 MsmqIntegrationBinding,允許一個隊列 Indigo 應用程式與不使用 Indigo 的標準 MSMQ 應用程式進行互操作。Indigo 隊列還支持隊列環境的其他傳統特性,如「死信」隊列和有毒消息的處理等。
隊列對絕大多數分佈式應用程式都是正確之選。Indigo 對這種通信方式的支持是開發人員無需瞭解完全獨立的隊列技術即可構建隊列應用程式。

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif
返回頁首
共存和移植
Indigo 代表在可靠、安全和事務型服務時代創建分佈式應用程式的一種新型方法。然而,需要理解的一個關鍵在於,安裝 Indigo 不會破壞任何現有的應用程式。執行於 ASMX、.NET Remoting 以及 Indigo 包含其功能的其他技術上的當前代碼,均可以繼續執行,因而不需要移植到 Indigo。但對於那些擁有對當前 Microsoft 技術的投資的機構,仍然存在一個明顯的問題:採用 Indigo 之前的技術編寫的現有代碼會發生什麼情況?
對於因 Indigo 的出現而前途深受影響的每一項當前技術,開發人員需要理解以下兩件事:基於此技術的應用程式是否將與基於 Indigo 的應用程式進行互操作,將應用程式從此技術移植到 Indigo 環境需要完成的工作量有多大?以下是對每項技術如何解決這些問題的簡短描述:

ASP.NET Web 服務 (ASMX):採用 ASMX 建立的 Web 服務會與 Indigo 應用程式進行互操作。由於 ASP.NET Web 服務和 Indigo 兩者均支持標準 SOAP,因此這不應該有什麼奇怪之處。將現有 ASP.NET Web 服務代碼移植到 Indigo 需要進行一些機械性工作,但仍然簡單直接。兩種技術的基本結構十分相似,因此大體上只有內容和配置文件需要改變。但更高階的特性(如 SOAP 擴展等)將無法直接移植到 Indigo。相反,需要使用 Indigo 提供的擴展選項對它們進行重寫。

.NET Remoting:基於 .NET Remoting 的應用程式不會與基於 Indigo 的應用程式進行互操作,它們的傳輸協議不相容。將現有 .NET Remoting 代碼移植到 Indigo 需要進行一些工作,但仍然是可能實現的。但是如果一個人建立了自定義的 .NET Remoting 擴展(如通道和接收),將會發現該代碼無法映射到新環境。Indigo 中存在相似的擴展,但實現的接頭與 .NET Remoting 中實現的接頭不匹配。

企業服務:為了使現有的企業服務應用程式能夠與 Indigo 客戶端(或其他基於 Web 服務的軟件)進行互操作,開發人員可以精確指定該應用程式中的哪些接頭應當公開。使用 Indigo 提供的一個工具,可以自動為那些接頭創建服務合同,並通過 Indigo 公開。對於那些不基於 .NET Framework 的企業服務應用程式的現有客戶端(以及其他純粹基於 COM 的客戶端),提供了一個 Indigo 名字對象,以允許直接訪問 Web 服務。將現有的企業服務應用程式移植為直接在 Indigo 上執行所需的工作與移植 ASMX 應用程式所需的工作類似。儘管不是全部,但大部分工作都是對內容和命名空間的直接機械的修改。

Web 服務增強 (WSE):WSE 是 Microsoft 為實現需要 WS-* 規範所提供的部分或全部功能的 Web 服務應用程式而採用的一種戰術性解決方案。基於 WSE 1.0 和 WSE 2.0 的應用程式不會與基於 Indigo 的應用程式進行互操作。但基於將在 Indigo 發佈之前交付的 WSE 3.0 的應用程式將與 Indigo 應用程式進行互操作。對於可移植性,情況與已經介紹的技術類似:將現有代碼從 WSE 移植到 Indigo 需要進行一定的工作,但對於使用最後 WSE 版本編寫的應用程式這一工作將大大減小。

MSMQ:由於 Indigo 的隊列功能基於 MSMQ,因此基於 Indigo 的隊列應用程式可以與直接基於 MSMQ 的隊列應用程式進行互操作。將應用程式從初始 .NET Framework 提供的 System.Messaging 命名空間進行移植需要一些工作,因為這種早期接頭與 Indigo 所提供的接頭不同。一旦 Indigo 交付,開發人員就應使用它而不是 System.Messaging 來創建大多數基於 MSMQ 的隊列應用程式。
在 Indigo 面世之前,對不需要隊列的分佈式 .NET 應用程式而言,最佳技術選擇大概就是 ASMX。它使用簡單,同時提供了移植到 Indigo 的最平滑的途徑。企業服務對需要其提供的特性(如分佈式事務)的應用程式也很重要,但 MSMQ 仍然是隊列應用程式的正確選擇。而 .NET Remoting 則應主要用於同一工作行程中的兩個應用程式域之間的通信。對其他大部分情況下的直接應用程式對應用程式通信,ASMX 是一種較好的選擇。
引入新軟件總是會對已經存在的東西有影響。通過提供構建面向服務應用程式的通用基礎,Indigo 為開發人員提供了一種更簡單、更統一的平台。儘管這種改變會引起一些痛苦,但 Indigo 創建者們的目標是使這種轉換盡可能平滑和簡單。

http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif
返回頁首
結論
Indigo 代表了在開發人員創建軟件的方式方面的一項重大進步。隨著面向服務的應用程式越來越普遍,Indigo 將成為 Windows 軟件開發人員的主流技術。其他 Microsoft 產品也將轉而利用 Indigo 所帶來的優點。例如 BizTalk Server,將在 BizTalk Server 2006 發佈後的某個時候加入對 Indigo 作為一種通信選項的支持。由於 Indigo 為面向服務的軟件提供了一種標準基礎,因此它將成為大部分 Windows 通信的基礎。
這一技術的影響勢必不會小。任何人要在 Windows 上構建分佈式應用程式,特別是那些必須與其他平台上的應用程式進行互操作的應用程式,都應當給予密切關注。Indigo 將極大地改變他們的世界。
關於作者
David Chappell 是位於美國加利福尼亞州舊金山市的 Chappell & Associates (http


所有時間均為台北時間。現在的時間是 08:42 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1