开发Web应用程序的一般准则

时间:2010-07-11 10:15:49

标签: python database dom

作为一名用于开发本机应用程序的程序员,我正在扩展我的视野并开发我的第一个Web应用程序。我是Linux和C专家的中间人,使用Python和HTML进行中级操作,初学者使用MySQL和Java进行中级操作。

我正在开发一个网络应用程序,它或多或少是我朋友的资源分配器。简单地说,我希望这个程序能够帮助他管理工作,分配技术人员和设备。主屏幕将是一个嵌入式Google日历框架,可以通过动态更新。他们的API。   现在,某些工作需要技术人员持有某些证书,并且设备必须按照特定的时间表进行校准。我还想跟踪额外的数据,例如电话号码,电子邮件地址,工作信息等。最重要的是,我希望它看起来不错!

我花了很多时间熟悉PHP,JavaScript和DOM,并开发了一些功能和简洁的用户界面。 到目前为止,我一直在编写服务器端w / PHP来提供动态HTML。 MySQL然后JavaScript来操纵DOM。我有技术人员,证书,工作,电话号码等表。

我的问题是:

  1. 我开发网络应用的一般方法有什么缺失吗? (服务器端脚本与数据库交互以生成动态HTML,然后通过DOM /客户端脚本来操纵客户端)。

  2. 我选择了PHP,因为它通常与Web开发相关联。有哪些替代方案?作为初学者,我想知道要学习的“最好的”服务器端语言(我要面对挑战),或者至少要了解其他选择。

  3. 就客户端而言,似乎JavaScript就是IT。是吗?

  4. 我听说过很多关于AJAX的事情,但对它一无所知。它是生成HTML服务器端via的替代方案。一个数据库?它是什么/优点/缺点。

  5. 我已经读过不推荐使用的帧。我是否应该远离框架而更多地转向DOM操作?

  6. 如果要通过互联网提供此应用程序,我需要设置某种登录系统。使用托管服务或私有服务设置身份验证的常用方法是什么?
  7. (稍微偏离主题)任何免费托管建议?我是学生,自己托管服务器对我的朋友来说是不可靠的。
  8. 我真的很想通过这个项目来实现。 Python尽可能。 Python在浏览器编程方面可以做些什么以及它需要什么?

3 个答案:

答案 0 :(得分:3)

  
      
  1. 我开发网络应用的一般方法有什么缺失吗? (服务器端脚本与数据库交互以生成动态HTML,然后通过DOM /客户端脚本来操纵客户端。)
  2.   

不 - 这是通常的设置。实际上,客户端脚本经常丢失,并且网页在任何交互中都会被完全刷新。你的描述非常好。

  
      
  1. 我选择了PHP,因为它通常与Web开发相关联。有哪些替代方案?作为初学者,我想知道要学习的“最佳”服务器端语言(我正在接受挑战),或者至少要了解其他选择。
  2.   

这是一个值得商榷的话题,根据不同的口味,因此通常更适合社区维基;此外,还有很多这样的问题。

很快,PHP是最常见的,因为它是最容易配置的,但它有很多弊端。 Perl是老派,而且相当难以理解。 Python和Ruby目前是最热门的,由于惊人的动态框架(CherryPy和Django vs. Sinatra和Rails),但竞争非常激烈,每个人都选择了一面。我会告诉你Ruby可以更好地使用,但其他人会对Python说同样的话。但是,配置它们有点困难(即通常不是大多数托管服务提供商的标准选项)。

  
      
  1. 就客户端而言,似乎JavaScript就是IT。是吗?
  2.   

就是这样,如果你在谈论HTML。替代品消失了。

  
      
  1. 我听说过很多关于AJAX的事情,但对它一无所知。它是生成HTML服务器端via的替代方案。一个数据库?它是什么/优点/缺点。
  2.   

AJAX是一个奇特的名称,用于从JavaScript发出HTTP请求而无需重新加载页面。请求的内容可以是可执行的JS,可解析的XML,也可以是可以插入的HTML ...而且它是唯一一种在不刷新整个页面的情况下获取客户端数据的方法。

  
      
  1. 我读过不推荐使用的框架。我是否应该远离框架而更多地转向DOM操作?
  2.   

强调。但是,iframe具有(有限的)用途。你很可能不需要它们。

  
      
  1. 如果要通过互联网提供此应用程序,我需要设置某种登录系统。使用托管服务或私有服务设置身份验证的常用方法是什么?
  2.   

用户名+加密密码在数据库中,当用户输入用户名+密码,加密密码并检查数据库。如果成功,请在会话中记录用户名。

另一种方式是OpenID,但它需要第三方OpenID提供商。

  
      
  1. (稍微偏离主题)任何免费托管建议?我是学生,自己托管服务器对我的朋友来说是不可靠的。
  2.   

不太了解。我知道comyr(通用)和heroku(Ruby),它们都是免费的非商业用途,AFAICR,但是一些研究可以让你获得更多。

  
      
  1. 我真的很想通过这个项目来实现。 Python尽可能。 Python在浏览器编程方面可以做些什么以及它需要什么?
  2.   

