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

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

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

開(kāi)通VIP
匯編語(yǔ)言

匯編語(yǔ)言和CPU以及內存,端口等硬件知識是連在一起的. 這也是為什么匯編語(yǔ)言沒(méi)有通用性的原因. 下面簡(jiǎn)單講講基本知識(針對INTEL x86及其兼容機)
============================
x86匯編語(yǔ)言的指令,其操作對象是CPU上的寄存器,系統內存,或者立即數. 有些指令表面上沒(méi)有操作數, 或者看上去缺少操作數, 其實(shí)該指令有內定的操作對象, 比如push指令, 一定是對SS:ESP指定的內存操作, 而cdq的操作對象一定是eax / edx.

在匯編語(yǔ)言中,寄存器用名字來(lái)訪(fǎng)問(wèn). CPU 寄存器有好幾類(lèi), 分別有不同的用處:

1. 通用寄存器:
EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP(這個(gè)雖然通用,但很少被用做除了堆棧指針外的用途)

這些32位可以被用作多種用途,但每一個(gè)都有"專(zhuān)長(cháng)". EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器. EBX 是"基地址"(base)寄存器, 在內存尋址時(shí)存放基地址. ECX 是計數器(counter), 是重復(REP)前綴指令和LOOP指令的內定計數器. EDX是...(忘了..哈哈)但它總是被用來(lái)放整數除法產(chǎn)生的余數. 這4個(gè)寄存器的低16位可以被單獨訪(fǎng)問(wèn),分別用AX,BX,CX和DX. AX又可以單獨訪(fǎng)問(wèn)低8位(AL)和高8位(AH), BX,CX,DX也類(lèi)似. 函數的返回值經(jīng)常被放在EAX中.

ESI/EDI分別叫做"源/目標索引寄存器"(source/destination index),因為在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目標串.

EBP是"基址指針"(BASE POINTER), 它最經(jīng)常被用作高級語(yǔ)言函數調用的"框架指針"(frame pointer). 在破解的時(shí)候,經(jīng)??梢钥匆?jiàn)一個(gè)標準的函數起始代碼:

push ebp ;保存當前ebp
mov ebp,esp ;EBP設為當前堆棧指針
sub esp, xxx ;預留xxx字節給函數臨時(shí)變量.
...

這樣一來(lái),EBP 構成了該函數的一個(gè)框架, 在EBP上方分別是原來(lái)的EBP, 返回地址和參數. EBP下方則是臨時(shí)變量. 函數返回時(shí)作 mov esp,ebp/pop ebp/ret 即可.

ESP 專(zhuān)門(mén)用作堆棧指針.

2. 段寄存器:
CS(Code Segment,代碼段) 指定當前執行的代碼段. EIP (Instruction pointer, 指令指針)則指向該段中一個(gè)具體的指令. CS:EIP指向哪個(gè)指令, CPU 就執行它. 一般只能用jmp, ret, jnz, call 等指令來(lái)改變程序流程,而不能直接對它們賦值.
DS(DATA SEGMENT, 數據段) 指定一個(gè)數據段. 注意:在當前的計算機系統中, 代碼和數據沒(méi)有本質(zhì)差別, 都是一串二進(jìn)制數, 區別只在于你如何用它. 例如, CS 制定的段總是被用作代碼, 一般不能通過(guò)CS指定的地址去修改該段. 然而,你可以為同一個(gè)段申請一個(gè)數據段描述符"別名"而通過(guò)DS來(lái)訪(fǎng)問(wèn)/修改. 自修改代碼的程序常如此做.
ES,FS,GS 是輔助的段寄存器, 指定附加的數據段.
SS(STACK SEGMENT)指定當前堆棧段. ESP 則指出該段中當前的堆棧頂. 所有push/pop 系列指令都只對SS:ESP指出的地址進(jìn)行操作.

3. 標志寄存器(EFLAGS):

該寄存器有32位,組合了各個(gè)系統標志. EFLAGS一般不作為整體訪(fǎng)問(wèn), 而只對單一的標志位感興趣. 常用的標志有:

進(jìn)位標志C(CARRY), 在加法產(chǎn)生進(jìn)位或減法有借位時(shí)置1, 否則為0.
零標志Z(ZERO), 若運算結果為0則置1, 否則為0
符號位S(SIGN), 若運算結果的最高位置1, 則該位也置1.
溢出標志O(OVERFLOW), 若(帶符號)運算結果超出可表示范圍, 則置1.

JXX 系列指令就是根據這些標志來(lái)決定是否要跳轉, 從而實(shí)現條件分枝. 要注意,很多JXX 指令是等價(jià)的, 對應相同的機器碼. 例如, JE 和JZ 是一樣的,都是當Z=1是跳轉. 只有JMP 是無(wú)條件跳轉. JXX 指令分為兩組, 分別用于無(wú)符號操作和帶符號操作. JXX 后面的"XX" 有如下字母:

