WIndows NT服務和普通程式之間大資料傳輸問題
問題:共享記憶體在Windows服務和普通程式之間無法工作
我的專案中有一個後臺服務,開機自啟動,然後會去伺服器上獲取大資料,快取在自己的地址空間中。
另外一個程式(Windows Form介面)啟動之後會來這個服務這裡獲取這些資料。
開始為了方便開發除錯,我的後臺服務並沒有做成服務,開發時候就是一個直接的程式,稱為程式A。
啟動之後從伺服器端獲取大資料,然後通過共享記憶體的方式傳遞給程式B(即那個Windows form介面)。
我採用共享記憶體方式,因為要說到效率首先就想到共享記憶體,C#中共享記憶體的方法封裝在MemoryMappedFile類中,CreateNew()建立共享記憶體,OpenExsisting()開啟已有的共享記憶體來訪問。
開發的時候,程式A以程式的方式執行,我的這個流程工作沒有任何問題。
但是今天部署的時候,將程式A安裝位Windows服務之後,共享記憶體就無論如何也不能工作了。
要麼是找不到指定檔案,要麼就是什麼錯誤也沒有,但是什麼也讀不到。。。。
我在網上查了一下,貌似是說WIndows7下面 WIndows服務和程式是不能採用共享記憶體來進行資料傳輸的,而WIndows XP可以。。。 (我怎麼覺得很不合理呢???)
引用網路上的一個帖子的回覆:
=========================================================================
從vista以後的版本都測試不通過,winXp和win2003測試通過。 好像是為了安全性吧
=================================================================
另外我想說的是,Windows服務和普通程式,以及WinForm這些之間都是可以採用命名管道來進行通訊的。
訊息佇列也可以用於WIndows服務和普通程式之間的通訊,只是建立佇列的時候需要設定佇列的許可權,參見這裡。
這個問題亟需解決!!!
解決方法:命名管道
根據i命名管道的讀寫方法write(char[] buffer, int offset, int count),可以知道命名管道一次可以傳送的資料量大小是int.MAXVALUE,就是2^31 = 2G。
所以一般來說同一個機器之間的大資料傳輸需求可以滿足,下面是我的程式碼:
(一)這是WIndows服務中的一個執行緒,開啟一個命名管道,等待獲取大資料的請求:
(二)這是普通程式(window form)的程式碼,連線到命名管道,請求接收資料:
下面兩個是用的到兩個序列化的方法:
相關文章
- Mac和Linux之間傳輸資料,並匯出mysql資料到本地MacLinuxMySql
- 美國國防部從“中國”購買資料傳輸服務
- 不同資料庫間傳遞資料的問題資料庫
- 海量資料遷移之傳輸表空間(一)
- BeetleX大資料之產品分析服務大資料
- 傳輸表空間及問題處理
- 如何解決微服務之間的資料依賴問題?微服務
- Java NIO系列教程(五) 通道之間的資料傳輸Java
- 企業大資料傳輸方式,鐳速提供大資料傳輸解決方案大資料
- 關於廣域網的資料傳輸問題
- 微服務之間的資料依賴問題,該如何解決?微服務
- RMAN跨平臺傳輸資料庫和表空間資料庫
- 父子元件之間的傳值問題元件
- 技術筆記(12)網路資料傳輸問題筆記
- PC 和開發板之間傳輸檔案
- 分散式管理核心功能解析:網路服務和資料傳輸的實現分散式
- 大資料常見問題之資料傾斜大資料
- Ability之間或者程式間資料傳遞之物件(Sequenceable序列化)物件
- 玩轉大資料系列之四:搜尋服務大資料
- iOS 應用之間跳轉傳輸資料以及跳回源程式iOS
- 運動健康南向裝置接入服務傳輸資料解析舉例
- php原生socket實現客戶端與服務端資料傳輸PHP客戶端服務端
- RMAN跨平臺可傳輸表空間和資料庫資料庫
- vue-父子元件之傳值和單項資料流問題Vue元件
- mysql之 表空間傳輸MySql
- SAP各邏輯系統之間資料傳輸之ALE配置步驟
- WCF 服務應用程式與 服務庫之間的區別
- 對資料泵資料傳輸的時間統計
- WINDOWS NTWindows
- fragment之間相互傳資料、共享資料Fragment
- 服務與資料之爭
- 【傳輸表空間】使用 EXPDP/IMPDP工具的傳輸表空間完成資料遷移
- 微信小程式父子元件之間的資料傳遞微信小程式元件
- 蘋果手機和Windows之間互傳檔案蘋果Windows
- 多個JVM之間,資料共享的問題?JVM
- 資料線線損和長度對資料傳輸和網路傳輸的影響
- MTU問題導致大檔案傳輸速度很慢
- 天雲大律法律服務:2021年店裝行業法律問題大資料行業大資料