4

经过大量研究,我列出了我认为可能是组合基于 Python 的社交网络/cms 的最佳方式的列表,但对于其中一些组件如何组合在一起存在一些疑问。

在我询问特定组件之前,以下是要构建的站点的一些关键功能:

  • 一个几乎类似于桌面的现代 gui
  • 未来托管高级 html5 子应用程序的能力(例如http://www.lucidchart.com
  • 功能和用户负载的高可扩展性
  • 用户能够密码保护和权限管理每个项目/组的内容
  • 典型的社交网络特征
  • 能够在未来构建缩小的移动版本

这是我正在考虑使用的工具列表:

Google App Engine
Python Django Pinax 睡衣 wxPython

还有问题:

  1. Google App Engine——这是一种切入正题的尝试,因为许多难题似乎已经到位。问题:我是否限制了我的选择?示例:数据存储不是关系型的?商业版下要等SQL支持吗?

  2. Python——我起初考虑过'drupal',但最后决定依赖明天可能存在或可能不存在的模块+其模板系统的限制是一个禁忌。学习它的 API 在其他地方也毫无用处,而 Python 似乎是语言的瑞士军刀——几乎适用于任何事情。问题:GAE 需要 v.2.5.2,但 python.org 推荐 2.5.5。我要安装哪个?

  3. Django -- v.0.96 内置在 GAE 中。你似乎可以升级它。问题:有什么理由不升级到最新版本?解决缺乏 HTML5 支持的方法?

  4. Pinax ( http://pinaxproject.com ) 在 Django 之上运行,似乎提供了任何人想要的大部分社交网络功能。问题:不使用它的原因是什么?备择方案?

  5. 睡衣和 wxPython——这是有点令人困惑的部分。这些背后的基本思想是构建 GUI 的能力。在 GAE/Python 路线之前,我曾考虑过 Silverlight 和 Flash,但一些 HTML5 应用程序的工作版本让我相信,它已经在最新一批浏览器上运行,可以选择 HTML5/Javascript 路线。问题:如何扩展/补充 Python/Django 以构建类似应用程序的 HTML5 界面?睡衣和 wxPython 是要走的路吗?还是我应该彻底改变我的想法?

回答这些问题中的一些/任何一个都会有很大帮助。如果其中任何一个没有多大意义,请原谅我的无知。大约 5 到 6 年前,我对网络编程的最后一次冒险是一个相当大的 LAMP 网站。在桌面方面,我的编程经验归结为非常高级的脚本语言,我不断学习以完成非常具体的任务:)

4

1 回答 1

3

作为将 Django 站点部署到 GAE 的人,我可以告诉您,您不会找到理想的解决方案。GAE 上的 Django 错过了 Django 的一些最佳方面,因为 ORM 不能正常工作。最好的折衷方案可能是使用Django-nonrel重新添加功能。

但是,这会带来它自己的问题:由于 Django 应用程序使用大量文件和内存,您的代码将在应用程序空闲后迅速从内存中卸载。这意味着,当 GAE 解压缩压缩模块时,从内存中卸载站点代码后,访问者在第一次页面查看时经常会出现大约 6 秒的延迟。一旦您的站点繁忙,这不会是问题,但是当您的站点还年轻且未知时,它会导致出现性能问题。:-(

其次,我还曾在一家构建自定义 CMS 的公司工作,可以告诉您前 80% 非常容易,尤其是使用现代框架。然而,其余的可能非常具有挑战性。例如,用户角色和自定义内容类型是两个具有挑战性的方面。因此,强烈考虑站在巨人的背上,找到一个几乎完全满足您需求的 CMS 或 CMS 框架,然后扩展它以完成您需要的额外工作。

所以,也就是说,回答你的观点:

  1. 是的,您正在限制您的选择,但这可能没问题。与 nosql 模型相比,大多数开发人员更喜欢关系模型。因此,更多的开源软件是在考虑到它的情况下构建的。此外,GAE 是一个封闭源代码平台,这也是对开源开发人员的威慑。App Engine Oil是一个 CMS 框架,可能非常适合您,并且针对 App Engine 进行了优化。另请查看支持 GAE的web2py 。

  2. 我发现自己使用 Python 非常高效。我以前写了很多 PHP,现在我觉得它很难看。也就是说,考虑一下您必须编写的代码的总行数。如果您可以让 Drupal 使用高质量的预制模块,您可能会发现自己只需要 1/10 的代码。顺便说一句,Drupal 的诀窍是主要只使用高质量的模块。查看历史,确保不要使用开发版本。尝试联系 IRC 上的作者。我并不是说您应该使用 Drupal,但可以拥有一个可靠的站点(例如 whitehouse.gov)

  3. 您遇到了经典的 GAE/Django 问题。如果您使用 0.96,您将获得出色的性能,但您会错过很多出色的 1.0+ 功能,并且您无法获得 ORM 及其所有好处。如果您使用较新版本的 Django,您会遇到上述性能/内存问题。

  4. 我要为我的公司调查 pinax。我已经对它做了一个非常光标的浏览。我不知道它是否对非关系模型后端有很好的支持。您可能需要查看 django-nonrel。但是要知道,您将在这里投资相对未尝试过的解决方案。一小部分 Django 用户使用 Pinax,甚至更小的比例(如果有的话)在非关系后端使用它。因此,您将处于上述第 2 点中提到的高度实验性场景中。

  5. 我不能提供个人经验。我研究过几次睡衣。不过我喜欢写 HTML CSS 和 JS。我喜欢控制。我喜欢渐进式增强,并且知道如果用户没有全部功能,他们会看到什么。此外,我认为任何没有明确针对移动客户端的新应用程序都在暗中自取其辱。多达 15% 的互联网用户仅通过智能手机使用互联网。穿上睡衣他们会得到怎样的体验?

  6. 您没有提到这一点,但我在选择平台时考虑的一件事是供应商锁定和可移植性。如果您为 GAE 开发解决方案并发现您无法做您想做的事情,您能否将其移植到其他地方的另一个解决方案?需要做多少工作?如果您为 GAE 编写大量代码或对其架构做出承诺,那么您就会被它所困或重写以移动。使用 Django 或 Web2py 可以帮助缓解这种情况。

也就是说,Python GAE 的最大好处是您可以非常高效,立即查看结果,在您的站点很小时免费获得托管,并获得出色的可扩展性。这些都不是小事。那里有很大的价值。

于 2011-06-01T20:48:07.363 回答