青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 13, 文章 - 0, 評論 - 3, 引用 - 0
數據加載中……

程序集 與 托管模塊(引用)

 

引用原文網址:http://www.moon-soft.com/doc/33045.htm
程序集 與 托管模塊

 

    如果你正在開發面向DotNet平臺的應用程序,那么你肯定對“程序集”和“托管模塊”這兩個概念不陌生,這是DotNet帶來的術語。這兩個概念很容易混淆,有人認為它們指的是同一樣事物,其實不然。這里,我寫下自己的一些理解。

     

       為了便于說明問題,我們先看看一個公司的某項目開發團隊,這個“團隊”由團隊“成員”組成(可能還有一些資源),而在這些團隊成員中,必然有一個成員是這個團隊的頭頭,為了表示不是普通的成員,頭頭都有一個稱號,比如說“經理”或者“負責人”。經常的,說到某個團隊,我們只要知道它的頭頭就可以了。也就是說,頭頭代表了這個團隊(注意,這里是"代表")。如果其他人有什么事情要與這個團隊交流(比如團隊向外說明本團隊完成了什么任務等),沒有必要將每個成員找來交流,我們只要找到頭頭就可以了。 因為頭頭知道本團隊的一切,他掌握了關于團隊的所有信息:本團隊有哪些成員,而且有些什么資源可以利用,與其他哪些團隊有交流等等。常見的團隊有多個成員,一個成員的團隊很少見(頭頭也是他),但為了說明問題,我們假定一個成員的團隊和多個成員的團隊都存在。

 

    從上面的討論中我們可以這樣總結:團隊是個邏輯概念,并不是指某個人或資源,它是一個集合,而且這個集合不為空,只有當擁有大于或者等于多個成員的時候它才稱之為團隊。

 

       嘿,大家看出來了,我之所以要說項目開發團隊和成員,是因為在DotNet中的程序集和托管模塊的概念與此類似。程序集其實并不是說某個文件,它是一個邏輯概念,就像一個團隊。當然,我們習慣說a.exe 或者b.dll是個程序集,其實這樣說多少會讓人混淆,請看下面的說明。而托管模塊就像是團隊中的團隊成員。哈,你肯定想到了,其中必然有一個托管模塊是整個“團隊”的“頭頭”,它負責管理所有的托管模塊,關于這個程序集的一些信息也保存在這個托管模塊中。我們把這樣的模塊叫做“主托管模塊”(我記得某本書上是這樣叫的)。為了區分主托管模塊和普通托管模塊,怎么辦呢?這個好說,人最擅長給自己掛頭銜了,借鑒一下。我們給普通托管模塊和主托管模塊不同的后綴名,普通托管模塊的后綴名是.netmodule,而主托管模塊的后綴名是.exe 或者.dll。和開發團隊中頭頭代表整個團隊一樣,主托管模塊代表著整個程序集。既然是主托管模塊,那么它肯定與其他托管模塊不一樣。一般的托管模塊包含有IL代碼和元數據,而這個主托管模塊有沒有IL代碼和元數據并不重要,但它一定要有“清單”,也就是關于整個程序集的數據。

 

為什么主托管模塊會有兩種后綴名呢?這是因為分工的原因,有的程序集是為其他程序集提供便利的,它實現了一些數據類型(類庫)或者擁有某些資源――這就是后綴名為.dll的程序集。這樣的程序集不喜歡拋頭露面,它們是“幕后程序集”。另一種程序集,后綴名為.exe,用戶直接和它們打交道。有的功能它自己實現,但有些呢就交給幕后程序集去實現。為了區別,我們就把這樣的程序集叫做“前臺程序集”吧。DotNet規范中沒有這兩個概念,這里是為了理解才造的詞。當然,讀者朋友都會有自己比較習慣的理解名字。一個可執行應用程序中,只有一個前臺程序集的概念,但是可以有零個或一個或多個幕后程序集。

 

