簡體   English   中英

64位asp.net的編程

[英]programming for 64-bit asp.net

在Windows Vista中提供了.NET 3.5編程和客戶端使用環境。 在以下情況下對64位OS進行編程有什么含義? 請指定是否存在功能或優化方面的問題-即在64位環境中它是否可以工作以及能否使其更好地工作。

1)您正在開發一個Web應用程序(asp.net c#)

2)您正在開發Win Forms商業應用程序(沒有驅動程序級別)

3)您正在開發硬件控制器

我本來以為情況1或2沒有區別,情況3可能有一些警告。但是,我對缺乏對64位VPN的支持感到困惑...必須存在一些問題。

對於#1,幾乎所有時間都沒有差異。 我在32位計算機上開發並部署到64位服務器場的大型.NET Web應用程序上工作。 我們遇到的唯一問題是與TFS有關-並不直接相關。

對於#2(在某種程度上來說是#3,因為它涉及調用非托管代碼的一般主題),可以在此處找到一個很好的答案。

1.和2沒有區別。除非您特別要求針對特定平台構建二進制文件,否則.Net工具將編譯為IL,IL在運行時將JIT編輯為實際平台。 即使您在安裝時正在生成應用程序,在大多數情況下,它也不會影響您的開發過程。

但是,在32位計算機上進行開發並針對P / Invoke,COM互操作或注冊表訪問的使用以64位為目標時,存在一些警告。 默認情況下,該應用程序將作為目標系統的本機應用程序進行JIT編輯,因此:

  • P / Invoke到32位dll將無法在32位dev機器上愉快地工作時將dll加載到64位目標系統上。
  • COM互操作將失敗,並且在目標64位計算機上未為32位inproc對象注冊類。 32位進程外對象可能會起作用,具體取決於它們在64位計算機上的注冊方式。 同樣,一切都將在您的32位開發人員機器上正常運行。
  • 對32位應用程序的注冊表項的注冊表訪問將在您的dev機器上運行,但將寫入64位目標系統上的其他位置。

您可以通過將應用程序強制為32位來解決所有這些問題,盡管這對於您列表中的方案2來說是可行的。

就驅動程序而言-我不確定您是否真的可以使用.Net編寫Windows驅動程序,至少我在這一領域沒有太多經驗(我寫的最后一個Windows驅動程序早在1993年,適用於Windows 3.11 :-)。 )。 但是,如果可以:

  • 與上述相同的問題適用
  • 直接訪問內存時,請注意32位和64位之間的尋址不同(始終使用64位指針)
  • 遵循Windows驅動程序工具包文檔中的最佳做法

除了Franci的答案外,請注意,一些更抽象的資源也會引發問題。

我通常使用僅32位ODBC驅動程序進行開發,並且必須強制將所有應用程序編譯為32位。

哦,別讓我開始了解VPN客戶端和較差的64位支持! 網絡公司痘!

暫無
暫無

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

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