none
一个困扰我很久的问题,求.net专家解答。 RRS feed

  • 问题

  • 我是个C#的初学者,有个问题一直困扰着我,我也在很多论坛问我可惜一直没有满意的结果。

    是这样的,自从微软发布.net平台以来,.net技术发展非常快,当我第一次接触Visual Studio 2005就爱上了这个良好的IDE。.net走到今天,可谓硕果累累。这不,我刚刚安装了最新的操作系统windows 7,感觉很棒。同时也在网上看到了微软声称将停止对部分旧版windows的支持,比如windosw xp sp2。我在想,.net平台以前的操作系统的内核跟Vista和windows 7到底有没有本质区别?以前的操作系统的应用程序编程接口是win32api,现在的是.net framework,它们有本质的不同吗?win32api会继续并永远依附于.net平台的操作系统上吗?我有个同学是学C++的,他最近在学《windows程序设计》(C语言版),里面都是讲以前的win32api,他也疑惑了自己学了以后在.net平台的操作系统上还用得了吗?如果win32api会一直依附于新的操作系统上,那何以现在很多软件在windows 7下不兼容无法运行!是不是以后要想在.net平台下运行就必须用Visual Studio开发工具开发.net程序?我想,如果FCL只是win32api的一个封装,那.net的跨平台岂不是永远只是一句“空话”?望得到解答,万分感谢。

    2010年3月27日 6:25

答案

  • .net平台以前的操作系统的内核跟Vista和windows 7到底有没有本质区别?

    -> 有区别。简单的说,一些win32 api是在vista里面才有,之前的操作系统就没有。

    以前的操作系统的应用程序编程接口是win32api,现在的是.net framework,它们有本质的不同吗?

    -> 若是做winform开发,简单的说,.net framework里面的winform类是对win32api的再次包装。

    win32api会继续并永远依附于.net平台的操作系统上吗?

    -> 至少win7目前是如此。但是你说反了,win32api比.net更底层,不是前者依附后者,而是后者依附前者。

    如果win32api会一直依附于新的操作系统上,那何以现在很多软件在windows 7下不兼容无法运行!

    -> win7有新的win32api,也对旧的api做了一些限制。主要还是权限上。比如,有些旧的程序要求管理员权限的时候,在xp里面就会成功,但是到了win7就会返回错误。

    是不是以后要想在.net平台下运行就必须用Visual Studio开发工具开发.net程序?

    -> 你用记事本+命令行编译也可以。开玩笑啦,Visual Studio是微软开发的IDE,自然有其他很多选择。比如SharpDevelop,就是一个开源的C#编写的IDE。

    那.net的跨平台岂不是永远只是一句“空话”?

    -> 不是空话。在windows平台上,winform类(Syste.Windows.Forms)其实是对win32api的封装。在linux平台上,mono对winform的实现是对gtk的封装。这跟Java类似。不用平台有不同的实现方法。

     


    MCPD (Windows & Web)
    2010年4月3日 9:13

全部回复

  • 你好!

         FCL并没有封装所有的API,但是提供了调用API的方法,DllImport特性来调用!


    周雪峰
    2010年4月1日 13:07
    版主
  • .net平台以前的操作系统的内核跟Vista和windows 7到底有没有本质区别?

    -> 有区别。简单的说,一些win32 api是在vista里面才有,之前的操作系统就没有。

    以前的操作系统的应用程序编程接口是win32api,现在的是.net framework,它们有本质的不同吗?

    -> 若是做winform开发,简单的说,.net framework里面的winform类是对win32api的再次包装。

    win32api会继续并永远依附于.net平台的操作系统上吗?

    -> 至少win7目前是如此。但是你说反了,win32api比.net更底层,不是前者依附后者,而是后者依附前者。

    如果win32api会一直依附于新的操作系统上,那何以现在很多软件在windows 7下不兼容无法运行!

    -> win7有新的win32api,也对旧的api做了一些限制。主要还是权限上。比如,有些旧的程序要求管理员权限的时候,在xp里面就会成功,但是到了win7就会返回错误。

    是不是以后要想在.net平台下运行就必须用Visual Studio开发工具开发.net程序?

    -> 你用记事本+命令行编译也可以。开玩笑啦,Visual Studio是微软开发的IDE,自然有其他很多选择。比如SharpDevelop,就是一个开源的C#编写的IDE。

    那.net的跨平台岂不是永远只是一句“空话”?

    -> 不是空话。在windows平台上,winform类(Syste.Windows.Forms)其实是对win32api的封装。在linux平台上,mono对winform的实现是对gtk的封装。这跟Java类似。不用平台有不同的实现方法。

     


    MCPD (Windows & Web)
    2010年4月3日 9:13
  • 。NET跨平台 好像也是不行,当时有人提过Mono,但是很多东西都是老的,速度跟不上最新的.NET。
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2010年4月6日 10:31
    版主
  • 只要没有放弃PE,整个构架就应该不变,.net相当于一个虚拟机,运行在PE之上的。
    霸王
    2010年4月8日 1:18