無(wú)符號操作: 帶符號操作:
A = "ABOVE", 表示"高于" G = "GREATER", 表示"大于"
B = "BELOW", 表示"低于" L = "LESS", 表示"小于"
C = "CARRY", 表示"進(jìn)位"或"借位" O = "OVERFLOW", 表示"溢出"
S = "SIGN", 表示"負"
通用符號:
E = "EQUAL" 表示"等于", 等價(jià)于Z (ZERO)
N = "NOT" 表示"非", 即標志沒(méi)有置位. 如JNZ "如果Z沒(méi)有置位則跳轉"
Z = "ZERO", 與E同.

如果仔細想一想,就會(huì )發(fā)現 JA = JNBE, JAE = JNB, JBE = JNA, JG = JNLE, JGE= JNL, JL= JNGE, ....

4. 端口

端口是直接和外部設備通訊的地方。外設接入系統后,系統就會(huì )把外設的數據接口映射到特定的端口地址空間,這樣,從該端口讀入數據就是從外設讀入數據,而向外設寫(xiě)入數據就是向端口寫(xiě)入數據。當然這一切都必須遵循外設的工作方式。端口的地址空間與內存地址空間無(wú)關(guān),系統總共提供對64K個(gè)8位端口的訪(fǎng)問(wèn),編號0-65535. 相鄰的8位端口可以組成成一個(gè)16位端口,相鄰的16位端口可以組成一個(gè)32位端口。端口輸入輸出由指令I(lǐng)N,OUT,INS和OUTS實(shí)現,具體可參考匯編語(yǔ)言書(shū)籍。

 

 

匯編語(yǔ)言的準備知識--給初次接觸匯編者(2)

匯編指令的操作數可以是內存中的數據, 如何讓程序從內存中正確取得所需要的數據就是對內存的尋址.

INTEL 的CPU 可以工作在兩種尋址模式:實(shí)模式和保護模式. 前者已經(jīng)過(guò)時(shí),就不講了, WINDOWS 現在是32位保護模式的系統, PE 文件就基本是運行在一個(gè)32位線(xiàn)性地址空間, 所以這里就只介紹32位線(xiàn)性空間的尋址方式.

其實(shí)線(xiàn)性地址的概念是很直觀(guān)的, 就想象一系列字節排成一長(cháng)隊,第一個(gè)字節編號為0, 第二個(gè)編號位1, .... 一直到4294967295(十六進(jìn)制FFFFFFFF,這是32位二進(jìn)制數所能表達的最大值了). 這已經(jīng)有4GB的容量! 足夠容納一個(gè)程序所有的代碼和數據. 當然, 這并不表示你的機器有那么多內存. 物理內存的管理和分配是很復雜的內容, 初學(xué)者不必在意, 總之, 從程序本身的角度看, 就好象是在那么大的內存中.

在INTEL系統中, 內存地址總是由"段選擇符:有效地址"的方式給出.段選擇符(SELECTOR)存放在某一個(gè)段寄存器中, 有效地址則可由不同的方式給出. 段選擇符通過(guò)檢索段描述符確定段的起始地址, 長(cháng)度(又稱(chēng)段限制), 粒度, 存取權限, 訪(fǎng)問(wèn)性質(zhì)等. 先不用深究這些, 只要知道段選擇符可以確定段的性質(zhì)就行了. 一旦由選擇符確定了段, 有效地址相對于段的基地址開(kāi)始算. 比如由選擇符1A7選擇的數據段, 其基地址是400000, 把1A7 裝入DS中, 就確定使用該數據段. DS:0 就指向線(xiàn)性地址400000. DS:1F5278 就指向線(xiàn)性地址5E5278. 我們在一般情況下, 看不到也不需要看到段的起始地址, 只需要關(guān)心在該段中的有效地址就行了. 在32位系統中, 有效地址也是由32位數字表示, 就是說(shuō), 只要有一個(gè)段就足以涵蓋4GB線(xiàn)性地址空間, 為什么還要有不同的段選擇符呢? 正如前面所說(shuō)的, 這是為了對數據進(jìn)行不同性質(zhì)的訪(fǎng)問(wèn). 非法的訪(fǎng)問(wèn)將產(chǎn)生異常中斷, 而這正是保護模式的核心內容, 是構造優(yōu)先級和多任務(wù)系統的基礎. 這里有涉及到很多深層的東西, 初學(xué)者先可不必理會(huì ).

有效地址的計算方式是: 基址+間址*比例因子+偏移量. 這些量都是指段內的相對于段起始地址的量度, 和段的起始地址沒(méi)有關(guān)系. 比如, 基址=100000, 間址=400, 比例因子=4, 偏移量=20000, 則有效地址為:

100000+400*4+20000=100000+1000+20000=121000. 對應的線(xiàn)性地址是400000+121000=521000. (注意, 都是十六進(jìn)制數).

基址可以放在任何32位通用寄存器中, 間址也可以放在除ESP外的任何一個(gè)通用寄存器中. 比例因子可以是1, 2, 4 或8. 偏移量是立即數. 如: [EBP+EDX*8+200]就是一個(gè)有效的有效地址表達式. 當然, 多數情況下用不著(zhù)這么復雜, 間址,比例因子和偏移量不一定要出現.

內存的基本單位是字節(BYTE). 每個(gè)字節是8個(gè)二進(jìn)制位, 所以每個(gè)字節能表示的最大的數是11111111, 即十進(jìn)制的255. 一般來(lái)說(shuō), 用十六進(jìn)制比較方便, 因為每4個(gè)二進(jìn)制位剛好等于1個(gè)十六進(jìn)制位, 11111111b = 0xFF. 內存中的字節是連續存放的, 兩個(gè)字節構成一個(gè)字(WORD), 兩個(gè)字構成一個(gè)雙字(DWORD). 在INTEL架構中, 采用small endian格式, 即在內存中,高位字節在低位字節后面. 舉例說(shuō)明:十六進(jìn)制數803E7D0C, 每?jì)晌皇且粋€(gè)字節, 在內存中的形式是: 0C 7D 3E 80. 在32位寄存器中則是正常形式,如在EAX就是803E7D0C. 當我們的形式地址指向這個(gè)數的時(shí)候,實(shí)際上是指向第一個(gè)字節,即0C. 我們可以指定訪(fǎng)問(wèn)長(cháng)度是字節, 字或者雙字. 假設DS EDX]指向第一個(gè)字節0C:

mov AL, byte ptr DS EDX] ;把字節0C存入AL
mov AX, word ptr DS EDX] ;把字7D0C存入AX
mov EAX, dword ptr DS EDX] ;把雙字803E7D0C存入EAX

在段的屬性中,有一個(gè)就是缺省訪(fǎng)問(wèn)寬度.如果缺省訪(fǎng)問(wèn)寬度為雙字(在32位系統中經(jīng)常如此),那么要進(jìn)行字節或字的訪(fǎng)問(wèn),就必須用byte/word ptr顯式地指明.

缺省段選擇:如果指令中只有作為段內偏移的有效地址,而沒(méi)有指明在哪一個(gè)段里的時(shí)候,有如下規則:

如果用ebp和esp作為基址或間址,則認為是在SS確定的段中;
其他情況,都認為是在DS確定的段中。

如果想打破這個(gè)規則,就必須使用段超越前綴。舉例如下:

mov eax, dword ptr [edx] ;缺省使用DS,把DS EDX]指向的雙字送入eax
mov ebx, dword ptr ES EDX] ;使用ES:段超越前綴,把ES EDX]指向的雙字送入ebx

堆棧:

堆棧是一種數據結構,嚴格地應該叫做“棧”。“堆”是另一種類(lèi)似但不同的結構。SS 和 ESP 是INTEL對棧這種數據結構的硬件支持。push/pop指令是專(zhuān)門(mén)針對棧結構的特定操作。SS指定一個(gè)段為棧段,ESP則指出當前的棧頂。push xxx 指令作如下操作:

把ESP的值減去4;
把xxx存入SS ESP]指向的內存單元。

這樣,esp的值減小了4,并且SS ESP]指向新壓入的xxx. 所以棧是“倒著(zhù)長(cháng)”的,從高地址向低地址方向擴展。pop yyy 指令做相反的操作,把SS ESP]指向的雙字送到yyy指定的寄存器或內存單元,然后把esp的值加上4。這時(shí),認為該值已被彈出,不再在棧上了,因為它雖然還暫時(shí)存在在原來(lái)的棧頂位置,但下一個(gè)push操作就會(huì )把它覆蓋。因此,在棧段中地址低于esp的內存單元中的數據均被認為是未定義的。

最后,有一個(gè)要注意的事實(shí)是,匯編語(yǔ)言是面向機器的,指令和機器碼基本上是一一對應的,所以它們的實(shí)現取決于硬件.有些看似合理的指令實(shí)際上是不存在的,比如:

mov DS edx], ds ecx] ;內存單元之間不能直接傳送
mov DS, 1A7 ;段寄存器不能直接由立即數賦值
mov EIP, 3D4E7 ;不能對指令指針直接操作.

 


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
探索Windows的內部機制所需的基礎 [轉]

索Windows的內部機,分析Windows各種系統機能的實(shí)現方式,并不那么難。只要有一定的基礎就可以開(kāi)始這方面的學(xué)習。以我的學(xué)習經(jīng)歷來(lái)說(shuō),我覺(jué)得在開(kāi)始深入學(xué)習Windows之前,最好有如下的基礎:

1.       熟練使用C語(yǔ)言   你至少要對C中的指針了如指掌,知道如何使用指針訪(fǎng)問(wèn)數組。知道數組并不是僅可通過(guò)下標來(lái)訪(fǎng)問(wèn)的。如果你看過(guò)很多遍《C缺陷和陷阱》并認為這本書(shū)很棒。那就太好了。

 

 

2.       一定的匯編基礎   了解基本的匯編語(yǔ)句,對x86架構的匯編指令有基本的了解。如果在學(xué)校認真學(xué)習過(guò)匯編語(yǔ)言這門(mén)課,那么就足夠了。在深入學(xué)習Windows時(shí),你會(huì )遇到不少匯編代碼,很多時(shí)候你需要使用一些工具來(lái)反編譯一些東西,此時(shí)你匯編水平的高低就直接有影響了。

 

 

