前言
上一篇我們穿插了C#的內容,本篇我們繼續(xù)來講講webapi中斷點續(xù)傳的其他情況以及利用webclient來實現斷點續(xù)傳,至此關于webapi斷點續(xù)傳下載以及上傳內容都已經全部完結,一直嚷嚷著把SQL Server和Oracle數據庫再重新過一遍,這篇過完,就要開始新的征程,每一個階段都應該有自己的小目標,要不然當工作太忙沒時間去充電,太閑又變得懶散,想想一切是為了未來買得起孩子高檔的奶粉就又有動力了。
話題
關于webapi斷點續(xù)傳下載的情況,之前我們利用webapi內置的api展開了具體的實現,這一節(jié)我們利用已經老掉牙的技術來實現,這個是看了一篇老外文章而想到的,具體地址忘記了,利用內存映射文件來實現斷點續(xù)傳,內存映射文件最常見的應用場景莫過于對于多個進程之間共享數據,我們知道進程與進程之間只能操作已經分配好各自的內存,當我們需要一個進程與另外一個進程共享一塊數據時我們該如何做呢,這個時候就要用到內存映射文件(MemoryMappedFile),內存映射文件是單一機器多進程間數據通信的最高效的方式,好了關于內存映射文件具體內容可以參考園友【.net 流氓】的文章。我們通過內存映射文件管理虛擬內存然后將其映射到磁盤上具體的文件中,當然我們得知道所謂的文件能夠被映射并不是將文件復制到虛擬內存中,而是由于會被應用程序訪問到,很顯然windows會加載部分物理文件,通過使用內存映射文件我們能夠保證操作系統會優(yōu)化磁盤訪問,此外我們能夠得到內存緩存的形式。因為文件被映射到虛擬內存中,所以在管理大文件時我們需要在64位模式下運行我們的程序,否則將無法滿足我們所需的所有空間。
斷點續(xù)傳(內存映射文件)
關于涉及到的類以及接口在之前文章已經敘述,這里我們就不再啰嗦,這里我們給出下載文件的邏輯。
/// <summary> /// 下載文件 /// </summary> /// <param name="fileName"></param> /// <returns></returns>