ASP.NET开发人员试图学习Drupal和PHP

时间:2009-11-06 21:56:33

标签: php asp.net drupal application-planning

我非常了解ASP.NET C#。我做了很多调查和自定义Web应用程序。

我在Drupal周围徘徊并找出如何进行“特殊”程序化操作(例如搜索客户列表或创建Web应用程序)时遇到了很多麻烦。

1 - 我一直在阅读书籍和drupal API,但我仍然在开始使用任何东西时遇到很多麻烦。关于页面,模块,片段的自定义代码在哪里?如何将我在ASP.NET中执行的表单X复制到drupal中的新页面?等等。我很难将我的脑袋包裹在Drupal周围,看起来如此庞大,容易和可扩展,但也很难对我进行编码。 您建议ASP.NET应用程序员学习如何使用/在Drupal中工作?

2 - 有时我们会为客户编写完整的ASP.NET应用程序,并且这些应用程序不会被客户端编辑。例如,我们将整个网站都放在drupal中,但在该网站内部,我们将为用户提供一个使用特殊搜索数据库信息的位置。我们不希望简单的网站编辑和内容提供商尝试编辑这个特殊编码的页面。 如何处理不希望客户在Drupal应用程序中编辑任何内容?是否通过页面/用户权限处理?在drupal之外完全开发和托管应用程序是最好的事情吗? drupal应用程序是drupal网站内部的drupal实例(嵌套drupals?)?

3 - 最后,我该如何处理数据库?据我所知,Drupal和PHP将与MySQL配合使用。我们有MS SQL数据库,由多个应用程序使用,并且在我们开始使用Drupal时希望将它们用于新的应用程序。例如,我们有一个Staff目录,它提供ASP.NET报告应用程序,ASP.NET Staff Listing应用程序,并且想要创建一个新的Drupal PHP应用程序,该应用程序也使用(并且可能插入/更新更多信息)该数据库。 处理多个Drupal和ASP.NET应用程序使用和更新的MS SQL数据库和/或MySQL数据库的最佳/最简单方法是什么?让所有应用程序使用MS SQL会更容易吗?数据库,或者可能在MySQL上为Drupal / PHP应用程序复制数据库并以某种方式同步这两个数据库?

如果我在一个帖子中提出多个相关问题,我希望没问题。

5 个答案:

答案 0 :(得分:2)

我担心我对Drupal没有任何经验,所以我不能对你的第一个或第二个问题提出任何见解,但是关于第三个问题:

  

什么是最好/最简单的处理方式   MS SQL数据库和/或MySQL   正在使用和更新的数据库   多个Drupal和ASP.NET   应用

如果要从ASP.NET应用程序和PHP / Drupal应用程序执行CRUD操作,那么我建议不要尝试在MySQL和MSSQL之间来回同步数据,因为这会导致延迟问题加上你'然后必须处理两个数据库管理系统之间的差异。

相反,我建议您查看使用存储过程来控制所有数据库访问。这样,您可以确保所有数据库CRUD操作都符合相同的规则和逻辑。

在ASP.NET和PHP中使用MSSQL应该不是问题,特别是在非常优秀的PDO库中,它不能提供访问许多流行数据库管理系统的标准接口。它应该允许您快速,轻松地连接并开始在PHP应用程序中使用MSSQL数据库。

答案 1 :(得分:2)

你问的是一些好问题。我会尽力回答他们。我对APS.NET的c#没有任何经验,所以我不确切知道你来自哪里。我自己也学习了Drupal作为一个没有经验的python / django开发人员。所以在某些方面我可以通过尝试学习Drupal来理解你正在经历的一些麻烦。其中一些事情只需要时间/经验/实验就可以消失。

  1. 要真正了解Drupal和Drupal API,首先需要对PHP有一个很好的理解。有时Drupal做一些复杂的PHP事情,所以如果你不理解语法或PHP函数等,你很容易迷失。

    • 代码在哪里生效?
      Drupal是一个模块化系统。 Drupal本身是一组模块,其中一些模块是Drupal正常工作所必需的。如果你想制作一些自定义代码,那就是你想做某事,你不能使用模块。 为Drupal开发了大约5000个模块。通常,即使是熟练的程序员,最好的选择是找到一个可以满足你需要的模块,也可以让你在最近的地方找到你。所以你要做的就是创建自己的模块。

      1. 创建一个包含模块名称的文件夹

      2. 在其中创建一个modulename.info,其中包含有关以特殊方式格式化的模块的一些信息。 Drupal需要它来显示激活模块的模块列表页面上的模块。

      3. 最后创建一个modulename.module文件,其中包含模块代码的核心。
      4. 使用Drupal理解另一个重要的事情是它使用基于钩子的系统。钩子就像一些事件,一旦发生某些事情你想要挂钩并且要么改变流程,要么做一些你自己的事情。你可以在每次显示特定表格时记录,或者你可以改变表格,添加/删除字段。

      5. <强>表单
        Drupal有一个FAIP或Form API,用于生成表单,这是在文档中有自己的页面。我们的想法是创建一个关联的PHP数组,其中包含有关表单每个元素的信息,Drupal将使用它来创建表单。

      6. <强>图书 你可以从中学到很多关于Drupal的好书。我自己从中学到的最多的是Pro Drupal Development

  2. 首先,Drupal拥有一个非常精细的基于角色的权限系统,可以让您准确设置允许客户执行的操作。您可以创建不同的角色,如主持人,内容创建者,管理员,系统管理员等,并为每个角色授予不同的权限。这很简单,并在Drupal AI中设置。但是,您需要知道权限,因为某些超级权限可以访问很多内容。现在,为了集成您的应用程序,您可能希望为其编写自定义模块。我不确切地知道你想怎么做。但我认为最好的结果是让Drupal从你的应用程序中创建页面,表单等,然后只是来回发送数据。这样主题=网站的布局将是一致的。这样用户就不会觉得他们离开了网站,但这只是网站提供的另一个功能。

  3. Drupal不仅设置为最好地处理MYSQL,实际上你需要MYSQL或PSQL作为你的drupal数据库后端。原因是Drupal处理查询的方式,允许您编写可以工作的非特定查询,无论您使用哪种类型,或者您的表都有前缀。因此,对于所有Drupal内部,您将需要两个中的一个。 PHP可以连接到MSSQL并对该数据库运行查询,因此您可以编写自定义代码来运行查询到其他应用程序的数据库并获取或更新数据。根据数据的不同,您可能希望在数据库中创建可以读取和写入的表,然后在需要时同步数据库。这取决于你的用例。我已经完成了后者,在我不需要写入数据库的情况下,只需要从其他系统仍在使用的遗留数据库中获取一些产品信息。

答案 2 :(得分:1)

RLB,

我做了很多Drupal并且拥有强大的ASP.NET经验。你真的需要阅读以使你的心态直截了当。他们以类似MVC的方式使用层,这对于WebForms&amp; amp; ASP.NET MVC开发人员......坦率地说,起初看起来很奇怪。

以下列出了我真正做得非常好的事情:

  1. 以8美元的价格获得一个像hostgator这样的主机,可以让你安装Drupal
  2. 获取初学者专业Drupal开发的书...非常好,涵盖了很多领域http://www.amazon.com/Pro-Drupal-Development-Second-Beginning/dp/1430209895/ref=sr_1_2?ie=UTF8&s=books&qid=1257545528&sr=8-2
  3. 登上Drupal论坛
  4. 准备好贡献。 Drupal有很多功能,但最终最好的方法是成为贡献代码的人
  5. 有许多IDE需要考虑,但启动文本编辑器应该没问题。

    祝你好运。

答案 3 :(得分:1)

首先,我认为了解Drupal的局限性有多重要,有些东西并不是真的有用。它是一种Web应用程序框架,但如果您使用自己的自定义数据模型和内容进行大量自定义工作,Drupal可能不是解决您的问题的最灵活或最容易实现的解决方案。像Zend Framework这样的更通用的框架可能更适合。

学习Drupal的一个重要教训是:不要破解核心或其他模块。这将使升级核心或模块非常耗时。而是“像Drupal一样”并使用钩子覆盖。在主题中你也可以用钩子覆盖,但也可以用其他方式覆盖。压倒是强大的,所以要理解这个概念。

  1. 我会说,选择一种学习方式,即你的风格,截屏,IRC,黑客,用户聚会IRL,书籍,文章或任何组合,并在Drupal上寻找材料。开始捣蛋,感受Drupal的工作原理。理解行话是一个重要的部分,所以:节点,块,区域,钩子,模块,主题。
  2. Drupal拥有一个非常灵活的权限系统,它可能是使用它而不是制作自己的最佳选择。您可以编写自己的模块来添加或改变Drupal的行为。因此,如果您想编写一个与Drupal一起使用的新应用程序,您可以编写一个模块来执行应用程序必须具备的功能,并使用Drupal提供的所有功能,包括用户,权限系统等等。我真的理解你的第二个问题的最后一部分“drupal应用程序是drupal网站里面的drupal实例(嵌套drupals?)?”。 Drupal是服务器上的PHP文件集合,它与数据库中的大量表一起提供对它的请求。多个Drupal网站(如此不同的PHP文件)可以引用相同的数据库或部分数据库(例如用户表)。实际上并没有Drupal网站的“实例”,因为它并不是真正的“应用程序”。我当然可能对这些术语太不熟悉,但我认为PHP不适用于“应用程序”的“实例”。

  3. 这是一个很难的问题,因为Drupal无法使用MS SQL,所以你可能需要自己做这方面的任何连接。我也会在Drupal论坛或IRC上询问。

  4. 祝你好运!

答案 4 :(得分:1)

这里有一些好的答案,所以我只会填写一些简短的项目。

1 - 学习Drupal:Pro Drupal Development是最好的书。进入问题队列并与开发人员交互是熟悉细节的一种方法。您关于表单的问题与Drupal如何处理表单有关。 FAPI在Drupal中非常强大,可以保护您免受安全失误的影响。此外,api dot Drupal dot org是代码记录的地方,尽管其他地方也有文档。谷歌是你的朋友。 (在Drupal站点本身,使用本机搜索来获得分面结果。)

2 - 这是用户权限问题。您可以根据内容类型限制创建和编辑权限。对于访问控制(读取),您将需要使用众多模块之一进行访问控制。这实际上取决于你的用例。

3 - Drupal对MySQL有最多的社区支持,但人们也在MS SQL上运行Drupal。在Drupal 7中,您可能会看到对非MySQL的更多支持,因为此版本引入了数据库抽象。

可能最糟糕的事情就是破解利润。了解Drupal基础知识(管理和编码)的细节确实是值得的,这样你才能真正利用Drupal带来的强大功能。

如果你正在寻找模块,http://drupalmodules.com是你的朋友。 ;)