为64位asp.net编程

时间:2009-09-01 03:26:10

标签: .net asp.net 64-bit

鉴于Windows 3.5的.NET 3.5编程和客户端使用环境。在以下情况下,对64位操作系统的编程有何影响?请说明是否存在功能或优化问题 - 即它是否有效,是否可以在64位环境中更好地工作。

1)您正在开发一个Web应用程序(asp.net c#)

2)您正在开发一个win form业务应用程序(没有任何驱动程序级别)

3)您正在开发硬件控制器

我原本认为在案例1或案例2中没有任何区别,并且在案例3中可能会有一些警告。但我对64位VPN缺乏支持感到困惑......必定存在一些问题

3 个答案:

答案 0 :(得分:1)

对于#1,几乎所有时间都没有区别。我致力于在32位计算机上开发并部署到64位服务器场的大型.NET Web应用程序。我们唯一的问题是使用TFS - 没有直接相关。

对于#2(在某种程度上#3,因为它涉及调用非托管代码的一般主题),一个好的答案可以是found here

答案 1 :(得分:1)

1.和2.没有区别。除非你特别要求你的二进制文件是针对特定平台构建的,否则.Net工具会编译为IL,它在运行时被JIT编辑到实际平台。即使您在安装时使用该应用程序,对于大多数情况,它也不会影响您的开发过程。

但是,在使用P / Invoke,COM互操作或注册表访问时,在32位计算机上开发并针对64位时,有几点需要注意。默认情况下,应用程序将被JIT编辑为目标系统的本机应用程序,因此:

  • P / Invoke到32位dll将无法在64位目标系统上加载dll,同时在32位开发机器上工作愉快。
  • COM interop将失败,并且未在目标64位计算机上注册32位inproc对象。 32位的proc-of-proc对象可能会起作用,具体取决于它们在64位计算机上的注册方式。同样,一切都可以在32位开发机器上正常工作。
  • 对32位应用程序的注册表项的注册表访问权限将在您的开发计算机上运行,​​但会写入64位目标系统上的其他位置。

您可以通过强制将应用程序设置为32位来解决这些问题,尽管这适用于列表中的方案2。

就驱动程序而言 - 我不确定你是否真的可以使用.Net来编写Windows驱动程序,至少我在这方面没有太多经验(我写的最后一个WIndows驱动程序是在1993年为Windows 3.11编写的) :-))。但如果可以的话:

  • 与上述相同的问题
  • 直接访问内存时要注意32位和64位之间的不同寻址(总是使用64位指针)
  • 遵循Windows Driver Kit文档中的最佳做法

答案 2 :(得分:0)

除了弗朗西的答案之外,请注意一些更抽象的资源也会引发问题。

我通常使用32位的ODBC驱动程序开发,并且必须强制所有应用程序编译为32位。

哦,不要让我开始关于VPN客户端和糟糕的64位支持!网络公司痘痘!