功能上的考慮 許多人認(rèn)為C#的功能比VB.net強(qiáng)大,或者C#更加適合.net等。其實(shí)這不是一兩句話能比較清楚的。C#的確有VB無(wú)法完成的功能,但VB也有C#無(wú)法完成的功能。總的來(lái)說(shuō),對(duì)于.net開發(fā),VB和C#沒有任何差別,都100%兼容于CLS。下面列出的是他們語(yǔ)言功能上的不同,這些僅僅是語(yǔ)言實(shí)現(xiàn)上的問(wèn)題,不會(huì)影響到生成的代碼。打*號(hào)的內(nèi)容與CLS不兼容。 C#有而VB沒有的功能: 1、 運(yùn)算符重載。* 2、 不安全代碼(指針和固定內(nèi)存區(qū))。* 3、 無(wú)符號(hào)整數(shù)。* 4、 移位運(yùn)算。 VB有而C#沒有的功能 1、 即時(shí)編譯。 2、 靜態(tài)事件綁定。 3、 條件異常捕獲。 4、 COM兼容類。* 5、 寬松的類型檢查和變量聲明。 6、 Visual Basic Runtime庫(kù)。 7、 可選參數(shù)、帶參數(shù)屬性、模塊等語(yǔ)言特征。* 8、 動(dòng)態(tài)數(shù)組。*