3.       對Windows API很熟悉 可以直接用API開(kāi)發(fā)小規模的程序,了解Windows的消息機制,至少要看過(guò)《Windows程序設計》(上、下),如果深入學(xué)習過(guò)《Windows核心編程》那就更好。

 

 

4.       掌握基本的數據結構   至少應該達到能很容易的用C實(shí)現一個(gè)雙向鏈表吧?基本上掌握了《數據結構》這門(mén)課,就差不多了。否則,學(xué)習中遇到的很多復雜結構,將會(huì )使你陷入云霧里,不知如何下手。

 

 

5.       學(xué)習過(guò)《操作系統》 對處理器調度、虛擬內存、I/O設備管理有基本的認識。知道什么是中斷,引入中斷的目的對CPU的工作方式有基本了解。這門(mén)課算是總的理論基礎課了。你對這門(mén)課的掌握程度將直接影響你的學(xué)習進(jìn)度,尤其是你要看《Windows Internals 4th》這本書(shū)時(shí)。

 

 

6.       對面向對象有一定的了解  

 

 

上面是一些基本的硬性要求,下面的是一些軟性要求:

1.       要經(jīng)常問(wèn):為什么?   沒(méi)有質(zhì)疑的精神,探索從何而言?

2.       要有耐心   學(xué)習是一個(gè)較長(cháng)的過(guò)程,探索Windows內部時(shí),有時(shí)確實(shí)讓人很有挫折感,這時(shí)千萬(wàn)不要急躁,耐心才能保證你終有所成。

3.       要細心     這個(gè)。。。。不用說(shuō)了吧?

4.       要多思考   不要把書(shū)中內容當作金科玉律。

5.       要多總結   這樣知識才能變成自己的。

 

 

當然,有一本好書(shū),也是必須的。我推薦如下:

《Inside Windows 2000》或者《Windows Internals 4th》

《Undocumented Windows 2000 Secrets》

 

 

或許有人認為沒(méi)有必要探索Windows的內部機制,這個(gè)問(wèn)題仁者見(jiàn)仁、智者見(jiàn)智,不過(guò)我相信你如果對Windows的內部機制有很深的了解,那么你一定能寫(xiě)出更高效、更能利用系統優(yōu)勢的程序來(lái)。并且,當程序出現Bug時(shí),我相信你更有把握解決它們。知其然,而不知其所以然的感覺(jué),確實(shí)很糟J

 

 

上述僅是個(gè)人所見(jiàn),不足之處還請多多指教。

IMaxSoft 發(fā)表于2005-05-27 9:39 AM
還有一點(diǎn),熟練編寫(xiě)WDM驅動(dòng),熟練使用SoftIce,Windbg,
IDA等調試反匯編工具,深厚的匯編功底,HOHO


baiyuanfan 發(fā)表于2005-06-01 11:57 AM
IA32 ASM非常重要,還要大致知道C如何被編譯為ASM


jg 發(fā)表于2005-06-07 4:49 PM
要看你想要在windows上面作甚么,如果是用戶(hù)模式寫(xiě)一些小的開(kāi)發(fā),又根本不在意性能,我覺(jué)得沒(méi)有必要了解細節,不如花時(shí)間在別的地方。但如果你需要寫(xiě)驅動(dòng),或者寫(xiě)服務(wù)器上的東東,就需要了解你所關(guān)心的細節。但我的體會(huì )是光靠看一兩本書(shū)是根本沒(méi)用的,真正寫(xiě)起東西來(lái)怎么都不靈,在微軟不同的build之間的差別都很大,很都認為應該可以work的東西就是不行,在微軟的文檔里又找不到細節,難道真的要連上windbg一個(gè)一個(gè)的看數據結構。linux也有同樣的問(wèn)題,盡管你可以看代碼,可是又有幾個(gè)人有時(shí)間看完你需要了解的那部分代碼呢?


Kendiv 發(fā)表于2005-06-07 6:05 PM
只要在Windows上開(kāi)發(fā)涉及系統層的東西,我認為還是需要了解系統整體的運行機理的,要知道系統的各個(gè)組件之間有著(zhù)千絲萬(wàn)縷的聯(lián)系。在對整體有了一定的了解后,在根據具體需要進(jìn)行深入挖掘。Windows個(gè)版本之間的差別肯定是存在的,有時(shí)即使打了個(gè)補丁,可能就會(huì )有很大不同了。但,這些只是表面而已,很多本質(zhì)的東西還是一致的。要不然也不會(huì )有操作系統這門(mén)課了,即使Linux很多東西與Windows也是一致的。如果只是開(kāi)發(fā)用戶(hù)態(tài)的小東西,那么VB、Delphi就足夠了。確實(shí)用不著(zhù)如此深入。不過(guò),我這里的東西不是給這方面的人準備的。這些是給那些永遠喜歡問(wèn)為什么的朋友準備的。

 

 

 

 

 

 

 

 

 

 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
