国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

轉(zhuǎn)貼:MSDN訪談錄之C#編程二

2024-07-21 02:25:26
字體:
供稿:網(wǎng)友
robert hess:c#被認為是微軟的私有語言嗎?

anders hejlsberg:其實并非如此。我們與產(chǎn)業(yè)伙伴特別是hp和intel合作,今年年初,我們向一個叫做ecma(歐洲計算機制造商協(xié)會)的歐洲標準化組織提交了建議,以便標準化c#和cli。 cli代表通用語言基層體系(common language infrastructure)。

robert hess:而這是不是有點類似于c runtime 和vb runtime?

anders hejlsberg:嗯,實際上cli是.net framework的一個大的子集。在某種意義上,它是.net可以移植到其它平臺的那部分。這意味著,例如,它不包括任何windows專門的ui庫,因為其它平臺對此并沒有多大的興趣。

robert hess:就象內(nèi)存管理,而且……

anders hejlsberg:嗯,絕對如此,內(nèi)存管理,大部份的類庫被包含在cli中。我們于9月份向ecma提交了這個建議,并在一次ecma會議上得到了采用,制訂這兩個標準的工作正在進行中。其中一個是c#標準,而另一個是cli標準。

robert hess:那么,c#具有ecma標準又意味著什么?

anders hejlsberg:嗯,這意味著其它產(chǎn)業(yè)伙伴們可以也最有可能在不同的平臺上實現(xiàn)該語言。

robert hess:如果我是類似波音這樣的公司,且擁有一些老式的pdp 11/70計算機,我想讓c#在其上面運行,可能會考慮利用ecma標準給這些老掉牙的家伙設計編譯器,如果沒有什么人已經(jīng)做了類似工作的話。

anders hejlsberg:絕對正確。現(xiàn)在這兩個標準實際上已相繼被提交,而目前c#本身并沒有規(guī)定一個runtime庫,而是依賴于.net framework,或者,當我們正在談論到標準提議時,c#依賴于通用語言基層體系為其提供的runtime基層體系和類庫。我們目前正在與標準化組織以及我們的產(chǎn)業(yè)伙伴們共同研究,以確定最低的門檻。很明顯,cli將被分成幾個層次,事實上我們向ecma提交的方案被分為幾個層次,這些層次開始于很低的核心層,而你真正地擁有了這些核心數(shù)據(jù)類型,一些象數(shù)組那樣十分簡單的東西,以及在那里的所有原子變量(atoms),但是分子(molecules)就不必要了。它們被構(gòu)建在更高層的棧上,因此對于嵌入設備也是這樣,實際上可以把其應用于一個非常輕量級的環(huán)境(lightweight environment),而這種輕量級環(huán)境可以移植到不同的平臺。

robert hess:因而我可以讓c#的一個版本在我的手表中或某些類似的設備中運行。

anders hejlsberg:是的,理論上是這樣,或在您的冰箱中,或任何需要的地方。


robert hess:在某種程度上,這就是.net framework的全部目標,也就是允許編程的基層體系存在于多種不同類型的設備中,通過網(wǎng)絡或藍牙等類似連接,一個設備就可以和另一個設備通訊,并且借用服務,提供相互支持,

anders hejlsberg:對,那是其中的一部分。我想,現(xiàn)在我們應當牢記于心,盡管您談論到了分布式應用程序或者設備之間的相互通訊,但安置在.net framework甚至是在cli中的基層體系,實際上并不要求在網(wǎng)絡的兩端都有.net存在。而且,我們所推薦的體系結(jié)構(gòu)確實具有引導作用,何時利用類庫來設計程序完全基于xml和soap這樣的產(chǎn)業(yè)標準,并且也可以在linux box(比方說java和apache web server)中實現(xiàn)它,然后利用其它工具在另一端開發(fā)相應的程序,如果你樂意的話。

robert hess:因此在我的c#應用程序里,假如我正在編寫它與一個外部服務連接,就可以視其為標準的c#調(diào)用,而運行于不同的機器上的一個外部服務可能是amazon.com,或者類似于其它一些既不運行windows也不運行c#的系統(tǒng)……


anders hejlsberg:這正是所有web服務的夢想……


robert hess:而所有要做的事情就只有實現(xiàn)soap了。

anders hejlsberg:是的,嗯,基本上我們所要做的是利用現(xiàn)有的internet的基層體系,意思是,傳輸協(xié)議是http,有效承載(payload)是以xml格式封裝的soap(soap formatted xml),并且實際上在網(wǎng)絡的另一端可以是任何東西。當從c#中訪問xml和soap的調(diào)用時,我們事實上有能力使它們看起來象具有方法的對象,但是我們給你提供了所有的基層體系,通過在.net framework中所具有的所有連續(xù)的基層體系,你便可以把方法調(diào)用轉(zhuǎn)換進xml soap包中,這樣的包可以穿越網(wǎng)絡并回傳然后再解包。


robert hess:好了,您說您從事c#的工作至今已經(jīng)幾年了,而xml的生命期也恰好與此相同。這就意味著當它們開始時,彼此之間是毫無了解的。


anders hejlsberg:嗯,xml的歷史可能要長一點。soap卻相當新,它與c#還有.net framework是齊頭并進的,并且我們也非常積極地從w3c引進這些標準化主體,我們一直在跟蹤它的發(fā)展,并把這些技術追加到最新的標準中。


robert hess:那么soap和xml之間在這一層次上的相互連接性(interconnectivity)是否當初就是c#一個方面的內(nèi)容,或者是隨著該語言的發(fā)展而發(fā)展的?


anders hejlsberg:嗯,我認為這里確實存在著一些距離。大部分需要處理xml和soap的基層體系是由.net framework而不是c#提供的。c#語言建立在.net framework的頂層,并使您具有訪問這些東西的權力,例如,通過我們在c#中稱之為屬性(attribute)的東西,在代碼中就可以直接表達什么東西正由這個類的實體映射(mapping)成為穿越internet的xml格式。所以我可以說,例如對于成員(field),我想使這個成員變成具有同樣名字的xml元素,讓這個類名變成xml里的標簽(tag)名,等等。而且屬性可以直接地集成到代碼里,這就是使xml 和 c#變得更易于使用的措施之一。


robert hess:那么它們真的很合適在一起?


anders hejlsberg: 是的,確實如此。


robert hess:當考慮一個應用程序的設計時,為了更好地運用c#,我想要有條有理地建立應用程序,有沒有什么不同的辦法?或者還是與正常地開發(fā)一個c應用程序具有相同的思路?

anders hejlsberg:嗯,我認為關其中的一個關鍵原則就是,您是以一種很深的面向?qū)ο蟮姆绞竭M行編程的,甚至當您在使用c#時,是以一種面向組件的方式進行的。所以會趨向于認為您的應用程序設計有點區(qū)別。好,如果您正在使用c++,就可能會想到寫對象等等。當您用c#寫程序時,例如您可能會想到,哎呀,我正在寫一個組件嗎?嗯,這個組件必須能加入到visual studios的工具欄,以便我可以把它拖到表單,或拖到一個商業(yè)對象,或拖到一個網(wǎng)頁,然后它是不是會被屬性檢查器(property inspector)顯示出來,哎呀,那么在那里我到底應該擁有什么屬性,我怎么控制下拉單里的東西,我能不能擁有那樣的編輯器?現(xiàn)在,我們把基層體系的所有東西都呈現(xiàn)給您,它使您認識到您的設計不同于c++傳統(tǒng)的設計。

robert hess:因此很多時候,您仍然在編寫應用程序,通過裝點修飾應用程序,您正好有更多的性能要展示。


anders hejlsberg:是的,您可以這么說。


robert hess: 有關更多此類面向服務的完整概念是什么呢?因此我正在編寫一個幾乎無gui的應用程序并且運行在一臺服務器上,并計劃用一個web客戶程序?qū)ζ溥M行攻擊。客戶程序請求首先到達服務器并要求回應以便跟蹤包(package)等類似的東西。這是否從根本上改變了思路,或者仍然是同樣的服務方向?