我們又回到實際生活中的開發團隊概念上來。團隊的組成有這樣幾種情況:

a.一個成員,這樣的成員是比較厲害的那種,比如個人軟件開發者,自己對自己負責,自己是自己的頭頭;

b.多個成員,其中某個成員是頭頭;

程序集與此類似,所以就有了單模塊和多模塊程序集(有時也稱單文件程序集和多文件

程序集)。如果要實現的功能不是很煩雜,那么就用單模塊程序集吧;但是,如果要實現的功能比較多,而且也好分開,那么建議你用多模塊程序集吧,如果以后某個功能的實現方案改變的話,只要修改這個模塊就行了,這樣一來,極大的降低了開發的煩雜度。還有幾點要注意,有的托管模塊并不實現某種計算功能,它們僅僅是提供一些資源,比如說字符串;有時程序集除了包含托管模塊外,還包含一些另外的資源文件。上面說的好像不是很直觀,我們再結合下面的幾幅圖來理解。

 --------------------------------------

項目頭頭:經理

成員:小王

成員:小李

其他成員

其他成員

 

 -------------------------------------- 
                     圖1。某開發團隊

--------------------------------------

主托管模塊:a.exeb.dll

普通托管模塊1

file1.netmodule

普通托管模塊2

file2.netmodule

其他托管模塊

一些資源文件

 

                              

------------------------------------
                                          2。某程序集示意圖


    我相信現在大家對程序集和托管模塊分別是什么以及兩者間的關系有了較好的理解。但是如果有源代碼輔助一下那就更好了。是的。對程序員來說,源代碼比什么都親切。好的,下面就舉兩個簡單的例子