它可以完成服务器端编程方面的所有工作,就像任何其他图灵完整语言一样。它可以很容易地做到,是一种动态语言,有许多针对Web开发的好库。但是,对于浏览器,它根本不会做任何事情。查看CherryPy的轻量级,以及Django的重量级Web应用程序框架。

但我认为你选择了PHP?...

答案 1 :(得分:2)

  

我开发网络应用的一般方法有什么缺失吗? (服务器端脚本与数据库交互以生成动态HTML,然后通过DOM /客户端脚本来操纵客户端。)

您需要像cron这样的调度程序来强制执行日历之外的服务器端的事情。日历非常适合记录事件(例如设备的维护或工程师的呼叫),但为了强制执行此操作,如果工程师的设备错过了维护等,您可能希望暂停呼叫。

  

我选择了PHP,因为它通常与Web开发相关联。有哪些替代方案?作为初学者,我想知道要学习的“最佳”服务器端语言(我正在接受挑战),或者至少要了解其他选择。

有许多替代方案,PylonsGoogle App Engine可能是Python背景下的不错选择。

  

就客户端而言,似乎JavaScript就是IT。是吗?

FlashSilverlight等。jQuery(JavaScript框架)似乎是一种受欢迎的选择。

  

我听说过很多关于AJAX的事情,但对它几乎一无所知。它是生成HTML服务器端via的替代方案。一个数据库?它是什么/优点/缺点。

AJAX归结为动态更新所查看的页面,而不是每次都创建一个新页面。

  

我已经读过不推荐使用的帧。我是否应该远离框架而更多地转向DOM操作?

这取决于你是否真的转向AJAX。 iframe可能会保留,即使从浏览器中删除了传统的框架。

  

如果要通过互联网提供此应用程序,我需要设置某种登录系统。使用托管服务或私有服务设置身份验证的常用方法是什么?

OpenID似乎很受欢迎,并且随着库的可用性,它应该消除维护自己的身份验证所需的大量工作。

  

(稍微偏离主题)任何免费托管建议?我是学生,自己托管服务器对我的朋友来说是不可靠的。

Google App Engine每月最多可提供500万次页面浏览量(约)。如果您设置每天0美元的结算,您将获得更多免费资源。

  

我真的很想通过这个项目来实现。 Python尽可能。 Python在浏览器编程方面可以做些什么以及它需要什么?

如果您正在使用Internet Explorer进行编码,则可以使用activex对象调用Python,但事情会变得混乱。

作为Google App Engine支持计划的额外奖励,内置了用于与Google日历通信的库,支持OpenID(称为联合登录)并提供免费托管以供较小用途。

您描述的应用程序类型通常称为“现场服务”。您可能想要查看的其他内容是ViaPost用于发送文书工作,Lone Worker用于确保现场工程师的安全(可能是规则),调度程序(有许多模式和系统,包括一些使用三角测量使工程师更有效)和自动语音系统(其中一些有API)与车辆跟踪相结合,告知客户工程师将迟到(这可以自动化)。

您还可以考虑使用移动设备进行动态呼叫分派,收集客户端签名以及在现场打印文书工作。

答案 2 :(得分:1)

我想建议尽快放弃PHP。在这里搜索'php wtf'应该是有启发性的。尽管可以在PHP中编写安全,安全,可靠的应用程序,但我认为尽管尽力让PHP团队尽最大努力使最令人兴奋和惊喜的语言EVAR 。有很多有趣的副作用。并假装安全选项。如果PHP的大部分内容对你很有吸引力,我想我会建议使用Perl。它应该不那么令人惊讶。

所以,在我对PHP的咆哮中,你有很多更好的选择。 Python有Django,Zope和Twisted Matrix。它们各自解决了不同的问题,允许您在不同级别编写应用程序:Django在您的代码上强加了一些模型 - 视图 - 控制器结构,Zope是一个更大的CMS框架,Twisted Matrix提供了许多超级敏锐的编程原语如果你我想写一些非常接近电线的东西。 (你只需要五行代码就可以使用一个非常简单但又整洁的Web服务器来运行你的应用程序代码。)

如果你真的想在这个过程中学习另一种语言,Ruby on Rails会得到很多炒作,而且主要有很多理由。我非常喜欢使用Ruby on Rails编写代码,强加的结构对于除了琐碎的应用程序以外的任何东西都非常棒,并且它通常会在合理的假设下出错。

Perl是'旧待机'。我会在任何一天接受它,但我不能忍受Perl的OO或模块系统。所以我很难真正支持它。

我想在客户端建议不要使用Flash和Silverlight:首先,Flash是一个巨大的资源浪费和安全灾难,Silverlight虽然可能比两个方面的Flash更好,但甚至更少< / em>便携式比Flash。 (我强烈建议您在少数移动浏览器上试用您的网站;它不必看起来很漂亮,但一切都应该有用。)