Web应用程序框架:C ++与Python

时间:2009-08-17 19:33:40

标签: c++ python wt

我熟悉Python和C ++作为程序员。我正在考虑编写自己的简单Web应用程序,我想知道哪种语言更适合服务器端Web开发。

我正在寻找的一些东西:

  • 必须直观。我认识到Wt存在并且它遵循Qt的模型。我讨厌Qt的一件事是他们通过混淆的手段鼓励奇怪的语法(例如“公共插槽:”成语)。如果我要编写C ++,我需要它是标准的,可识别的,干净的代码。 Qt提供的没有花哨的狡猾愚蠢。
  • 我必须编写的非C ++或Python代码越少越好。关于Django(Python Web框架)的事情是,它需要您手动编写HTML。我认为如果HTML表单采用更多的wxWidgets方法会很棒。 Wt接近于此但遵循Qt模型而不是wxWidgets。

我通常用C ++编写视频游戏,我没有网络开发经验。我想写一个很好的网站有很多原因。我希望它是一种学习体验,我希望它变得有趣,我希望能够轻松地专注于“有趣的东西”(例如,更少的样板,更多应用程序的肉)。

新手网络开发者的任何提示?我猜测Web应用程序框架是要走的路,但这只是挑选一个。

7 个答案:

答案 0 :(得分:11)

我会选择Wt,因为:

  • 您已经了解C ++
  • 它有一个很好的layout system,所以你不需要知道很多HTML
  • 编写得非常好,很高兴能够编码
  • 您部署的应用程序将在较少的硬件上处理python应用程序负载的50倍(来自使用pylons应用程序的经验,是plone应用程序负载的10,000倍:P)
  • 它包含了第一个问题中的人所说的不存在的所有库
  • Web 2.0不是一个想法;它不是像所有python框架(据我所知)在Request + Response模型上设计的,而是在事件驱动的交互模型上设计的。
    • 如果可用,则使用WebSockets
    • 如果不是
    • ,优雅地回到正常的ajax
    • 对于像linx
    • 这样的浏览器,请回到http
  • 它更像是编写一个gui应用程序,而不是一个Web应用程序,这可能是你习惯的
  • 它是静态类型的,因此不容易出错。 def delete(id):是采用int还是字符串?
  • 单元测试(至少在我的应用上)比我的python app单元测试运行时间少10-100倍(包括编译时间)
  • 它有一个强大而友好的社区。我的所有email list帖子都会在0-3天内回复。

答案 1 :(得分:7)

如果您想避免编写HTML,可以尝试GWT。但是,根据我的经验,使用中间框架生成HTML和ECMAScript永远不会在任何地方工作,也不能手写页面。

[edit] nikow在评论中提到Pyjamas是Python的GWT端口。

关于语言,如果在C ++和Python之间做出选择,我会100%选择Python。即使忽略这些语言之间抽象的明显差异,Python也只是拥有比C ++更有用的库。您不必编写自己的面向开发的Web服务器 - Django附带一个。您不需要编写自定义模板库 - Python有Genshi。 Django带有一个功能强大的ORM层,或者为了更多的控制,你可以使用SQLAlchemy。这几乎不是一场比赛。

答案 2 :(得分:7)

  • Django是开始Web开发的好点,它是一个很棒的框架
  • 如果你寻找C ++看看CppCMS,它更接近Django,它不像Wt那样模仿Qt。

无论如何,这实际上取决于您的需求。 C ++可用于嵌入式或高性能Web应用程序,但对于中等范围的Web站点,Django会更好。 (我是CppCMS的开发者)

答案 3 :(得分:1)

我认为你最好在你的情况下使用firt python,同时你可以扩展cppCMS功能并编写自己的框架。

wt是一个好主意设计,但不知何故不合适。

答案 4 :(得分:1)

如果您正在探索Python框架(基于我认为您的例外答案),我认为您真的应该自己查看CherryPy。当你编写CherryPy应用程序时,你真的只是编写Python应用程序。这个框架真的很匆忙。您可以自由选择自己的模板,ORM(如果您选择使用ORM),等等。认真的,需要10或20分钟后再看看。

答案 5 :(得分:0)

您可能希望在Python上使用C ++的唯一原因是速度至关重要。

如果这将成为您的第一个网络应用程序,您可能只使用Python,并且您的开发速度将比CPP好几个数量级。

Django的模板语言远非无能为力,对我来说它实际上似乎非常pythonic。你实际上可以在模板中编写纯python(虽然通常不建议这样做)。

更好的是,可以用您喜欢的模板取代Django的模板系统。 我最喜欢的语言是HAML。

这里有一些数据: Is there a HAML implementation for use with Python and Django

答案 6 :(得分:0)

看过几个,比如django,pylos,web2py,wt。我的推荐是web2py。它是“ruby on rails”的python版本,易于学习。