(C#語言表述)。一個是單模塊程序集,一個是多模塊程序集。兩者都是前臺程序集(后綴名是exe)。我用Visual C# 2003 集成開發環境試了一下,竟然發現它不支持多程序集的開發(希望是我沒有找到)。沒關系,我們還有DotNet FrameWork SDK呢,不用怕。它自帶的C#編譯器csc.exe很好用。至于csc的用法我就不多說了。

 

例子1。單模塊程序集:

首先找個文本編輯器,將下面的代碼敲進去,然后將它保存起來,取名為hello.cs 例如我把它存為e:\test\hello.cs

 

/*

 *hello.cs 在控制臺上顯示一行字符串

 */

using System;

namespace nsApp

{

    public class CEnterPoint

    {

       static void Main()

       {

           Console.WriteLine("Hello, verybody!");

       }

    }

}

 

然后,打開SDK命令行提示,定位在hello.cs所在的文件夾,比如我的是e:\test。在命令行提示中輸入命令 csc hello.cs,這個命令默認的是生成 .exe文件,也就是一個主托管模塊。 現在到hello.cs所在的文件夾中看看,你會發現一個新文件hello.exe。好,一個主托管模塊誕生了。既然有主托管模塊,那么就標志著一個程序集的誕生。再看看,沒有其他的托管模塊,那么這個程序集就是一個單模塊程序集。

 

例子2。多模塊程序集:

假設我們要編一個程序來管理動物園。這里為了簡單,不考慮繼承等問題,每個動物用一個類來表示,并且用一個托管模塊來實現。將所有的動物都放在命名空間nsZoo中。現在動物園有兩種動物:DogCat。看下面的代碼:

/* Dog.cs */

using System;

 

namespace nsZoo

{

    public class Dog

    {

       public void SayHello()

       {

           Console.WriteLine("I am a dog, wang wang wang");

      

    }

}

 

/* Cat.cs */

using System;

 

namespace nsZoo

{

    public class Cat

    {   

       public void SayHello()

       {

           Console.WriteLine("I am a cat, miao miao miao");

       }

    }

}

 

/* Main.cs */

using System;

using nsZoo;

 

namespace nsApp

{  

    class CEnterPoint

    {   

       static void Main(string[] args)

       {   

           Dog aDog = new Dog();

           Cat aCat = new Cat();

 

           aDog.SayHello();

           aCat.SayHello();

 

           Console.ReadLine();

       }

    }

}

將上面的三個文件保存好,比如放在文件夾e:\zoo 中。再一次打開SDK命令行提示,定位到e:\zoo  

輸入命令 csc /t:module Dog.cs 看看文件夾,你會發現一個新文件 Dog.netmodule

哈,這是一個托管模塊,普通的托管模塊。

接著輸入命令 csc /t:module Cat.cs 同樣得到一個普通托管模塊 Cat.netmodule 。好現在有了兩個普通托管模塊。

為了實現一個程序集的夢想,必須還要有一個主托管模塊。好,接著輸入

csc /addmodule:Dog.netmodule;Cat.netmodule Main.cs  你會在文件夾中發現一個名為Main.exe的文件,這就是你想要的主托管模塊。

 

好了。現在你有三個托管模塊,并且任命其中一個為主托管模塊,這樣你就擁有了一個程序集了。這個程序集的組成是:Dog.netmodule, Cat.netmodule, Main.exe 。我們習慣說這個程序集是Main.exe 。但是一定要知道,Main.exe 其實是一個程序集的“頭頭”,由它代表著整個程序集。

 

posted on 2009-04-11 20:46 五味雜陳 閱讀(202) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲婷婷在线| 午夜精品久久久久久久蜜桃app| 久久av在线看| 黄色成人免费网站| 老色批av在线精品| 欧美成人高清视频| 亚洲天堂av在线免费| 在线午夜精品| 国产亚洲精品自拍| 国产伦一区二区三区色一情| 午夜久久黄色| 性色av一区二区怡红| 在线观看中文字幕不卡| 亚洲精品免费电影| 国产精品成人一区二区三区吃奶| 亚洲综合第一| 亚洲国产老妈| 欧美午夜不卡影院在线观看完整版免费 | 欧美一区不卡| 久久精品水蜜桃av综合天堂| 亚洲国产成人精品女人久久久| 亚洲福利专区| 午夜精品福利在线观看| 亚洲盗摄视频| 一本不卡影院| 亚洲国产福利在线| 亚洲一区欧美一区| 在线视频国内自拍亚洲视频| 日韩午夜一区| 在线观看日韩www视频免费 | 久久久精品国产免大香伊 | 午夜激情久久久| **性色生活片久久毛片| 亚洲伦理久久| 国产在线精品成人一区二区三区 | 亚洲欧洲视频在线| 国产视频丨精品|在线观看| 欧美激情在线观看| 国产亚洲福利| 日韩亚洲欧美高清| 亚洲电影免费在线观看| 日韩亚洲一区二区| 亚洲福利视频二区| 亚洲欧美国产高清va在线播| 亚洲人体1000| 久久九九国产精品| 亚洲综合色激情五月| 鲁大师成人一区二区三区| 亚洲在线视频一区| 欧美激情综合五月色丁香| 免费国产一区二区| 国产欧美日本一区二区三区| 亚洲精品自在久久| 日韩视频一区二区| 久久一二三国产| 久久久久99精品国产片| 国产精品久久毛片a| 亚洲乱码国产乱码精品精| 亚洲高清在线| 久久精品99国产精品日本| 亚洲一区欧美激情| 欧美视频观看一区| 亚洲看片网站| 99视频一区二区三区| 欧美成人精品在线视频| 欧美成人精品h版在线观看| 国产欧美日韩视频在线观看| 一区二区成人精品| 亚洲午夜电影在线观看| 欧美黄色影院| 性感少妇一区| 国产精品入口| 午夜视频在线观看一区二区| 性色av一区二区三区红粉影视| 欧美丝袜一区二区三区| 中文在线资源观看网站视频免费不卡 | 久久久青草婷婷精品综合日韩| 国产麻豆综合| 亚洲欧美制服另类日韩| 欧美资源在线观看| 国产精品一卡二| 欧美亚洲专区| 久久综合狠狠综合久久综合88 | 国产欧美短视频| 欧美一级电影久久| 麻豆成人综合网| 亚洲人成人一区二区在线观看 | 午夜久久一区| 久久天天综合| 亚洲国产精品电影| 欧美久久电影| 亚洲免费视频成人| 浪潮色综合久久天堂| 亚洲精品黄网在线观看| 欧美日韩一区综合| 午夜精品久久久久久久99樱桃| 久久婷婷久久一区二区三区| 亚洲国产精品高清久久久| 欧美日本韩国一区二区三区| 亚洲在线视频观看| 欧美 日韩 国产 一区| 亚洲精品一区中文| 国产欧美1区2区3区| 久久久欧美一区二区| 亚洲三级网站| 久久国产日本精品| 亚洲美女中文字幕| 国产一区二区精品在线观看| 欧美国产视频在线观看| 欧美亚洲系列| 9l国产精品久久久久麻豆| 欧美夜福利tv在线| 夜夜爽av福利精品导航| 国产午夜精品全部视频在线播放 | 久久久久久久综合狠狠综合| 日韩午夜在线| 欧美福利在线观看| 欧美在线关看| 制服丝袜激情欧洲亚洲| 在线精品视频在线观看高清| 欧美日韩一区在线| 久久综合九色欧美综合狠狠| 亚洲欧美国产精品桃花| 99国产精品国产精品久久| 欧美电影在线免费观看网站| 亚洲欧美久久久| 亚洲精品一区久久久久久| 国内久久视频| 国产精品人人做人人爽| 欧美日韩视频在线一区二区观看视频 | 亚洲一区二区三区四区中文| 亚洲黄色免费网站| 免费不卡在线观看av| 久久九九久精品国产免费直播| 亚洲一区二区在线免费观看视频| 亚洲精品影院| 亚洲人成网站色ww在线| 亚洲高清av在线| 狠狠色噜噜狠狠色综合久| 国产在线观看一区| 国产综合视频在线观看| 国产欧美日韩中文字幕在线| 国产精品任我爽爆在线播放 | 欧美国产大片| 免费在线观看精品| 男男成人高潮片免费网站| 久久av一区二区| 久久国产欧美| 久久国产高清| 久久嫩草精品久久久精品一| 久久久久女教师免费一区| 久久精品99国产精品酒店日本| 欧美中文在线视频| 久久久久久电影| 免费欧美在线| 欧美日韩国产123| 欧美色网在线| 国产日韩在线不卡| 国产一区清纯| 亚洲国产高清一区二区三区| 亚洲欧洲久久| 亚洲视频在线观看视频| 欧美亚洲免费电影| 久久婷婷蜜乳一本欲蜜臀| 久久综合狠狠综合久久激情| 欧美a级片网站| 99re成人精品视频| 性视频1819p久久| 久久午夜精品| 欧美日产国产成人免费图片| 国产精品美腿一区在线看 | 欧美日韩一区二区三区| 国产精品久久久久三级| 国模一区二区三区| 日韩小视频在线观看| 国产精品中文在线| 欲香欲色天天天综合和网| 亚洲精品影视| 久久国内精品自在自线400部| 久久亚洲风情| 亚洲日韩成人| 欧美一区二区三区四区高清 | 久久免费的精品国产v∧| 快播亚洲色图| 国产精品裸体一区二区三区| 狠狠色丁香婷综合久久| 日韩视频中文字幕| 久久9热精品视频| 亚洲国产高清自拍| 欧美一区二区三区免费大片| 免费亚洲一区| 国产综合精品| 亚洲自拍电影| 亚洲国产专区校园欧美| 亚洲欧美日韩国产一区二区三区| 欧美成人激情视频免费观看| 国产农村妇女精品一二区| 亚洲精品欧美激情| 久久夜色精品国产噜噜av| 一区二区三区视频在线观看|