成都創(chuàng)新互聯(lián)是專業(yè)的鐵東網(wǎng)站建設(shè)公司,鐵東接單;提供成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鐵東網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
VB.NET的程序很容易反編譯的,所以寫到類中好像并不安全
建議
1.用戶登錄所使用的賬戶的權(quán)限一定要控制好
2.可以把連接字符串硬編碼到exe或者dll中,然后用.NET的混淆軟件加密混淆(一定要選擇加密字符串)
3.使用其他的技術(shù)使用戶間接操作數(shù)據(jù)庫(kù)。可以在服務(wù)器遠(yuǎn)程建立一個(gè)服務(wù)器(接受Sockets連接),或者建立一個(gè)動(dòng)態(tài)網(wǎng)頁(yè)。讓用戶連接到這些客戶端,發(fā)送一些指令,對(duì)數(shù)據(jù)庫(kù)的查操作由這個(gè)服務(wù)器上的程序代它完成,然后把結(jié)果給用戶
VB.net是純面向?qū)ο蟮拈_發(fā)語(yǔ)言,為了適應(yīng).net Framework的安全性,vb.net進(jìn)行了不小的調(diào)整。但是關(guān)鍵字修飾符之類的基本沒有什么變化,所以您只需要習(xí)慣.net下的強(qiáng)類型,應(yīng)該是不難轉(zhuǎn)型。
舉個(gè)簡(jiǎn)單的例子吧,vb.net下是沒有“變體類型”這一數(shù)據(jù)類型的,整型就是整型,字符串就是字符串,像
a = 50 + 60
Text1.Text = a
這樣的代碼是不行的,VB6.0支持變體類型,會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,而.net下為了保證安全性,會(huì)要求程序員自己進(jìn)行必要的轉(zhuǎn)換。
至于API,.net框架下對(duì)API的依賴性像VB6中那么高,一些API完成的工作可以由一些類庫(kù)來(lái)完成。API的調(diào)用也不是一樣的,因?yàn)橛行〢PI涉及到了“不安全代碼”,而且API是用另一種非.net 語(yǔ)言編寫的,所以調(diào)用時(shí)有些特別的要求。
vb.net工作在.NET Framework下,與VB6的解釋執(zhí)行不同,VB.NET是編譯執(zhí)行的,.net下所有的應(yīng)用程序都被編譯成一種“中間語(yǔ)言(MSIL)”的形式,運(yùn)行時(shí)由一種稱為即時(shí)編譯器(JIT)的程序進(jìn)行二次編譯。可以說(shuō).net既是開發(fā)環(huán)境又是運(yùn)行環(huán)境,它提供了通用類型系統(tǒng)(CTS)和“公共語(yǔ)言運(yùn)行時(shí)”(Common Language Runtime,CLR),前者為開發(fā)時(shí)提供了類型支持,.net下語(yǔ)言中的基本數(shù)據(jù)類型都來(lái)自于這個(gè)類型系統(tǒng);后者為.net應(yīng)用程序提供了運(yùn)行環(huán)境,包括JIT、GC(內(nèi)存垃圾收集器)等等,同時(shí)負(fù)責(zé)代碼的運(yùn)行時(shí)安全。
最后,我感覺學(xué)一門語(yǔ)言并不難,難的是理解一些系統(tǒng)和程序設(shè)計(jì)中低層的東西,不過(guò),我比較建議您學(xué)習(xí)VB.NET,因?yàn)樗募兠嫦驅(qū)ο蟮奶匦员容^符合目前的軟件開發(fā)方式。
希望這些信息對(duì)您有幫助。
詳細(xì)閱讀了你的問(wèn)題,你提問(wèn)說(shuō)運(yùn)行了有控件的窗體就會(huì)立即退出。
那么,這個(gè)控件既然不是第三方控件,那么,我有以下幾個(gè)疑問(wèn):
1.是否是所有的vs2010的窗體控件均會(huì)出現(xiàn)此類問(wèn)題呢?
2.你有沒有嘗試過(guò),新建一個(gè)普通的工程,里面的Form中,只拖放一個(gè)button按鈕?編譯后是否可以正常打開呢?
3.這些控件是否為你自己制作的自定義控件或者是組件之類的呢?
以上種種可能出現(xiàn)的問(wèn)題,希望你能仔細(xì)測(cè)測(cè),逐步測(cè)試,同時(shí),也排查下系統(tǒng)中,是否安裝了什么安全性軟件,.net 4.0框架安裝是否正常。
保護(hù)VB.NET代碼不被修改,最簡(jiǎn)單的就是 編譯。
對(duì)外僅提供編譯后的應(yīng)用程序(庫(kù)),別人就不能修改了。
VB6.0采用可視化的編程環(huán)境,它好學(xué)易用,運(yùn)行VB6.0后,會(huì)出現(xiàn)如下圖所示的窗口,呵呵,看起來(lái)蠻復(fù)雜的,好多的按鈕、菜單、小窗口,別擔(dān)心,待會(huì)兒我們會(huì)一起學(xué)習(xí)這些東東都是干什么用的。
先來(lái)解決一個(gè)小問(wèn)題,怎么新建一個(gè)VB的工程呢?方法是這樣的,在程序啟動(dòng)時(shí)出現(xiàn)的“新建工程”對(duì)話框中選擇“標(biāo)準(zhǔn)EXE”并點(diǎn)擊確定,就能直接新建一個(gè)工程,如果你跳過(guò)了這個(gè)對(duì)話框則也可從“文件”菜單中選擇“新建工程”重新調(diào)出此對(duì)話框。
下面一起來(lái)看看VB的編程環(huán)境,雖然看起來(lái)復(fù)雜,但可以把它分為幾個(gè)部分,每個(gè)部分都有自己特定的功能,這樣我們就清楚多了。其實(shí)VB這是通過(guò)這樣一個(gè)界面把相近或同類的功能組合在一起的,它使我們?cè)谠O(shè)計(jì)程序時(shí)能方便的控制程序的方方面面。
JAVA:
◇ 創(chuàng)建一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,而不是面向過(guò)程的語(yǔ)言;
◇ 提供一個(gè)解釋執(zhí)行的程序運(yùn)行環(huán)境,是程序代碼獨(dú)立于平臺(tái);
◇ 吸收C和C++的優(yōu)點(diǎn),使程序員容易掌握;
◇ 去掉C和C++中影響程序健壯性的部分,使程序更安全,例如指針、內(nèi)存申請(qǐng)和釋放;
◇ 實(shí)現(xiàn)多線程,使得程序能夠同時(shí)執(zhí)行多個(gè)任務(wù);
◇ 提供動(dòng)態(tài)下載程序代碼的機(jī)制;
◇ 提供代碼校驗(yàn)機(jī)制以保證安全性;
Java語(yǔ)言的特點(diǎn)(1)
1. 簡(jiǎn)單、面向?qū)ο蠛蜑槿怂煜?/p>
java的簡(jiǎn)單首先體現(xiàn)在精簡(jiǎn)的系統(tǒng)上,力圖用最小的系統(tǒng)實(shí)現(xiàn)足夠多的功能;對(duì)硬件的要求不高,在小型的計(jì)算機(jī)上便可以良好的運(yùn)行。和所有的新一代的程序設(shè)計(jì)語(yǔ)言一樣,java也采用了面向?qū)ο蠹夹g(shù)并更加徹底,所有的java程序和applet程序均是對(duì)象,封裝性實(shí)現(xiàn)了模塊化和信息隱藏,繼承性實(shí)現(xiàn)了代碼的復(fù)用,用戶可以建立自己的類庫(kù)。而且java采用的是相對(duì)簡(jiǎn)單的面向?qū)ο蠹夹g(shù),去掉了運(yùn)算符重載、多繼承的復(fù)雜概念,而采用了單一繼承、類強(qiáng)制轉(zhuǎn)換、多線程、引用(非指針)等方式。無(wú)用內(nèi)存自動(dòng)回收機(jī)制也使得程序員不必費(fèi)心管理內(nèi)存,是程序設(shè)計(jì)更加簡(jiǎn)單,同時(shí)大大減少了出錯(cuò)的可能。java語(yǔ)言采用了C語(yǔ)言中的大部分語(yǔ)法,熟悉C語(yǔ)言的程序員會(huì)發(fā)現(xiàn)Java語(yǔ)言在語(yǔ)法上與C語(yǔ)言極其相似。
2. 魯棒并且安全
java語(yǔ)言在編譯及運(yùn)行程序時(shí),都要進(jìn)行嚴(yán)格的檢查。作為一種強(qiáng)制類型語(yǔ)言,java在編譯和連接時(shí)都進(jìn)行大量的類型檢查,防止不匹配問(wèn)題的發(fā)生。如果引用一個(gè)非法類型、或執(zhí)行一個(gè)非法類型操作,java將在解釋時(shí)指出該錯(cuò)誤。在java程序中不能采用地址計(jì)算的方法通過(guò)指針訪問(wèn)內(nèi)存單元,大大減少了錯(cuò)誤發(fā)生的可能性;而且java的數(shù)組并非用指針實(shí)現(xiàn),這樣就可以在檢查中避免數(shù)組越界的發(fā)生。無(wú)用內(nèi)存自動(dòng)回收機(jī)制也增加了Java的魯棒性。
作為網(wǎng)絡(luò)語(yǔ)言,java必須提供足夠的安全保障,并且要防止病毒的侵襲。java在運(yùn)行應(yīng)用程序時(shí),嚴(yán)格檢查其訪問(wèn)數(shù)據(jù)的權(quán)限,比如不允許網(wǎng)絡(luò)上的應(yīng)用程序修改本地的數(shù)據(jù)。下載到用戶計(jì)算機(jī)中的字節(jié)代碼在其被執(zhí)行前要經(jīng)過(guò)一個(gè)核實(shí)工具,一旦字節(jié)代碼被核實(shí),便由java解釋器來(lái)執(zhí)行,該解釋器通過(guò)阻止對(duì)內(nèi)存的直接訪問(wèn)來(lái)進(jìn)一步提高java的安全性。同時(shí)java極高的魯棒性也增強(qiáng)了Java的安全性。
3. 結(jié)構(gòu)中立并且可以移植
網(wǎng)絡(luò)上充滿了各種不同類型的機(jī)器和操作系統(tǒng),為使java程序能在網(wǎng)絡(luò)的任何地方運(yùn)行,java編譯器編譯生成了與體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)碼結(jié)構(gòu)文件格式。任何種類的計(jì)算機(jī),只有在其處理器和操作系統(tǒng)上有java運(yùn)行時(shí)環(huán)境,字節(jié)碼文件就可以在該計(jì)算機(jī)上運(yùn)行。即使是在單一系統(tǒng)的計(jì)算機(jī)上,結(jié)構(gòu)中立也有非常大的作用。隨著處理器結(jié)構(gòu)的不斷發(fā)展變化,程序員不得不編寫各種版本的程序以在不同的處理器上運(yùn)行,這使得開發(fā)出能夠在所有平臺(tái)上工作的軟件集合是不可能的。而使用Java將使同一版本的應(yīng)用程序可以運(yùn)行在所有的平臺(tái)上。
體系結(jié)構(gòu)的中立也使得java系統(tǒng)具有可移植性。java運(yùn)行時(shí)系統(tǒng)可以移植到不同的處理器和操作系統(tǒng)上,java的編譯器是由java語(yǔ)言實(shí)現(xiàn)的,解釋器是由Java語(yǔ)言和標(biāo)準(zhǔn)C語(yǔ)言實(shí)現(xiàn)的,因此可以較為方便的進(jìn)行移植工作。
1.2.4 Java語(yǔ)言的特點(diǎn)(2)
4. 高性能
雖然java是解釋執(zhí)行的,但它仍然具有非常高的性能,在一些特定的CPU上,java字節(jié)碼可以快速的轉(zhuǎn)換成為機(jī)器碼進(jìn)行執(zhí)行。而且java字節(jié)碼格式的設(shè)計(jì)就是針對(duì)機(jī)器碼的轉(zhuǎn)換,實(shí)際轉(zhuǎn)換時(shí)相當(dāng)簡(jiǎn)便,自動(dòng)的寄存器分配與編譯器對(duì)字節(jié)碼的一些優(yōu)化可使之生成高質(zhì)量的代碼。隨著java虛擬機(jī)的改進(jìn)和"即時(shí)編譯"(just in time)技術(shù)的出現(xiàn)使得Java的執(zhí)行速度有了更大的提高。
5. 解釋執(zhí)行、多線程并且是動(dòng)態(tài)的
如果你了解C語(yǔ)言和C++語(yǔ)言,可以參考下列Java與C/C++語(yǔ)言的比較,如果不了解C語(yǔ)言和C++語(yǔ)言,可以忽略本部分知識(shí)。
a. 全局變量
Java程序不能定義程序的全局變量,而類中的公共、靜態(tài)變量就相當(dāng)于這個(gè)類的全局變量。這樣就使全局變量封裝在類中,保證了安全性,而在C/C++語(yǔ)言中,由于不加封裝的全局變量往往會(huì)由于使用不當(dāng)而造成系統(tǒng)的崩潰。
b. 條件轉(zhuǎn)移指令
C/C++語(yǔ)言中用goto語(yǔ)句實(shí)現(xiàn)無(wú)條件跳轉(zhuǎn),而Java語(yǔ)言沒有g(shù)oto語(yǔ)言,通過(guò)例外處理語(yǔ)句try、catch、finally來(lái)取代之,提高了程序的可讀性,也增強(qiáng)了程序的魯棒性。
c. 指針
指針是C/C++語(yǔ)言中最靈活,但也是最容易出錯(cuò)的數(shù)據(jù)類型。用指針進(jìn)行內(nèi)存操作往往造成不可預(yù)知的錯(cuò)誤,而且,通過(guò)指針對(duì)內(nèi)存地址進(jìn)行顯示類型轉(zhuǎn)換后,可以類的私有成員,破壞了安全性。在java中,程序員不能進(jìn)行任何指針操作,同時(shí)Java中的數(shù)組是通過(guò)類來(lái)實(shí)現(xiàn)的,很好的解決了數(shù)組越界這一C/C++語(yǔ)言中不做檢查的缺點(diǎn)。
d. 內(nèi)存管理
在C語(yǔ)言中,程序員使用庫(kù)函數(shù)malloc()和free()來(lái)分配和釋放內(nèi)存,C++語(yǔ)言中則是運(yùn)算符new和delete。再次釋放已經(jīng)釋放的內(nèi)存塊或者釋放未被分配的內(nèi)存塊,會(huì)造成系統(tǒng)的崩潰,而忘記釋放不再使用的內(nèi)存塊也會(huì)逐漸耗盡系統(tǒng)資源。在Java中,所有的數(shù)據(jù)結(jié)構(gòu)都是對(duì)象,通過(guò)運(yùn)算符new分配內(nèi)存并得到對(duì)象的使用權(quán)。無(wú)用內(nèi)存回收機(jī)制保證了系統(tǒng)資源的完整,避免了內(nèi)存管理不周而引起的系統(tǒng)崩潰。
e. 數(shù)據(jù)類型的一致性
在C/C++語(yǔ)言中,不同的平臺(tái)上,編譯器對(duì)簡(jiǎn)單的數(shù)據(jù)類型如int、float等分別分配不同的字節(jié)數(shù)。例如:int在IBM PC上為16位,在VAX-11上就為32位,導(dǎo)致了代碼數(shù)據(jù)的不可移植。在java中,對(duì)數(shù)據(jù)類型的位數(shù)分配總是固定的,而不管是在任何的計(jì)算機(jī)平臺(tái)上。因此就保證了Java數(shù)據(jù)的平臺(tái)無(wú)關(guān)性和可移植性。
f. 類型轉(zhuǎn)換
在C/C++語(yǔ)言中,可以通過(guò)指針進(jìn)行任意的類型轉(zhuǎn)換,不安全因素大大增加。而在Java語(yǔ)言中系統(tǒng)要對(duì)對(duì)象的處理進(jìn)行嚴(yán)格的相容性檢查,防止不安全的轉(zhuǎn)換。
g. 頭文件
在C/C++語(yǔ)言中使用頭文件聲明類的原型和全局變量及庫(kù)函數(shù)等,在大的系統(tǒng)中,維護(hù)這些頭文件是非常困難的。java不支持頭文件,類成員的類型和訪問(wèn)權(quán)限都封裝在一個(gè)類中,運(yùn)行時(shí)系統(tǒng)對(duì)訪問(wèn)進(jìn)行控制,防止非法的訪問(wèn)。同時(shí),Java中用import語(yǔ)句與其它類進(jìn)行通信,以便訪問(wèn)其它類的對(duì)象。
h. 結(jié)構(gòu)和聯(lián)合
C/C++語(yǔ)言中用結(jié)構(gòu)和聯(lián)合來(lái)表示一定的數(shù)據(jù)結(jié)構(gòu),但是由于其成員均為公有的,安全性上存在問(wèn)題。Java不支持結(jié)構(gòu)和聯(lián)合,通過(guò)類把數(shù)據(jù)結(jié)構(gòu)及對(duì)該數(shù)據(jù)的操作都封裝在類里面。
i. 預(yù)處理
C/C++語(yǔ)言中有宏定義,而用宏定義實(shí)現(xiàn)的代碼往往影響程序的可讀性,而Java不支持宏定義
新聞標(biāo)題:代碼安全性vb.net 代碼安全性檢查平臺(tái)的框架
網(wǎng)頁(yè)地址:http://chinadenli.net/article44/dodpihe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、、全網(wǎng)營(yíng)銷推廣、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)