我是否应该专注于桌面开发或了解有关Web应用程序开发的更多信息?

时间:2009-07-25 03:27:20

标签: programming-languages

让我自我介绍一下。

  1. 我有7年的C ++(大多数MFC)经验,1年的C#.NET和2年的Java经验。
  2. 我对Web应用程序知之甚少,我所做的和我正在做的是Windows桌面应用程序。
  3. 我在过去半年开始做一些(小型)(自由职业)辅助项目,并且主要使用C#,因为它比MFC更“快速”。但似乎这个市场上的网络项目比桌面项目更多。只要我不了解网络开发,我就感觉不舒服。

    那么,我应该触摸为我提交的新网站,还是只关注桌面应用程序但是要了解更多信息,例如Python,或者像Qt或Boost这样的框架/库?

6 个答案:

答案 0 :(得分:6)

我的直觉是越来越多的人/公司正在将他们的项目转移到网上。例如,自从我去过那里以来,我的公司已经添加了许多Web应用程序。另一个主要的例子是微软(是的,甚至是他们)提供他们的旗舰产品Office的基于网络的版本。

总是需要桌面应用程序,但我将来会看到更多基于Web的项目。无论如何,学习新东西总是好的。

编辑:哦,你不会因为意识到“基于桌面的”进程而失去任何东西。您可能正在进行更多的服务器端编程,即使它是基于Web的。所以,换句话说,继续扩大你在这个领域的知识也没有什么坏处。

答案 1 :(得分:3)

未来许多年,桌面应用程序很可能仍会存在市场。然而,从我所看到的,网络开发似乎占据了开发市场的很大一部分。我建议你一定要熟悉网页开发,因为即使你永远不会停止编写桌面应用程序,也不会增加你拥有的技能数量。

由于您有使用C#的经验,您可能需要考虑做一些ASP.NET工作。或者如果您觉得需要学习新技术,那么可以考虑像Ruby on Rails这样的框架。

答案 2 :(得分:3)

我真的建议调查Web开发 - 就像你说的,还有更多的Web应用程序项目 - 你已经了解C#.NET和Java,这两种语言都有很好的用于Web开发的API /框架。 ASP.NET for C#和Java Servlets / JSP。

我首先建议学习一些非常基本的HTML来学习如何渲染页面,然后尝试使用您选择的语言制作动态版本。然后我会学习一些其他网络技术,比如CSS / Javascript /一些Javascript库 - 然后我会开始研究基于您选择的语言基础的框架。

哦,以及一些进一步的建议 - 有基于组件而不是基于请求的Web框架 - 您可能很想将这些作为Web开发的快捷方式来学习,因为大多数人认为在其中开发类似于桌面开发。我真的不建议这样做 - 在实践中你真的需要知道web如何在较低级别工作以开发自定义组件,包括框架不执行的操作,或者在出现问题时调试它们,即使在使用这些框架。如果你向右跳,你会很快迷失/困惑。

答案 3 :(得分:2)

Microsoft Office 2010将有online version。对我来说,这是Web应用程序的分水岭。 Office应用程序是一项重要的试金石,因为一旦您可以在Web上执行Office(一段时间以来Google文档的情况,但Office具有重要的象征意义),您可以执行大多数用户关心的大多数事情。

桌面应用程序不会消亡,但我绝对认为它们会越来越多地成为后座。

如果你还没有,我强烈建议你阅读How Microsoft Lost the API War。关于这篇文章特别令人惊讶的事情之一是它写于2004年。

答案 4 :(得分:1)

我真的相信,除了操作系统和浏览器之外,未来10年内一切都将成为一个网络应用程序。话虽如此,让我澄清一下,我所说的一切都意味着a)涉及某种形式的UI,b)可以保证安全。

用户界面应用程序总是在某些时候需要后端,这在某种程度上要求代码不是由人类接口而不是通过HTTP执行。我一直在提醒自己,Unix中的'cat'实际上是操作系统调用的程序,而不仅仅是内置于操作系统中的函数。 MySQL不会是一个网络应用程序(据我所知),但它是支持Web应用程序的应用程序。我们可能会通过Web界面完全开发这些应用程序,通过浏览器编写,审核,上传和调用,但在某种程度上它仍然在幕后运行。

关于第二点,关于保证安全性,我可以很容易地想象一个大型公司或政府办公室通过网络应用程序运行95%的日常例程,但强制要求在直接与之连接的机器上执行某些高安全性操作某种类型的主机,经过视网膜扫描的冷门后,没有。或者仅仅因为他们无法冒险将某些关键任务应用程序移到网络上,因为担心它会破坏我们在此过程中丢失的数据。

但抛开这两件事后,我真的相信一切都会以网络为基础。随着Web服务和XML的普遍发展,不仅可以访问我们的数据并与之交互,还可以将我们的自定义应用程序插入到另一个应用程序中,并在我们想要的任何环境中进一步扩展该交互。

这就像Apple广告“有一个应用程序。”除非人们得到真实的图片,否则它不会是为您的iPhone编写的应用程序,而是URL。 “那里有一个网站。”

答案 5 :(得分:0)

我建议学习Lift框架。它与Rails一样易于使用,它基于JVM的静态类型语言Scala。从你的背景来看,Scala应该很容易学习,而且你比使用动态语言更容易使用它。

在我看来,你很有可能快速学习它,在网页开发中学到很多关于良好实践的知识,甚至可以扩展你的编程视野。