轉帖]微軟事務(wù)處理服務(wù)(MTS)介紹

  微軟事務(wù)處理服務(wù)(MTS)代表了一類(lèi)新的產(chǎn)品,它使開(kāi)發(fā)和布置高性能的、可變尺度的、可靠的分布式應用程序更加容易。這是通過(guò)將以組件為基礎的開(kāi)發(fā)和布置技術(shù)與事務(wù)處理控制器的可變尺度性、可靠性結合起來(lái)而實(shí)現的。

  為什么使用微軟事務(wù)處理服務(wù)?

  微軟事務(wù)處理服務(wù)被設計用于使的構造 高性能的、可變尺度的、可靠的internet和intranet應用程序更加容易。多年以前,我們就能構造這些應用程序了,但它所要求的才賦和投資超出了大多數公司的能力。

  MTS以已被證實(shí)的事務(wù)處理方法為基礎,但它的重要性超出了事務(wù)處理控制器的領(lǐng)域,它對分布式、以組件為基礎的服務(wù)器應用程序定義了一個(gè)簡(jiǎn)單的 編程模式和執行環(huán)境。

  應用程序由能夠提供商業(yè)應用功能的微軟ActiveX組件組合而成。這些組件似乎被開(kāi)發(fā)用于單用戶(hù)。通過(guò)在MTS環(huán)境下安裝這些組件來(lái)執行它們,服務(wù)器應用程序能高性能的、可靠的自動(dòng)改變尺度以支持同時(shí)存在的多客戶(hù)。

  MTS 被特別設計用于允許服務(wù)器應用程序在一個(gè)很大的用戶(hù)范圍內變化(從小的單用戶(hù)系統到高容量的網(wǎng)絡(luò )服務(wù)器)。它還具有通常只有高檔的事務(wù)處理系統才具有的魯棒性和完整性。

  下面這部分對開(kāi)發(fā)一個(gè)優(yōu)秀的服務(wù)器應用程序的復雜性作一個(gè)簡(jiǎn)單的回顧。

  我們從三個(gè)不同角度來(lái)討論這個(gè)問(wèn)題:

  第一、它強調了一個(gè)網(wǎng)絡(luò )服務(wù)器為提供合理水平服務(wù)所必須作的工作。

  第二、它論述了當構造以組件為基礎的應用程序所引起的問(wèn)題。

  第三、它描述了即使是在錯誤發(fā)生時(shí),維持應用程序的完整的重要性。

  MTS提供了一個(gè)應用程序編程模式,使得開(kāi)發(fā)者避開(kāi)了這些復雜之處,允許開(kāi)發(fā)者將精力集中于程序的功能上,并降低了構造程序所需的費用和時(shí)間。

  服務(wù)器基本結構:

  服務(wù)器要有一個(gè)高級的基礎。從零開(kāi)始建造一個(gè)網(wǎng)絡(luò )應用服務(wù)器不是一件容易的事。完成實(shí)際的商業(yè)功能,例如處理在線(xiàn)書(shū)庫的訂單,實(shí)際只是工作的一小部分。典型的服務(wù)器系統必須有一個(gè)高級基礎來(lái)獲取可接受的性能和尺度。

  應用程序服務(wù)開(kāi)發(fā)者必須親自經(jīng)常開(kāi)發(fā)基本構件中的許多部分。舉個(gè)例子,序調用提供了豐富的服務(wù),系統開(kāi)發(fā)者仍必須作下面的工作:

  注冊目錄系統服務(wù)器;

  管理服務(wù)器處理池和線(xiàn)程池;

  最后,服務(wù)器需要為多用戶(hù)請求提供的服務(wù)管理線(xiàn)程池,而不只是針對一個(gè)單用戶(hù)。使多客戶(hù)同時(shí)請求使用共享數據和資源的要求同步。這要求高級鎖定協(xié)議能解釋死鎖、條件競爭、資源匱乏及其他性能上的問(wèn)題。管理客戶(hù)內容,包括數據庫連接和數據結構的全視圖。(目標視圖)

  客戶(hù)緩沖狀況以改善潛在慢速網(wǎng)絡(luò )通行。

  完成安全保障以確保商業(yè)功能和對象僅提供給被授權者。

  完成管理和確認工具以允許服務(wù)器的遠程安裝和管理。

  MTS提供了一個(gè)應用程序/服務(wù)器基本結構來(lái)滿(mǎn)足上面的要求。

  構造以組件為基礎的應用程序:

  從組件構造應用程序對開(kāi)發(fā)者有極大的吸引力并且是面向對象計算的早期目標之一。由于它提供了一個(gè)自然的方法來(lái)封裝商業(yè)功能,因而對開(kāi)發(fā)服務(wù)器應用程序更具吸引力。

  然而,組件工程程序比它原來(lái)顯現出來(lái)的要困難。早期對象系統的一個(gè)根本弱點(diǎn)是缺乏共同的框架來(lái)允許開(kāi)發(fā)者無(wú)論是在同一進(jìn)程或是交叉進(jìn)程,都能將不同部分創(chuàng )造的對象結合到一個(gè)完整的程序里。組件對象模型(COM)解決了這個(gè)問(wèn)題。

  然而,簡(jiǎn)單的用一個(gè)COM模型來(lái)從組件構造服務(wù)器應用程序是不夠的。該組件必須使用共同的服務(wù)框架。那些自己構造服務(wù)器框架的開(kāi)發(fā)者使用其他組的組件開(kāi)發(fā)程序的機會(huì )就會(huì )很小。

  MTS程序工程師和編程界面提供了一個(gè)共同的框架來(lái)構造以組件為基礎的服務(wù)器應用程序。

  保持程序的完整性:

  非常重要的一點(diǎn)是,商業(yè)系統應能準確的維持商業(yè)狀態(tài)。例如,一個(gè)在線(xiàn)書(shū)庫必須可靠的跟蹤訂單。若不然,將會(huì )產(chǎn)生巨大的收入損失?,F存的訂單可能丟失或在取訂單、填訂單的時(shí)候有延時(shí),不滿(mǎn)意的用戶(hù)可能會(huì )轉到別處作生意。

  維持商業(yè)系統的完整性從不容易,特別在發(fā)生錯誤以后。具有諷刺意義的是,即使計算機變的越來(lái)越可靠,系統作為一個(gè)整體變得更加不可靠。對提供internet和intranet連接到數十、數百、甚至可能數萬(wàn)個(gè)服務(wù)器上的無(wú)數桌式計算機來(lái)講,錯誤是常事。

  對分布式程序的要求使問(wèn)題復雜化。商業(yè)事務(wù),如訂書(shū),逐漸地卷入多個(gè)服務(wù)者,必須證實(shí)其信用,書(shū)必須船運,必須管理存貨目錄,并且客戶(hù)必須有資金。這一切都使在多服務(wù)器上的多個(gè)數據庫更新成為必須。分布式開(kāi)發(fā)者必須預料到程序的某一部分能在其他部分發(fā)生錯誤后繼續運行。這些防錯方案是單個(gè)程序的好幾倍。

  商業(yè)程序經(jīng)常被要求將多個(gè)工作協(xié)調為單個(gè)商業(yè)事務(wù)。一個(gè)在線(xiàn)書(shū)庫絕對不能在沒(méi)有處理恰當的訂單前就去安排裝運的日程,同時(shí)也不可能向用戶(hù)收取費用而不通知其送貨日期。協(xié)調這些工作使它們都發(fā)生或都不發(fā)生,若無(wú)特殊系統支持是非常困難的。

  即使在發(fā)生錯誤時(shí)要確保程序最小單位的更新,是很不容易的。尤其當一個(gè)應用程序分布在多個(gè)數據庫和系統上時(shí)。使用在設計上隱藏了其可完成性的多種組件造成了這個(gè)問(wèn)題。

  當多個(gè)用戶(hù)獲取同一組件時(shí)程序也必須能提供一致的行為。對同一本書(shū)同時(shí)的定單不應產(chǎn)生只送一本書(shū)給兩個(gè)用戶(hù)的情況。除非程序被正確書(shū)寫(xiě),資源競爭最終將引起不一致性。這些問(wèn)題很難解決并將花很多錢(qián)。并且隨著(zhù)程序增長(cháng)和費用增多而更可能發(fā)生。這也是由于使用組件引起的。

  MTS使用以組件為基礎的編程完整事務(wù)使得你能開(kāi)發(fā)出魯棒,分布式的,以組件為基礎的程序。

  MTS工程師

  這部分對MTS工程師主要元素作一簡(jiǎn)介

  這些元素包括:

  ActiveX組件,完成應用程序功能。

  事務(wù)管理服務(wù)執行者,為程序組件運行服務(wù)。

  服務(wù)處理,提供存放程序組件的代理處理環(huán)境。

  資源管理者(RM),管理程序的可耐階段,例如包括相關(guān)數據庫系統和事務(wù)性消息隊列。

  資源分配者,管理進(jìn)程內組件非耐久性共享數據,例子包括數據庫連接池,管理隊列。

  微軟分布事務(wù)協(xié)調者,允許通過(guò)多個(gè)資源管理者,分配者和程序組件協(xié)調事務(wù)。

  微軟事務(wù)服務(wù)器組件:程序組件使商業(yè)行為模式化。這些組件了完整商業(yè)規則,提供視圖和程序狀態(tài)變化情況??紤]在線(xiàn)書(shū)庫的例子。用在數據庫系統中的記錄代表商務(wù)的耐久狀態(tài),如掛起訂單,方便的目錄,可接受帳單。應用程序組件刷新?tīng)顟B(tài)以反映如新定單和目錄發(fā)送的變化。

  MTS程序組件是ActiveX處理中服務(wù)器(DDL)。通過(guò)使用Microsoft Visual Basic,Visual C++,Visual J++或任何與ActiveX相兼容的開(kāi)發(fā)工具,你可以創(chuàng )造并實(shí)現這些組件。

  ActiveX以COM為基礎,包括:

  界面概念,客戶(hù)從對象請求服務(wù)的方法;

  通過(guò)處理器和機器界限與透明對象的連接;

  確認組件,動(dòng)態(tài)裝載和執行組件的機制;

  對象能通過(guò)MTS工程師支持多界面,并提供給用戶(hù)查詢(xún)支持對象的特殊界面的方法。并允許組件提供不同水平的功能并逐漸引入新版本。

  MTS擴展了COM以提供一個(gè)通用的服務(wù)器程序框架。除了上面提到的COM內在的特性外,MTS還處理服務(wù)器注冊,進(jìn)程,線(xiàn)程管理,內容管理,共享資源的管理和同步化,以及以組件為基礎的安全性管理。

  將事務(wù)引入到程序模板作為獲得最小單元更新和在組件、數據庫系統及網(wǎng)絡(luò )邊界達到一致性的機制。每個(gè)組件都有一個(gè)事務(wù)屬性指出組件的事務(wù)性語(yǔ)義。這允許事務(wù)性?xún)热荼籑TS自動(dòng)管理。MTS使用戶(hù)避免了復雜的服務(wù)事件,使用戶(hù)可以專(zhuān)注于完成商業(yè)功能。由于在MTS下運行組件可充分利用事務(wù)服務(wù)程序,用戶(hù)可以把程序當成各自獨立的狀態(tài)來(lái)編寫(xiě)程序。MTS處理同時(shí)事件,資源池,內容管理及其他系統水平的復雜的事件。事務(wù)系統,與數據庫服務(wù)器和其他類(lèi)型的資源管理協(xié)同工作,確保同時(shí)事務(wù)是強大的、一致的、有恰當的分離性,并且,一旦完成,變化是可耐久的。

  應用程序作為ActiveX的組件來(lái)分配,稱(chēng)為包裹。包裹定義了錯誤分離和信任邊界。

  事務(wù)管理服務(wù)執行器:

  事務(wù)管理服務(wù)執行器是一個(gè)動(dòng)態(tài)連接庫(DDL),它對事務(wù)管理服務(wù)組件提供運行時(shí)服務(wù)。這些服務(wù)包括線(xiàn)程管理和內容管理。這些動(dòng)態(tài)連接庫被加載到應用程序組件的宿主進(jìn)程中,并且在后臺透明的執行。

  服務(wù)進(jìn)程:

  服務(wù)進(jìn)程是應用程序組件執行的宿主系統進(jìn)程,對數十、成百、上千個(gè)客戶(hù)提供服務(wù)。你可以配置多個(gè)服務(wù)進(jìn)程在一個(gè)計算機上執行。每個(gè)服務(wù)進(jìn)程反映了一個(gè)分立的信任邊界和錯誤絕緣域。

  其他的進(jìn)程環(huán)境也能讓?xiě)贸绦蚪M件在其上運行。這使你可以分配應用程序以適合不同的分布、性能和錯誤絕緣要求。例如,你可以配置MTS組件直接加載到微軟SQL服務(wù)器上或微軟網(wǎng)絡(luò )信息服務(wù)器(IIS)上。你還可以直接將它們配置到客戶(hù)進(jìn)程中去。

  資源管理者:

  資源管理者是一種系統服務(wù),它管理耐久數據。服務(wù)器應用程序使用資源管理者維持應用程序的耐久狀態(tài),如方便的存貨目錄記錄,到期訂單以及可接受帳目。資源管理者于事務(wù)管理者協(xié)同工作,以保證應用程序的最小性和分立性。微軟SQL服務(wù)器,耐久的消息隊列和事務(wù)性的文件系統都是資源管理者的例子。

  最小性保證了在一個(gè)特殊事務(wù)中所有的更新都能完成(并能持久)或者被放棄并回到原來(lái)的狀態(tài)。一致性意味著(zhù)一個(gè)事務(wù)是系統狀態(tài)的正確轉化,保存了狀態(tài)變量。

  分立使得同時(shí)事務(wù)不會(huì )得知其他事務(wù)的信息和未完成的結果,以免引起應用程序狀態(tài)的不穩定。資源管理者應用以事務(wù)為基礎的同步協(xié)議來(lái)分離活動(dòng)事務(wù)管理程序未完成的工作。

  耐久性意味著(zhù)對已管理資源(如數據庫記錄)的更新,能不受錯誤的影響,包括通訊錯誤,進(jìn)程錯誤和服務(wù)系統錯誤。事務(wù)管理的日志甚至能允許你在磁盤(pán)介質(zhì)失效后恢復耐久狀態(tài)。

  最小性和分立性協(xié)同工作使得事務(wù)管理程序看起來(lái)是立刻發(fā)生的。事務(wù)管理程序的中間狀態(tài)對外面來(lái)說(shuō)是不可見(jiàn)的,并且產(chǎn)生了這樣一個(gè)結果:或者所有的工作都完成了,或者沒(méi)有一個(gè)完成了。這允許我們在編寫(xiě)應用程序組件時(shí),可以把事務(wù)管理程序當作順序發(fā)生而不考慮其同時(shí)性,這對應用程序開(kāi)發(fā)者是一個(gè)非常大的簡(jiǎn)化。

  MTS支持資源管理者來(lái)完成OLE事務(wù)管理協(xié)議或X/Open XA協(xié)議。有開(kāi)發(fā)資源管理者的工具包。

