簡體   English   中英

64位Windows服務,但需要32位dll

[英]64bits Windows Service but require a 32bits dll

我需要編寫一個64位的Windows服務,但是由於我使用的是32位dll,所以這是不可能的,我正在考慮編寫2個服務,其中一個從32位的dll中提取信息,然后將變量傳遞給64位的Windows服務。

但是我沒有這樣做的經驗,當我嘗試使用32位和64位Google時,它會返回大量網站,但是都無法使用。 因此,如果可能,請協助我。

我之所以寫64位Windows Service,是因為數據太大,計算/過程完成后至少產生了5Gb數據,但是要獲取初始數據,我需要使用32bit dll。

非常感謝

PlayKid

您所描述的並不是真正針對32位和64位...

它涉及2種Windows Services的通信,您可以通過任何IPC機制進行通信...一種非常快速的通信是使用共享內存(全局MutexMemoryMappedFile )...另一種將是TCP / IP,這將允許以便將來可能在單獨的機器上運行服務...另一種選擇是使用定義良好的接口等托管WCF服務。

我認為您可以只針對x86或anyCpu編寫一項服務,然后在x64服務器上進行部署時,應將其配置為僅以32位模式運行。 應該不需要創建或構建其中的2個即可:-)

編輯: PlayKid,我不確定我是否理解您的觀點或做出錯誤的假設,我認為您僅需要在x32模式下使用一項服務和主機,因為第三方32bit dll僅在以32位進程托管時才有效,所以我認為您可以構建普通的.NET服務,甚至可以在x64服務器中以32位模式托管它,它可以正常工作,而無需提供兩個服務並使它們彼此通信。 如果您有更多詳細信息,請編輯您的問題,並且此答案不能幫助您;-)

我需要編寫一個64位Windows服務

為什么需要64位? 32位服務將在Windows 64位版本下非常愉快地運行。 僅在需要專門使用64位功能或正在使用的庫已編譯為64位的情況下,才應編譯為64位,否則這樣做將無濟於事。

如果必須編譯為x64,則將需要使用您提到的一些進程間通信。 我認為您已經檢查了目標dll專門為x86,並且它不是.Net程序集,已編譯為AnyCPU? 您可以考慮在同一台計算機上托管x64 WCF服務,然后從x86 Windows服務接收信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM