




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
一、c#
1.請解釋在new與override的區(qū)別?
在C#中,new關(guān)鍵字可用作運算符或修飾符。
?new運算符用于在堆上創(chuàng)建對象和調(diào)用構(gòu)造函數(shù)。
?new修飾符用于隱藏基類成員的繼承成員。
使用override修飾符來修改方法、屬性、索引器或事件。重寫方法提供從基類繼承的成員
的新實現(xiàn)。由重寫聲明重寫的方法稱為重寫基方法。重寫基方法必須與重寫方法具有相同的
署名。
不能重寫非虛方法或靜態(tài)方法。重寫基方法必須是虛擬的、抽象的或重寫的。
重寫聲明不能更改虛方法的可訪問性。重寫方法和虛方法必須具有相同的訪問級修飾符。不
能使用下列修飾符修改重寫方法:newstaticvirtualabstract重寫屬性聲明必須指定
與繼承屬性完全相同的訪問修飾符、類型和名稱,并且重寫屬性必須是虛擬的、抽象的或重
寫的。
2.請解釋virtual的含義?
virtual關(guān)鍵字用于修改方法或?qū)傩缘穆暶鳎谶@種情況下,方法或?qū)傩员环Q作虛擬成
員。虛擬成員的實現(xiàn)可由派生類中的重寫成員更改。
調(diào)用虛方法時,將為重寫成員檢查該對象的運營時類型。將調(diào)用大部分派生類中的該重寫成
員,假如沒有派生類重寫該成員,則它也許是原始成員。默認(rèn)情況下,方法是非虛擬的。不
能重寫非虛方法。不能將virtual修飾符與以下修飾符一起使用:staticabstractoverride
除了聲明和調(diào)用語法不同外,虛擬屬性的行為與抽象方法同樣。
?在靜態(tài)屬性上使用virtual修飾符是錯誤的。
?通過涉及使用override修飾符的屬性聲明,可在派生類中重寫虛擬繼承屬性
3.請解釋.net采用委托實現(xiàn)的事件模型與JAVA中采用接口實現(xiàn)的事件模型有什么區(qū)別,
以圖示方式解釋。
4.請解釋接口的顯式實現(xiàn)有什么意義?
接口是其他類型為保證它們支持某些操作而實現(xiàn)的引用類型。接口從不直接創(chuàng)建并且
沒有實際的表達形式,其他類型必須轉(zhuǎn)換為接口類型。一個接口定義一個協(xié)定。實現(xiàn)接口的
類或結(jié)構(gòu)必須遵守其協(xié)定。接口可以包含方法、屬性、索引器和事件作為成員。
5.請以圖示方式解釋.netframework?
VB
C++
c#
JScript
CommonLanguageSpecification
XMLWeb
services
WebForms
WindowsForms
DataandXML
BaseClassLibrary
CLR
CLI
VisualStudio.NET
6.什么是.net?
,net是一種平臺和框架,.net不是單純的語言也不是單純的工具,它是從底層平臺開始
構(gòu)建起來的一個整體框架
6.Ref與out有什么不同?
方法參數(shù)上的ref方法參數(shù)關(guān)鍵字使方法引用傳遞到方法的同一個變量。當(dāng)控制傳
遞回調(diào)用方法時,在方法中對參數(shù)所做的任何更改都將反映在該變量中。若要使用ref參
數(shù),必須將參數(shù)作為ref參數(shù)顯式傳遞到方法。ref參數(shù)的值被傳遞到ref參數(shù)。傳遞到ref
參數(shù)的參數(shù)必須最先初始化。將此方法與out參數(shù)相比,后者的參數(shù)在傳遞到out參數(shù)之
前不必顯式初始化。屬性不是變量,不能作為ref參數(shù)傳遞。假如兩種方法的聲明僅在它
們對ref的使用方面不同,則將出現(xiàn)重載.但是,無法定義僅在ref和out方面不同的重
載。
方法參數(shù)上的out方法參數(shù)關(guān)鍵字使方法引用傳遞到方法的同一個變量。當(dāng)控制傳遞
回調(diào)用方法時,在方法中對參數(shù)所做的任何更改都將反映在該變量中。
當(dāng)希望方法返回多個值時,聲明out方法非常有用。使用out參數(shù)的方法仍然可以返回一
個值。一個方法可以有一個以上的out參數(shù)。若要使用out參數(shù),必須將參數(shù)作為out參
數(shù)顯式傳遞到方法。out參數(shù)的值不會傳遞到out參數(shù)。不必初始化作為out參數(shù)傳遞的
變量。然而,必須在方法返回之前為out參數(shù)賦值。屬性不是變量,不能作為out參數(shù)傳
遞。假如兩個方法的聲明僅在out的使用方面不同,則會發(fā)生重載。但是,無法定義僅在ref
和out方面不同的重載。
7.值類型與引用類型有什么不同?請舉例說明?并分別列舉幾種相應(yīng)的數(shù)據(jù)類型。
大多數(shù)編程語言提供內(nèi)置的數(shù)據(jù)類型(比如整數(shù)和浮點數(shù)),這些數(shù)據(jù)類型會在作為參數(shù)傳
遞時被復(fù)制(即,它們通過值來傳遞)。在.NETFramework中,這些稱為值類型。您可以
創(chuàng)建值類型的實例,將它們作為參數(shù)傳遞,將它們存儲為局部變量,或?qū)⑺鼈兇鎯υ诹硪恢?/p>
類型或?qū)ο蟮淖侄沃?。值類型沒有與存儲類的實例相關(guān)的系統(tǒng)開銷,并且它們不需要構(gòu)造函
數(shù)。值類型可以有字段、屬性和事件。它們也有靜態(tài)和非靜態(tài)方法。當(dāng)它們被裝箱時,會從
System.ValueType繼承虛方法,并可實現(xiàn)零個或更多接口。值類型是密封的,這意味著不能
從它們派生出其他類型。但是,可以直接對值類型定義虛方法,并且既可對該類型的已裝箱
形式,也可對未裝箱形式調(diào)用這些方法。盡管不能從一種值類型派生出另一種類型,但是當(dāng)
所用語言解決虛方法比解決非虛方法或靜態(tài)方法更方便時,可以對值類型定義虛方法。
引用類型的變量又稱為對象,可存儲對實際數(shù)據(jù)的引用。以下用于聲明引用類型的關(guān)鍵字:
?class
?interface
?delegate
8.結(jié)構(gòu)體是值類型還是引用類型的?
是值類型。
9.C#中有沒有靜態(tài)構(gòu)造函數(shù),假如有是做什么用的?
有.靜態(tài)構(gòu)造函數(shù)用于初始化類。在創(chuàng)建第一個實例或引用任何靜態(tài)成員之前,
將自動調(diào)用靜態(tài)構(gòu)造函數(shù)來初始化類。靜態(tài)構(gòu)造函數(shù)既沒有訪問修飾符,也沒有參數(shù)。在創(chuàng)
建第一個實例或引用任何靜態(tài)成員之前,將自動調(diào)用靜態(tài)構(gòu)造函數(shù)來初始化類。無法直接調(diào)
用靜態(tài)構(gòu)造函數(shù)。在程序中,用戶無法控制何時執(zhí)行靜態(tài)構(gòu)造函數(shù)。靜態(tài)構(gòu)造函數(shù)的典型用
途是:當(dāng)類使用日記文獻時,將使用這種構(gòu)造函數(shù)向日記文獻中寫入項。
10.在C#中如何實現(xiàn)多態(tài)?
“多態(tài)性”指定義具有功能不同但名稱相同的方法或?qū)傩缘亩鄠€類的能力,這些
類可由客戶端代碼在運營時互換使用。大部分面向?qū)ο蟮木幊滔到y(tǒng)都通過繼承提供多態(tài)性。
基于繼承的多態(tài)性涉及在基類中定義方法并在派生類中使用新實現(xiàn)重寫它們。
11.什么是反射?如何實現(xiàn)反射?
反射則提供了封裝程序集、模塊和類型的對象。您可以使用反射動態(tài)地創(chuàng)建類型的實例,將
類型綁定到現(xiàn)有對象,或從現(xiàn)有對象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段
和屬性。通過反射命名空間中的類以及System.Type,您可以獲取有關(guān)已加載的程序集和在
其中定義的類型(如類、接口和值類型)的信息。您也可以使用反射在運營時創(chuàng)建類型實例,
然后調(diào)用和訪問這些實例。
12.請解釋流與文獻有什么不同?
文獻是一些具有永久存儲及特定順序的字節(jié)組成的一個有序的、具有名稱的集合。因此,對
于文獻,人們常會想到目錄途徑、磁盤存儲、文獻和目錄名等方面。相反,流提供一種向后
備存儲器寫入字節(jié)和從后備存儲器讀取字節(jié)的方式,后備存儲器可認(rèn)為多種存儲媒介之一。
正如除磁盤外存在多種后備存儲器同樣,除文獻流之外也存在多種流。例如,還存在網(wǎng)絡(luò)流、
內(nèi)存流和磁帶流等。
13.程序集與命名空間有什么不同?
命名空間是用于避免命名沖突,專用于組織代碼,當(dāng)代碼要在其他某個應(yīng)用程序中重用時,可
以減少復(fù)雜性。
程序集是重用代碼的一種方式
不同:可以將相同命名空間中的類部署到不同的程序集中,也可以命名空間中的類部署到一
個程序集中
命名空間程序集
有邏輯編譯時機制有物理編譯時機制
不是運營時實體是運營時實體
為源代碼元素的名稱提供邏輯結(jié)構(gòu)為可執(zhí)行文獻的運營時提供物理結(jié)構(gòu)
14.請編寫一個捕獲所有錯誤的錯誤解決代碼
15.
16.Try{
17.…
18.)catch(Exceptione){}
19.委托與事件是什么關(guān)系?為什么要使用委托
?委托提供了封裝方法的方式,事件是某動作己發(fā)生的說明,事件是建立于委托之上的
?程序運營時同一個委托可以用來調(diào)用不同的方法只要改變它的引用方法即可
?同一個委托可以用來調(diào)用不同的方法,只要改變它引用的方法即可,因此委托調(diào)節(jié)器用的方
法不是在編譯時決定的,而是在運營時擬定的.
20.一個類中有幾種元素?
類由字段,屬性,方法組成
21.請解釋這種語法現(xiàn)象Session["name"]=20;
給類的索引器賦值.
22.裝箱與取消裝箱是什么含義?
裝箱是值類型到object類型或到該值類型所實現(xiàn)的任何接口類型的隱式轉(zhuǎn)換。將一個值的
值裝箱會分派一個對象實例并將該值復(fù)制到新的對象中。
取消裝箱是從object類型到值類型或從接口類型到實現(xiàn)該接口的值類型的顯式轉(zhuǎn)換。取消
裝箱操作涉及:
?檢核對象實例,保證它是給定值類型的一個裝箱值。
?將該值從實例復(fù)制到值類型變量中。
23.一個構(gòu)造函數(shù)能否調(diào)用另一個構(gòu)造函數(shù),假如能請寫出簡樸的代碼
能.
classclass1
(
inty;
publicclass1(){
newclass1(5);
)
publicclass1(inti)
(
this.y=i;
)
publicvoidx(){
Console.WriteLine(y.ToStringO);
)
staticvoidMain(stringlJargs)
//
class1cl=newclass1(5);
cl.x();
)
1
24.請編寫創(chuàng)建一個線程的代碼。
usingSystem;
usingSystem.IO;
usingSystem.Threading;
classMyThread{
publicintcount;
stringthrdName;
publicMyThread(stringname){
count=0;
thrdName=name;
)
publicvoidrun(){
Console.WriteLine(thrdName+"starting.n);
do{
Thread.Sleep(500);
Console.WriteLine("In',4-thrdName+u,countis"+count);
count++;
}while(count<10);
Console.WriteLine(thrdName+nterminating.n);
classMultiThread{
publicstaticvoidMain(){
Console.WriteLine("Mainthreadstarting.");
MyThreadmt=newMyThread("Child#ln);
ThreadnewThrd=newThread(newThreadStart(mt.run));
newThrd.Start();
do{
Console.Write(n.0);
Thread.Sleep(l00);
}while(mt.count!=l0);
Console.WriteLine(uMainthreadending.");
)
)
25.Params是什么含義?
params關(guān)鍵字可以指定在參數(shù)數(shù)目可變處采用參數(shù)的方法參數(shù)。在方法聲明中的params
關(guān)鍵字之后不允許任何其他參數(shù),并且在方法聲明中只允許一個params關(guān)鍵字。
26.C#中有沒有運算符重載?能否使用指針?
?重載操作符意味著使該操作符具有不同的行為
?使用操作符可以使方程式簡樸易懂
?重載運算符使用operator關(guān)鍵字來創(chuàng)建一個運算符方法
能使用指針,在C#中很少需要使用指針,但仍有一些需要使用的情況。例如,在下列情況
中使用允許采用指針的不安全上下文是對的的:
?解決磁盤上的現(xiàn)有結(jié)構(gòu)
9涉及內(nèi)部包含指針的結(jié)構(gòu)的高級COM或平臺調(diào)用方案
?性能關(guān)鍵代碼
不鼓勵在其他情況下使用不安全上下文。具體地說,不應(yīng)當(dāng)使用不安全上下文嘗試在C#中
編寫C代碼。
27.C#中有很多類被定義為public有什么意義?
Public關(guān)鍵字將公共訪問權(quán)限授予一個或多個被聲明的編程元素。對公共元素的可訪問性
沒有限制。
28.Internal修飾符有什么含義?
internal關(guān)鍵字是類型和類型成員的訪問修飾符。內(nèi)部成員只有在同一程序集中的文獻內(nèi)才
是可訪問的。內(nèi)部訪問通常用于基于組件的開發(fā),由于它使一組組件可以以私有方式進行合
作,而不必向應(yīng)用程序代碼的其余部分公開。例如,用于生成圖形用戶界面的框架可以提供
“控件”類和“窗體”類,這些類通過使用品有內(nèi)部訪問能力的成員進行合作。由于這些成
員是內(nèi)部的,它們不向正在使用框架的代碼公開。在定義具有內(nèi)部訪問能力的成員的程序集
外部引用該成員是錯誤的。
29.JAVA的代碼是半編譯半解釋的C#的代碼是否也是這樣
C#源碼通過語言編譯器執(zhí)行第一次編譯,變?yōu)橹虚g語言,然后再由CLR編譯成可
執(zhí)行代碼.
30.私有程序集與共享程序集有什么區(qū)別?
私有程序集:
?默認(rèn)情況下,C#程序編譯為私有程序集
?需要放在應(yīng)用程序所在的文獻夾中
?程序集的名稱在應(yīng)用程序中應(yīng)當(dāng)是唯一的
共享程序集:
?可以被不同的應(yīng)用程序共享
?在所有使用程序集的應(yīng)用程序中,程序集名稱應(yīng)當(dāng)是唯一的
?放在全局程序集緩存中
31.請解釋進程與線程的區(qū)別?進程與程序的區(qū)別?
用最簡短的話來說,進程就是當(dāng)前運營的應(yīng)用程序。線程是操作系統(tǒng)向其分派解決器時間的
基本單位。線程可執(zhí)行進程的任何一部分代碼,涉及當(dāng)前由另一線程執(zhí)行的部分。
32.CLR與IL分別是什么含義?
CLR(公共語言運營庫):能管理內(nèi)存,可以輕松地設(shè)計其對象可以跨語言互動的組件和應(yīng)用程
序,編譯一次,并可以在任何支持運營庫的CPU和操作系統(tǒng)上運營,跨語言集成(特別是
跨語言繼承)
IL(中間語言):可用于語言互操作性,IL不是字節(jié)代碼,但很接近字節(jié)代碼,因此執(zhí)行應(yīng)用
程序時,IL到機器代碼的轉(zhuǎn)換要快很多。獨立于CPU的指令集。由CLR轉(zhuǎn)換為特定于CPU
的代碼。
33.對象能否調(diào)用靜態(tài)方法
對象能調(diào)用靜態(tài)方法。
34.請說明如下代碼的結(jié)果
classFather{
voidshow(){
Console.Write("Father");
)
staticvoidMain(stringlJargs){
Fatherobj=newChild();
obj.show();
classChild:Father{
voidshow(){
Console.Write("Child");
)
)
執(zhí)行結(jié)果為:Father.
二、ASP.NET
1.ASP.NET中的身份驗證有那些?請解釋。
(1)Windows驗證:指定Windows身份驗證作為默認(rèn)的身份驗證模式.假如是任何形式的
Internet信息服務(wù)(HS)身份驗證,則使用此模式.
(2)Forms驗證:指定基于ASP。NET窗體的身份驗證作為默認(rèn)的身份驗證模式。
⑶Passport:指定MicrosoftPassport身份驗證作為默認(rèn)的身份驗證模式。
(4)None:不指定身份驗證,僅合用于匿名用戶,或者應(yīng)用程序可以解決事件以提供它們自
己的身份驗證情況。
2.什么是WEB控件?使用WEB控件有那些優(yōu)勢?
WEB控件是能拖放在WEB頁面上的控件
WEB控件分為:內(nèi)部控件,列表控件,復(fù)雜控件,驗證控件
?WEB控件優(yōu)勢:Web控件是對象
-與對象同樣,Web控件擁有方法和屬性,并且響應(yīng)事件
-一旦將Web控件涉及在Web頁中,就可以設(shè)立其屬性并調(diào)用其方法
-可認(rèn)為Web控件編寫服務(wù)器端代碼以響應(yīng)在客戶端上發(fā)生的事件
3.請解釋ASP。NET中以什么方式進行數(shù)據(jù)驗證?
是以驗證控件進行數(shù)據(jù)驗證的。
4.請談?wù)剬φ齽t表達式的見解?
能將一些比較復(fù)雜的驗證邏輯以簡樸的驗證表達式驗證.
5.ASP,NET中共有幾種類型的控件?各有什么區(qū)別?
WEB控件分為:內(nèi)部控件,列表控件,復(fù)雜控件,驗證控件
內(nèi)部控件-內(nèi)部控件的使用方法與HTML控件相同,它們映射到HTML元素并通過使用
runat="server"屬性在服務(wù)器上執(zhí)行
列表控件-用于在Web頁中創(chuàng)建數(shù)據(jù)列表
復(fù)雜控件--?當(dāng)希望控件擁有復(fù)雜的功能或使用HTML元素?zé)o法創(chuàng)建的功能豐富的用戶界
面時,可以使用復(fù)雜控件
驗證控件-輸入控件的數(shù)據(jù)需要進行準(zhǔn)確性和取值范圍方面的檢查
6.WEB控件可以激發(fā)服務(wù)端事件,請談?wù)劮?wù)端事件是怎么發(fā)生并解釋其原理?自動傳
回是什么?為什么要使用自動傳回。
由于ASP。NET是Web頁面和服務(wù)端分離的,因此要產(chǎn)生了服務(wù)端事件.
?使用一doPostBack函數(shù)可以自動地把客戶端的javascript事件轉(zhuǎn)變?yōu)橐粋€服務(wù)器端的事件
?A框架自動為我們解決有關(guān)的細(xì)節(jié)簡化工作
使用自動傳回的特性:在檢測到一個特定用戶動作時,自動傳回可以將這個頁面?zhèn)骰胤?/p>
務(wù)器以解決事件.
7.WEB控件及HTML服務(wù)端控件能否調(diào)用客戶端方法?假如能,請解釋如何調(diào)用?
8.ASPoNET與ASP相比有什么優(yōu)勢?
ASP的缺陷:
(1)VBScript和JavaScript是在ASP中僅可使用的兩種腳本語言。它們是基本的非類型化語
言.在ASP中不能使用強類型語言.
(2)ASP頁面需要解釋,使得它執(zhí)行速度較慢。
(3)ASP頁面非常凌亂。
(4)在使用ASP創(chuàng)建WEB應(yīng)用程序時,程序員和設(shè)計人員必須在同一文獻上一起工作。
(5)在ASP中,必須通過編寫代碼來提供所需的任何功能。
(6)在ASP中沒有對代碼給予太多的關(guān)注。
(7)在ASP中沒有調(diào)試機制。
(8)在ASP中。必須停止WEB服務(wù)器才干安裝DLL的新版本,并且在應(yīng)用程序中使用DLL
的新版本之前,必須先在注冊表中注冊它,并且,DLL注冊過程非常復(fù)雜。
ASP.NET的優(yōu)點:
(1)ASPoNET中支持強類型語言.
(2)ASP。NET頁將被編譯而不是解釋,這樣它們的執(zhí)行速度就比ASP頁快。
(3)ASP。NET提供聲明性服務(wù)器控件。
(4)ASP。NET通過繼承機制來支持代碼的重用。
(5)ASP。NET具有Trace的內(nèi)置方法,可以幫助對頁面進行調(diào)試。
(6)在ASP。NET中,置于應(yīng)用程序的BIN目錄中的任何組件將自動相應(yīng)用程序可用.
9.請解釋web.config文獻中的重要節(jié)點
動態(tài)調(diào)試編譯—<compilation/>,自定義錯誤信息—<customErrors/>,身份驗證一
<authenlication/>,授權(quán)--〈authorization/〉,應(yīng)用程序級別跟蹤記錄-<lrace/>,會話狀態(tài)設(shè)立
--<sessionState/>,全球化--〈globalization/〉
10.請解釋ASP。NET中的web頁面與其隱藏類之間的關(guān)系?
11.什么是viewstate,能否禁用?是否所用控件都可以禁用?
12.請解釋該錯誤
13.當(dāng)發(fā)現(xiàn)不能讀取頁面上的輸入的數(shù)據(jù)時很有也許是什么因素導(dǎo)致的?怎么解決
14.請解釋一個WEB頁面中代碼執(zhí)行順序。
15.請解釋什么是上下文對象,在什么情況下要使用上下文對象
16.請解釋轉(zhuǎn)發(fā)與跳轉(zhuǎn)的區(qū)別?
17.請解釋ASP.NET中不同頁面之間數(shù)據(jù)傳遞有那些方式?
18.請解釋ASP。NET中buttonlinkbuttonimagebutton及hyperlink這四個控件之
間的區(qū)別
19.請解釋一下。NET多層應(yīng)用程序中層與層之間以那幾種方式進行數(shù)據(jù)傳遞。并解
釋你自己的項目中采用那種方式進行。
20.假如出現(xiàn)ASP。NET中的事件不能觸發(fā)也許由于什么因素導(dǎo)致?請列舉至少兩個
21.假如需要在datagride控件中的某一列中添加下拉列表框并綁定數(shù)據(jù)怎么解決?
22.請解釋中的數(shù)據(jù)綁定與傳統(tǒng)數(shù)據(jù)綁定有什么區(qū)別?
23.請以圖示方式解釋ADO。NET的對象模型。
24.請解釋webService?如何實現(xiàn)webService。
25.假如用dataSet提交數(shù)據(jù)請編寫實現(xiàn)代碼?
26.DataList能否分頁,請問如何實現(xiàn)?
27.請列舉DataSet中的了對象?
28.請分別比較JDBCADOADO.NET并說明三者之間的異同點及優(yōu)勢
29.請解釋這個正則表達式“[AB][TJG]n-3][QSW]\d{4}”
30.在ASP.NET中如何進行文獻上傳?
簡要地寫出一個.NETRemoting的示例
【考點】
.NETRemoting程序的原理,.NETRemoting的基本編寫方法。
【出現(xiàn)頻率】
★★☆☆☆
【解答】
在VS2023中添加新的類庫項目,并命名為NetRmClass,將所屬解決方案命名為NetRm,
勾選“創(chuàng)建解決方案的目錄”。這樣,NetRmClass類庫項目目錄即屬于NetRm解決方案,
并可以繼續(xù)向該解決方案添加更多的其他相關(guān)項目。類庫項目在這里僅用于創(chuàng)建一個遠程對
象的類,將項目中的cs文獻命名為RmObj,其包含的類型同樣為RmObj,編寫RmObj.cs
如代碼13.4所示。
代碼13.4遠程對象類定義:RmObj.cs
usingSystem;
usingSystem.Windows.Forms;
namespaceNetRmClass
(
publicclassRmObj:MarshalByRefObject
(
〃在構(gòu)造函數(shù)中,用提醒窗口提醒雙方用戶遠程對象創(chuàng)建成功
publicRmObj()
{
MessageBox.Show(“遠程對象已經(jīng)倉U建","提醒信息”);
//調(diào)用Diss方法,會在服務(wù)器端的控制臺程序中輸出方法參數(shù)
publicvoidDiss(stringmsg)
Console.WriteLine("客戶端信息:"+msg);
)
〃該方法可返回字符串
publicstringDisc()
(
return”與服務(wù)器端完畢通信”;
)
)
)
將NetRm解決方案中的NetRmClass項目進行編譯(VS2023中選擇菜單欄的“項目|生成”
命令,快捷鍵為Crtl+F6),即可在該項目目錄中的“bin\Debug”途徑下生成編譯后的
NetRmClass.dll程序集。
在VS2023中的NetRm解決方案再次添加新的控制臺應(yīng)用程序項目,并命名為NetRmServer。
該項目所生成的程序集作為Remoting的服務(wù)器端,一方面需要添加“NelRmClass.dll”程序
集引用,并導(dǎo)入NetRmClass命名空間,編寫該項目的Program.cs如代碼13.5所示。
代碼13.5Remoting服務(wù)器端程序:Program.cs
usingSystem;
usingSystem.Runtime.Remoting;
usingSystem.Runtime.Remoting.Channels;
usingSystem.Runtime.Remoting.Channels.Tcp;
usingNetRmClass;
namespaceNetRmServer
classProgram
〃聲明TcpServerChannel類型的靜態(tài)字段channels
staticTcpServerChannelchannels;
staticvoidMain(slring[]args)
(
//創(chuàng)建新的TcpServerChannel對象,端標(biāo)語為3000,引用為channels
channels=newTcpServerChannel(3000);
〃將channels注冊到信道服務(wù)
ChannelServices.RegisterChannel(channels,false);
〃創(chuàng)建知名服務(wù)類型的對象,傳遞遠程對象的類型、對象URI和激活對象的枚
舉成員
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RmObj),uMyUri",
WellKnownObjectMode.Singleton);
〃信息提醒,當(dāng)用戶輸入字符,則結(jié)束程序
Console.WriteLine("二二二二二二服務(wù)器端己啟動=====");
Console.ReadQ;
添加“NetRmClass.dll”程序集引用后,該程序集的副本即被復(fù)制到NelRmServer項目目錄
中的“bin'Debug”途徑下,以供NetRmServer項目生成的程序集使用。將NetRm解決方案
中的NetRmServer項目進行編譯,即可在該項目目錄中的“bin'Debug”途徑下生成編譯后
的NetRmServer.exe程序集。
在VS2023中的NetRm解決方案再次添加新的Windows窗體應(yīng)用程序項目,并命名為
NetRmClientc該項目所生成的程序集作為Remoting的客戶端,一方面仍然需要添加
“NetRmClass.dll”程序集引用,并導(dǎo)入NetRmClass命名空間。在“Forml”窗體的設(shè)計視
圖中添加一個Button控件和TextBox控件,分別命名為“button1”和“textBox1”,編寫Forml.cs
如代碼13.6所示。
代碼13.6Remoting客戶端程序:Forml.cs
usingSystem;
usingSystem.Windows.Forms;
usingSystem.Runtime.Remoting.Channels;
usingSystem.Runtime.Remoting.Channels.Tcp;
usingNetRmClass;
namespaceNetRmClient
(
publicpartialclassForml:Form
(
〃聲明TcpClientChannel類型的字段channelc
TcpClientChannelchannelc;
〃聲明RmObj類型的字段obj
RmObjobj;
publicForm1()
InitializeComponent();
privatevoidForm1_Load(objectsender,EventArgse)
〃創(chuàng)建TcpClientChannel對象,引用為channelc
channelc=newTcpClientChannel();
〃將channels注冊到信道服務(wù)
ChannelServices.RegisterChannel(channelc,false);
〃創(chuàng)建遠程對象
obj=(RmObj)Activator.GetObject(typeof(RmObj),"tcp://localhost:3000/MyUrin);
)
privatevoidbutton1_Click(objectsender,EventArgse)
(
stringMyName=textBox1.Text;
〃調(diào)用遠程對象的Diss方法,并傳遞用戶輸入值
obj.Diss(MyName);
〃調(diào)用遠程對象的Disc方法,返回值賦值給textBox1控件的“Text”屬性
this.textBox1.Text=obj.Disc();
)
)
);
添加“NetRmClass.dll”程序集引用后,該程序集的副本同樣被復(fù)制到NetRmClient項目目
錄中的“bin\Debug”途徑下,以供NetRmClient項目生成的程序集使用。將NetRm解決方
案中的NetRmClient項目進行編譯,即可在該項目目錄中的“bin'Debug”途徑下生成編譯
后的NetRmClient.exe程序集。
至此,一個簡樸的.NETRemoting應(yīng)用解決方案已完畢,其中服務(wù)器端為控制臺程序,客戶
端為Windows窗體程序。服務(wù)器端所指定的位置是“l(fā)ocalhost",也可以根據(jù)程序需要更改
為IP地址。
【分析】
本題重要考察面試者對Remoting應(yīng)用原理的結(jié)識,該解答并不適宜于直接應(yīng)用于實際開發(fā)。
當(dāng)服務(wù)器端程序運營后(即運營NetRmServer.exe),用戶在客戶端程序中輸入一些文本,并
單擊“button」’按鈕,服務(wù)器端程序和客戶端程序運營效果如圖13.4所示。
圖13.4.NETRemoting應(yīng)用示例
解答所編寫的.NETRemoting應(yīng)用用于在本機上測試,但是己經(jīng)展示了.NETRemoting技術(shù)
的基本編寫方法。通過示例,可以清楚理解該技術(shù)的強大功能以及靈活性,但是需要編程者
編寫大量的代碼,并且需要一致的運營環(huán)境支撐。
WCF技術(shù)有什么優(yōu)勢
【考點】
對WCF技術(shù)的了解,WCF技術(shù)的基本內(nèi)容。
【出現(xiàn)頻率】
★★☆☆☆
【解答】
常用的分布式技術(shù)有COM+、.NET遠程技術(shù)(Remoting)、WebService和微軟消息隊列服
務(wù),WCF技術(shù)將這些分布式技術(shù)整合為一個高效的API。常用的那些分布式技術(shù)只能解決
項目開發(fā)中某個方面的問題,并且不同技術(shù)對平臺規(guī)定不同。在項目中有時要使用到多種技
術(shù)從而導(dǎo)致這些技術(shù)所提供的服務(wù)有重疊之處,并且整個項目的維護復(fù)雜性大大增長。WCF
技術(shù)提供了一個完整統(tǒng)一的方案解決這些問題,它提供了一個用于訪問各種分布式技術(shù)的通
用API,并且增長了很多必要的服務(wù)。
【分析】
本題重要考察面試者對.NETFramework新版本中WCF技術(shù)的基本認(rèn)知。公司招聘.NET程
序員不一定非要純熟掌握WCF這樣的新技術(shù),但是一定會規(guī)定所招聘的人才具有對新技術(shù)
的了解,對新技術(shù)探索的好奇心。本題即為這樣的目的而設(shè),難度不大,只要面試者對新技
術(shù)有一定限度的了解,通過短時間的培訓(xùn)即可掌握,其考察重點在于面試者的知識廣度。
.NETRemoting和WebService有什么異同
【考點】
.NETRemoting技術(shù)相對于WebService的優(yōu)勢和劣勢.
【出現(xiàn)頻率】
★★★☆☆
【解答】
qRemoting技術(shù)可以靈活地定義其所基于的協(xié)議,比如HTTP協(xié)議和TCP協(xié)議。在實
際開發(fā)中,Remoting一般使用TCP協(xié)議,這樣可保證在保持狀態(tài)的情況下,獲取比Web
Service更好的性能,而WebService默認(rèn)情況下是沒有狀態(tài)的。
qRemoting技術(shù)不是行業(yè)標(biāo)準(zhǔn),而WebService是行業(yè)標(biāo)準(zhǔn),并也許成為下一代網(wǎng)絡(luò)
數(shù)據(jù)互換的核心組成部分。
qRemoting技術(shù)可用.NET的Windows窗體程序或Windows服務(wù)進行啟動,也可以使
用IIS部署,而WebService則必須通過IIS之類的服務(wù)啟動。
q在VS2023等.NET開發(fā)環(huán)境中,專門對WebService的調(diào)用進行了封裝,可以直接
通過添加Web引用或服務(wù)引用調(diào)用WebService,節(jié)約大量代碼。而Remoting需要編寫更
多代碼,開發(fā)效率較低。
q.NETRemoting的通信規(guī)定雙方運營相同的平臺框架,如.NETRemoting需要客戶端
和服務(wù)器端安裝.NETFramework。而WebService是平臺獨立的,可跨語言(支持XML的
語言)互動。
【分析】
本題考察面試者的數(shù)據(jù)庫相關(guān)的ASP.NET開發(fā)經(jīng)驗,.NETRemoting與WebService有所不
同,Remoting技術(shù)支持HTTP以及TCP信道,并且不僅能傳輸XML格式的SOAP包,也
可以傳輸傳統(tǒng)意義上的二進制流,這使得Remoting效率更高也更加靈活。Remoting不依賴
于IIS,服務(wù)器端和客戶端可以非常靈活地部署。從某些方面上來講WebService其實上
是.NETRemoting的一種特例。
【考點】
創(chuàng)建WebService的基本代碼。
【出現(xiàn)頻率】
★★★☆☆
【解答】
在VS2023中添加新的WEB服務(wù)代碼模板到WebSvRm項目,并命名為MyWebSv.asmXo
這個代碼文獻實際已經(jīng)具有了WebService的基本代碼結(jié)構(gòu),這里編寫一個能將小寫字母轉(zhuǎn)
換為大寫字母的WebService應(yīng)用。一方面編寫MyWebSv.asmx.cs如代碼13.1所示。
代碼13.1轉(zhuǎn)換大寫字母的WebService:MyWebSv.asmx.es
usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.Services;
usingSystem.Web.Services.Protocols;
usingSystem.Xml.Linq;
namespaceWebSvRm
(
〃默認(rèn)命名空間的指定
lWebService(Namespace="")]
(WebServiceBinding(ConformsTo=WsiProfiles.BasicProfilel_l)]
publicclassMyWebSv:System.Web.Services.WebService
〃聲明WebMethod特性,該方法才可以被訪問
[WebMethod]
publicstringConvertWord(stringword)
(
returnword.ToUpperlnvariant();
)
)
)
然后在WebSvRm項目中添加WEB引用,地址為uhttp://localhost/MyWebSv.asmx",這時項
目目錄下將生成WebReferences目錄,這個目錄包具有l(wèi)ocalhost子目錄。然后在WebSvRm
項目的默認(rèn)首頁,即Default.aspx中調(diào)用WebService以輸出結(jié)果,一方面編寫Default.aspx
如代碼13.2所示。
代碼13.2調(diào)用WebService的頁面:Default.aspx
<%@PageLanguage=,'C#"AutoEventWireup=,,true"CodeBehind=',Default.aspx.cs"
Inherits=,,WebSvRm._Default"%>
<!DOCTYPEhtmlPUBLICM-//W3C//DTDXHTML1.0Transitional//EN'>
<htmlxmlns=,H,>
<headrunat="server">
調(diào)用WebService</title>
</head>
<body>
<formid="formr,runat=,,servern>
<div>
請輸入需要轉(zhuǎn)換大寫字母的初始字母或單詞:<asp:TextBoxrunat="server"
ID=ninput"x/asp:TextBox>
<asp:Buttonrunat="server”ID二“btn”Text="開始轉(zhuǎn)換”/>
<hr/>
調(diào)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多層砌體結(jié)構(gòu)施工方案
- 室外污水施工方案
- 水泥砼道路施工方案
- 援助學(xué)習(xí)資料
- 2025年歷史社區(qū)面試試題及答案
- 2025年張店二模歷史試題及答案
- 6年級下冊文言文學(xué)弈
- 5一6年級讀書卡
- 低溫法蘭標(biāo)識
- cdga數(shù)據(jù)治理工程師教材
- LY/T 2499-2015野生動物飼養(yǎng)場總體設(shè)計規(guī)范
- 愛德華閥門檢修工藝(2)2
- GB/T 13701-1992單標(biāo)準(zhǔn)氣體質(zhì)譜法鈾同位素分析
- AMOLED技術(shù)寶典(十年OLED技術(shù)經(jīng)驗總結(jié))
- 7S稽核查檢表-倉庫
- 小學(xué)科學(xué)《噪音的危害與防治》優(yōu)質(zhì)課件
- 病理學(xué)-第3章 局部血液循環(huán)障礙
- 湖北省黃石市基層診所醫(yī)療機構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室信息
- 打印版醫(yī)師執(zhí)業(yè)注冊健康體檢表(新版)
- 時代與變革-為人生而藝術(shù)
- 人教八年級下冊英語U5Do-you-remember-what-you-were-doing?課件
評論
0/150
提交評論