一個(gè)資源分配者在一個(gè)進(jìn)程內代表應用程序組件管理非耐久性的共享數據。資源分配者與資源管理者相似,但沒(méi)有擔?;蚰途眯?。MTS提供兩種資源分配者:

  ODBC資源分配者

  共享屬性管理者

  并提供了一個(gè)工具包來(lái)開(kāi)發(fā)資源分配者

  ODBC資源分配者:

  ODBC資源分配者使用標準開(kāi)放數據連接界面為事務(wù)服務(wù)器管理數據連接池。ODBC資源分配者維護數據庫連接池,快速和有效的分配給對象連接。連接被自動(dòng)列在對象的事務(wù)處理程序中。資源分配者能自動(dòng)的回收和重用連接。ODBC資源分配者是一個(gè)動(dòng)態(tài)連接庫,它對用戶(hù)透明的提供這種功能并且內構在MTS的特性里。

  共享屬性管理者:

  共享特性管理者對定義的應用程序,進(jìn)程寬度,屬性(變量)進(jìn)行同步管理。你可以使用它來(lái)維護一個(gè)Web頁(yè)面沖浪計數器,常量數據的緩沖,或者提供高速緩沖來(lái)避免數據庫的過(guò)熱點(diǎn)。(例如產(chǎn)生唯一的接收成員)。

  微軟分布式事務(wù)管理協(xié)調者:

  微軟分布式事務(wù)管理協(xié)調者是一個(gè)系統服務(wù),用于協(xié)調跨越多個(gè)資源管理者的事務(wù)。即使事務(wù)可能在分立的計算機上跨越了多個(gè)資源管理者,它也能當作最小事務(wù)來(lái)完成。

  微軟分布式事務(wù)管理協(xié)調者最早作為微軟SQL服務(wù)器6.5版本的一部分發(fā)布,并且包含在MTS里。它完成了兩階段承諾協(xié)議來(lái)保證事務(wù)處理結果(完成的或拋棄的)在所有的資源管理者中是一致的。

  微軟分布式事務(wù)管理協(xié)調者確保最小性,不管是在錯誤(節點(diǎn)沖突、網(wǎng)絡(luò )崩潰或資源管理者、應用程序的錯誤動(dòng)作),條件競爭(事務(wù)管理程序開(kāi)始工作而一個(gè)資源管理者正在放棄)還是可提供性(一個(gè)資源管理者裝備了一個(gè)事務(wù)但沒(méi)有返回)發(fā)生時(shí)。

  微軟分布式事務(wù)管理協(xié)調者支持符合OLE事務(wù)管理或X/Open XA協(xié)議的資源管理者。

  結論:

  微軟事務(wù)管理服務(wù)器將改變人們開(kāi)發(fā)商業(yè)應用程序的方法。組件基礎技術(shù)、面向對象技術(shù)與針對分布式、在線(xiàn)事務(wù)處理的時(shí)間驗證技術(shù)的結合將使得布置由被購買(mǎi)的通常構造的組件組成的應用程序更加容易。經(jīng)濟上的優(yōu)點(diǎn)將產(chǎn)生商業(yè)組件的一個(gè)新市場(chǎng)。這種情況,反過(guò)來(lái)說(shuō),使得原來(lái)沒(méi)有解決的問(wèn)題得到商業(yè)上的解決。

  微軟事務(wù)處理服務(wù)已經(jīng)分兩階段展開(kāi)。初始時(shí),分布式事務(wù)處理協(xié)調器在1996年4月作為微軟SQL服務(wù)器版本3.5的一部分發(fā)布。它提供了通過(guò)相異數據存儲庫的分布式兩階段承諾。

  在1996年11月,微軟事務(wù)服務(wù)器發(fā)布。它提供了可靠的、可變尺度的、分布式的運行ActiveX組件所需的編程環(huán)境和運行時(shí)執行環(huán)境。

  了解更多的信息:

  查詢(xún)微軟事務(wù)管理服務(wù)器的最新信息,可到其Web站點(diǎn)(http://www.microsoft.com/transaction/

  也可以參考<<事務(wù)處理:概念和技術(shù)>> 作者:Jim Gray&Andreas Reuter ,Morgan Kaufmann出版社,1993年。

  本文所包括的內容作為最新出版物代表了微軟公司在所討論問(wèn)題上的最新觀(guān)點(diǎn)。因為微軟必須對市場(chǎng)情況作出反應,微軟不承諾解釋這些內容,也不保證在出版日期以后的內容的準確性。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
COM, COM+ and .NET 的區別
創(chuàng )建事務(wù)性腳本 (用mts管理事務(wù)、組件)
.net下開(kāi)發(fā)COM 組件(1)
com+
Windows Server 2008 更精簡(jiǎn)更安全
了解OLE及ActiveX
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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