自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全面解析CLR是什么一點通

開發(fā) 后端
文章主要介紹了CLR是什么,什么提高了平臺的可靠性,用一個圖例解答為什么微軟要集成clr 到sql server?希望可以給大家滿意的答案。

CLR是什么,有些人對這個概念不是很深入的理解,要在代碼中熟練的運用CLR,我們就要深入的了解CLR底層的架構(gòu),為了更好的理解應(yīng)用程序在IIS中的運行機制,在網(wǎng)上搜集了一些關(guān)于CLR是什么的基礎(chǔ)知識,希望對大家有幫助。

CLR(公用語言運行時)和Java虛擬機一樣也是一個運行時環(huán)境,它負責(zé)資源管理(內(nèi)存分配和垃圾收集),并保證應(yīng)用和底層操作系統(tǒng)之間必要的分離。.NET提供了一個運行時環(huán)境,叫做公用語言運行時(Commen Language Runtime),是一種多語言執(zhí)行環(huán)境,支持眾多的數(shù)據(jù)類型和語言特性。他管理著代碼的執(zhí)行,并使開發(fā)過程變得更加簡單。這是一種可操控的執(zhí)行環(huán)境,其功能通過編譯器與其他工具共同展現(xiàn)。依靠一種以運行時為目標(biāo)的編譯器開發(fā)的代碼叫做可操控代碼managed code。與之相對的是unmanaged code。

元數(shù)據(jù)metadata:為了使運行時環(huán)境可以向可操控代碼提供服務(wù),語言編譯器需要產(chǎn)生一種元數(shù)據(jù),它將提供在使用語言中的類型、成員、引用的信息。運行時環(huán)境使用元數(shù)據(jù)定位并載入類,在內(nèi)存中展開對象實例,解決方法調(diào)用,產(chǎn)生本地代碼,強制執(zhí)行安全性,并建立運行時環(huán)境的邊界。

可操控執(zhí)行的含義:對象在執(zhí)行的過程中完全被運行時環(huán)境所控制。運行時環(huán)境提供以下服務(wù):自動內(nèi)存管理、調(diào)試支持、增強的安全性及與非可操控性代碼的互操作性。條件:

1、選擇以運行時為目標(biāo)的語言編譯器,如VB、C#;

2、在組件的輸出類型中使用CLR要求的語言特性。

CLR用什么提高了平臺的可靠性?以及為了達到面向事務(wù)的電子商務(wù)應(yīng)用所要求的穩(wěn)定性級別,CLR還要負責(zé)其他一些任務(wù),比如監(jiān)視程序的運行。按照.NET的說法,在CLR監(jiān)視之下運行的程序?qū)儆凇笆芄芾淼摹保╩anaged)代碼,而不在CLR之下、直接在裸機上運行的應(yīng)用或者組件屬于“非受管理的”(unmanaged)的代碼。CLR將監(jiān)視形形色色的常見編程錯誤,許多年來這些錯誤一直是軟件故障的主要根源,其中包括:訪問數(shù)組元素越界,訪問未分配的內(nèi)存空間,由于數(shù)據(jù)體積過大而導(dǎo)致的內(nèi)存溢出,等等。

然而,這種對受管理代碼的運行監(jiān)視是有代價的。雖然當(dāng)前還不可能精確地得到監(jiān)視程序運行所需要的開銷,但從當(dāng)前Beta測試版的性能表現(xiàn)來看,正如Microsoft所承認的那樣,我們可以預(yù)料由它導(dǎo)致的性能降低程度至少達到10%。當(dāng)然,如果監(jiān)視程序運行能夠?qū)⒎€(wěn)定性和可用性提高到一個新的檔次,我們可以懷疑10%的性能降低是否還可以稱為一件壞事……

為什么微軟要集成clr 到sql server?

clr 到sql server

