【问题标题】:What are the technical difference between .Net desktop application and web applications?.Net 桌面应用程序和 Web 应用程序之间的技术区别是什么?
【发布时间】:2010-08-26 20:35:03
【问题描述】:

我刚刚开始学习 C#。

谁能解释 .Net 桌面应用程序和 Web 应用程序之间的技术差异?

我的意思是,例如,如果我有一个使用 WinForm 的简单 HelloWorld 应用程序,那么将其更改为 HelloWorld Web 应用程序需要哪些步骤?

【问题讨论】:

  • 由于您尚未阐明如何创建 WinForm“Hello World”应用程序(即,它是带有包含“Hello World”的文本框的表单,还是标题设置为“ Hello World"),我选择通过使用控制台应用程序来展示 asp.net 和桌面示例之间的巨大差异 =)

标签: c# .net asp.net winforms webforms


【解决方案1】:

没有真正的方法可以进行“公平比较”,因为两者确实就像“粉笔和奶酪”。桌面应用程序有一个“入口点”,运行可执行文件,而 Web 应用程序有许多您创建的每个 .aspx 页面。

没有“简单”的方法可以转换“Hello World”应用程序,因为 UI/表示模型完全不同。经典的控制台应用程序完全使用 Console.WriteLine 编写代码,而显示“Hello World”的 webforms 应用程序可以完全使用 asp.net 标记编写。

asp.net“Hello World”应用程序可以像一个名为 default.aspx 的文件一样简单,其中包含:

<%@ Page Language="C#" AutoEventWireup="true"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
Hello, world!
    </form>
</body>
</html>

而控制台/桌面应用程序等价物是:

using System;
namespace ConsoleHelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Hello World");
        }
    }
}

【讨论】:

  • @n00bie_lucy,欢迎来到 stackoverflow =) 如果您对我的回答回答了您的问题感到满意,请单击我回答左侧的勾号将其标记为“已接受”。也就是说,关于这个主题还有很多 可以说,所以我建议玩一下 asp.net 和 windows 窗体,然后回到这个站点并询问任何新的问题这样做会生成 =)
【解决方案2】:

将桌面应用程序更改为 Web 应用程序将涉及设置 Web 服务器以提供网页并将每个对话框从应用程序转换为网页。功能/业务逻辑将进入“代码隐藏”页面(在 WebForms 中)和模型/控制器(在 MVC 中)。可能还涉及到一些视觉重新设计,但您总是可以从一对一的转换开始,然后从那里开始。

Web 应用程序通常需要与桌面应用程序略有不同的设计原则。例如,通过网站,您将无法访问用户的硬盘。您还必须处理站点上的多个并发用户,而同时运行桌面应用程序的相同用户将彼此隔离。

【讨论】:

    【解决方案3】:

    这是一个很大的主题,需要在一篇 SO 帖子中介绍。我建议您理解一些事情:

    还有很多要理解的东西,但这是一个很好的起点……

    【讨论】:

      【解决方案4】:

      一个 ASP.NET 网页(或任何活动网页:Perl、cgi-bin php 等)是一个简短的程序,它运行片刻,产生一个 html 流,然后终止,使 Web 应用程序更接近于控制台应用程序的集合,而不是交互式 WinForm 应用程序。

      【讨论】:

        【解决方案5】:

        有很多方法可以编写桌面应用程序,每种方法都需要完全不同的移植才能转换为 Web 应用程序。我只举几个例子。

        可以通过 CGI 脚本之类的方式调用控制台应用程序,以在 Web 上显示其输出,而无需对控制台应用程序本身进行任何修改(只要它是一个不需要任何交互式输入的简单应用程序)。

        Silverlight 支持 WPF 应用程序的一个(相当大的)子集。在公共子集中编写一个 hello world 类型的东西相当简单,因此相同的源代码可以生成桌面应用程序或 Silverlight Web 应用程序。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多