anders hejlsberg:嗯,我認為在某種意義上,它讓您多一點地考慮應用程序中的抽象。您應更加注意認識到,我是怎樣把應用程序安置到商業(yè)邏輯層(business logic tier)和表示層(presentation tier),是怎樣把api放到商業(yè)邏輯層,以便它既可以被表示邏輯用來表示html或基于ui的客戶,甚至也為遍布網(wǎng)上的web服務指明入口點(entry points)。因此,您應注意一點,再也不能編寫那些鐵板一塊的程序了。

robert hess:您是否想象這本身有助于人們利用他人的組件比過去更容易?我記得在波音公司工作時,我們老是遇到有關代碼重用這個關鍵問題。我們必須確保所編寫的任何應用程序、任何代碼都是專為代碼重用而設計的,雖然這聽起來在理論上確實是一個偉大的主意,但在實踐中,卻由于從來沒有得到好好的利用而壽終正寢了,因為重用別人的代碼簡直是難上加難。您認為這樣居然能使代碼重用更容易嗎?

anders hejlsberg:我認為會的,這里起關鍵作用的實際上就是.net framework。事實我們已經(jīng)定義了這樣一個底層(substrate),在其之上可以生成組件。而說到許多關于如何把它們裝入類中,如何使它們成為組件,我們給您明確的指導,而事實上整個framework都當作其中一個范例,但關鍵是組件一律要能被各種各樣的語言所訪問,因此這里您已經(jīng)談論過這個問題,例如,如果某些家伙在用cobol編寫一些語言或庫而您卻想從c++中利用它們,您知道,這會特別困難。實際上我們提供給您一個substrate,讓您進行上述交互性操作。所以您大有希望使組件交互操作。因為事實上令人感到困惑的是,組件是以不同的設計觀點或在不同的抽象層上編寫而成的,這正是使人們糊涂之處。他們并不習慣于這種風格的api,因此迷失在基層體系之中,只見樹木不見森林,您應該明白我的意思。因此通過說明許多關于如何寫組件,并且提供了用于寫組件的永久有效的api和基層體系,您就極其有希望獲得更好的重用性


robert hess:嗯,我認為解釋恰到好處。為了能抓住c#語言體系的重點,您認為最后還有什么重要的概念要讓觀眾去理解?

anders hejlsberg:我想最好的方法就是您應親自擺弄它。所以我會催促人們從我的站點下載,而我也相信您會給他們地址的。下載它,擺弄擺弄,寫出一些例子,參加我們的用戶組或新聞組,和其他用過它的人交談,看看他們有什么經(jīng)驗。我想你會過得很舒心的。


robert hess:我肯定會在本記錄稿的后面建立一個鏈接,以讓他們下載當前版本的c# runtime以及我們在pdc上公開的.net材料,我猜我們會有另一個版本的……


anders hejlsberg:我們的beta 1.0版要發(fā)布了……


robert hess: beta 1.0版很快就要發(fā)布了,因此您提到的新聞組里也要建立一個連接到beta 1.0的鏈接。因此您應保證寄給我的email里要含有這些新聞組,以便我能建立。


anders hejlsberg: 好的。


robert hess:謝謝anders,感謝您的談話,而且我希望觀眾感謝這位真正幫助過設計c#語言的專家,感謝他有關開發(fā)應用程序的心得。
    在短暫的休息之后,我們會繼續(xù)與一位程序員交談,至今他用c#開發(fā)應用程序已經(jīng)有些時日了,我們會了解到他對這種語言的想法,以及任何有助于我們用c#開發(fā)自己應用程序的線索。所以請不要走開哦。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 交口县| 九江县| 洪雅县| 常德市| 临洮县| 南雄市| 万荣县| 安乡县| 阳朔县| 桃江县| 寿光市| 栾川县| 中牟县| 新化县| 雷波县| 衡阳市| 兰溪市| 塘沽区| 北川| 喀喇| 漳浦县| 延安市| 老河口市| 南城县| 陵水| 绥芬河市| 永嘉县| 池州市| 老河口市| 台山市| 绩溪县| 屏东市| 榆社县| 梅河口市| 浙江省| 黄大仙区| 昭平县| 富民县| 东兰县| 合川市| 宽城|