在我看來,CLR是什么?clr 存儲過程非常好的東西,它彌補了t-sql 做為一門查詢語言的不足,使得數(shù)據(jù)庫在處理邏輯問題的時候不像以前那么蹩腳,許多DB程序員為了用 t-sql實現(xiàn)一個簡單的過程邏輯而大傷腦筋,比如一個非常間的需求,我想傳遞一個數(shù)組,里面裝有id,想更新這些id的行的狀態(tài),就是在傳遞一個數(shù)組到存儲過程中并分割成若干個id,一個在C#中非常簡單的實現(xiàn)卻要為t-sql絞盡腦汁。。。。相信大多數(shù)程序員都有我類似的苦惱。而在最近的項目中,涉及到由聯(lián)通過來的短信數(shù)據(jù)處理,預(yù)處理短信表是由另外一個模塊插入的,我負責(zé)的模塊需要對這個預(yù)處理短信表的記錄讀取出來,定時掃描整個表,如果有需要處理的短信,那么要由windows服務(wù)定時讀取出來,并且根據(jù)短信種類的不同做業(yè)務(wù)邏輯的分發(fā),整個模塊的性能要求非常高,所有的上行短信都要經(jīng)過這個表,并處理。每秒發(fā)生的開連接插入刪除造作非常多。最開始的設(shè)計是使用windows服務(wù)定時掃表并更新回數(shù)據(jù)庫,一條一條的更新回數(shù)據(jù)庫。。。。其性能之差是難以想象的。所以準(zhǔn)備采取clr存儲過程結(jié)合job,把業(yè)務(wù)邏輯的分發(fā)也拿到數(shù)據(jù)庫clr環(huán)境下做,節(jié)省往返開銷和連接開銷。

總之,t-sql 是一門面向查詢的語言,以數(shù)據(jù)為主,但是對過程的處理支持卻非常差勁,clr 集成就能非常好的彌補了這點。之所以寫個開篇,是看到有些人還是對這種技術(shù)的應(yīng)用環(huán)境的不了解。好了,接下來,我準(zhǔn)備寫一些關(guān)于clr 集成的 sql server 2005 下的應(yīng)用,包括clr proc clr function 等。歡迎大家指正!

附上使用context connection 和使用一般數(shù)據(jù)庫連接的對比圖,大家可以參考一下。

【編輯推薦】

  1. 趣談CLR中的靜態(tài)構(gòu)造函數(shù)
  2. 淺析基于SQL2005的CLR存儲過程
  3. .NET CLR性能評測
  4. 經(jīng)典講解 CLR是什么?
  5. 深入了解.NET編譯器中CLR加載過程
責(zé)任編輯:田樹 來源: 博客
相關(guān)推薦

2009-12-15 14:27:30

Ruby存取器

2009-07-17 17:02:54

JRuby是什么

2009-12-24 17:10:42

WPF動畫類

2009-11-09 13:56:15

WCF Stream對

2009-11-03 09:09:19

VB.NET類

2009-12-31 13:45:13

Silverlight

2009-12-15 10:31:30

Ruby rails頁

2009-09-17 18:27:40

CLR是什么

2009-11-02 16:30:29

VB.NET構(gòu)造器

2009-12-17 09:14:14

Ruby on Rai

2009-10-28 14:30:16

VB.NET RmDi

2009-11-06 10:54:19

WCF服務(wù)方式

2009-09-17 18:40:12

CLR是什么

2009-10-22 16:08:52

.NET CLR是什么

2009-11-04 14:37:40

ADO.NET XML

2009-11-10 17:04:29

VB.NET基礎(chǔ)知識

2009-10-26 10:12:14

VB.NET操作MsA

2011-02-15 09:06:57

企業(yè)網(wǎng)絡(luò)管理CISCO 3550交交換機端口

2009-11-02 11:22:59

VB.NET文本文件操

2010-01-04 19:22:49

Silverlight
點贊
收藏

51CTO技術(shù)棧公眾號