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

3

我非常擅长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实例(嵌套的Drupal)吗?

3 - 最后,如何处理数据库? 我了解到Drupal和PHP最适合使用MySQL。我们有多个应用程序使用的MS SQL数据库,并希望在开始使用Drupal时将其用于新应用程序。例如,我们拥有一个员工目录,供ASP.NET报告应用程序、ASP.NET员工列表和想要创建一个新的Drupal PHP应用程序来使用(并可能插入/更新更多信息到)该数据库。 处理由多个Drupal和ASP.NET应用程序使用和更新的MS SQL数据库和/或MySQL数据库的最佳/最简单方法是什么?所有应用程序都使用MS SQL数据库是否更容易?还是在MySQL上复制数据库用于Drupal / PHP应用程序,并以某种方式同步这两个数据库会更好?

希望我能在一个帖子中问几个相关问题。


2
作为你第一次尝试学习PHP,选择Drupal可能不是个好主意。这就像是拿着一把装有5发子弹的左轮手枪玩俄罗斯轮盘赌一样危险。 - Peter Bailey
1
我只是想问一下 - 你为什么要从ASP.NET转向PHP呢? - 3Dave
5个回答

2
很抱歉,我没有Drupal的相关经验,无法回答你的第一或第二个问题,但对于第三个问题:
“处理多个Drupal和ASP.NET应用程序使用和更新的MS SQL数据库和/或MySQL数据库的最佳/最简单方法是什么?”
如果您要从ASP.NET应用程序和PHP / Drupal应用程序执行CRUD操作,则建议不要尝试在MySQL和MSSQL之间同步数据,因为这会导致延迟问题,而且您还需要处理两个数据库管理系统之间的差异。
相反,建议您考虑使用存储过程来控制所有数据库访问。这样,您可以确保所有数据库CRUD操作都符合相同的规则和逻辑。
在ASP.NET和PHP中同时使用MSSQL不应该是一个问题,特别是使用非常出色的PDO库,该库提供了访问多个流行数据库管理系统的标准接口。它应该能够让您快速轻松地连接并开始在PHP应用程序中使用MSSQL数据库。

我同意。CRUD以及任何其他数据库任务都应该包装在存储过程中。您不希望每次进行数据库更改时都必须重新编译/部署应用程序,而且您永远不知道什么时候需要从不同的代码/应用程序/其他地方执行相同的数据库操作。 - 3Dave

2

你提出了一些好问题。我会尽力回答它们。我没有使用c#或APS.NET的经验,所以我不知道你具体的问题是什么。我自己作为一个不熟悉Python/Django的开发者学习Drupal。因此,在某种程度上,我可以理解你在学习Drupal时遇到的一些困难。有些问题需要时间、经验和实验才能解决。

要真正了解Drupal和Drupal API,您首先需要对PHP有良好的理解。有时Drupal会执行一些复杂的PHP操作,所以如果您不理解语法或PHP函数等内容,可能会很容易迷失方向。
  • 代码在哪里?
    Drupal是一个模块化系统。Drupal本身就是一组模块,其中一些是使Drupal正常工作所必需的。如果您想编写一些自定义代码,也就是说,您想做一些您无法使用模块完成的事情。 为Drupal开发了大约5000个模块。即使是熟练的程序员,通常最好的选择也是找到一个能够满足您需要或接近您需要的模块。因此,您需要创建自己的模块。
    1. 创建一个名为“模块名称”的文件夹
    2. 在其中创建一个modulename.info文件,其中包含特定格式的模块信息。Drupal将需要它来显示模块列表页面上的模块,并激活这些模块。
    3. 最后创建一个modulename.module文件,其中包含模块的核心代码。

    Drupal还有一个重要的概念是钩子(hook)系统。钩子就像事件,当某些特定的事情发生时,您可以连接到这些事件并修改流程或执行自己的操作。例如,您可以记录每次显示特定表单的时间,或者您可以修改表单并添加/删除字段。

  • 表单
    Drupal有一个FAIP或表单API,用于生成表单,这是文档中有自己页面的内容。您需要创建关联PHP数组,其中包含有关表单每个元素的信息,Drupal将使用该数组来创建表单。
  • 书籍 有许多适合学习Drupal的好书籍。我自己从中学到最多的是Pro Drupal Development
首先,Drupal具有非常细粒度的基于角色的权限系统,可以让您设置客户端允许做什么。您可以创建不同的角色,如管理员、内容创建者、管理员、系统管理员等,并为每个角色分配不同的权限。这很容易在Drupal AI中设置。但是,您需要知道某些超级权限,因为它们将授予访问许多内容的权限。现在,对于集成您的应用程序,您可能需要编写自定义模块。我不知道您希望如何实现此目标。但我认为最好的结果是让Drupal从您的应用程序创建页面、表单等,然后只需来回发送数据。这样主题=网站布局将保持一致。这样用户不会感到他们离开了网站,而只是这个网站提供的另一个功能。
Drupal不仅适合处理MYSQL最佳,您实际上需要MYSQL或PSQL作为Drupal数据库后端。原因是Drupal处理查询的方式,允许您编写非特定查询,无论您使用哪种类型的查询,或者如果您的表具有前缀,则都可以正常工作。因此,对于所有Drupal内部,您都需要其中之一。PHP可以连接到MSSQL并对该数据库运行查询,因此您可以轻松地编写自定义代码,以运行查询到其他应用程序的数据库中,并读取或更新数据。根据数据,您可能需要在数据库中创建一个表格,以便读取和写入数据,然后根据需要同步数据库。它有点取决于您

1

rlb,

我做了相当多的Drupal工作,并具有很强的ASP.NET经验。 您真的需要阅读来调整思维方式。 他们在MVC样式中使用层次结构,这对WebForms和ASP.NET MVC开发人员来说非常陌生...而且一开始似乎很奇怪。

以下是我快速变得非常好的事情清单:

  1. 获得像hostgator这样的主机,只需8美元即可安装Drupal
  2. 获取面向初学者的Pro Drupal Development书籍...非常出色,真正涵盖了许多领域 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具有许多功能,但最好的方法是成为回馈代码的人

有许多可考虑的IDEs,但是要启动文本编辑器应该就可以了。

祝你好运。


1
首先,我认为理解Drupal的局限性非常重要,有些事情它并不是真正为此而设计的。它有点像一个Web应用程序框架,但如果您需要使用自己的自定义数据建模等进行大量定制工作,则Drupal可能不是最灵活或易于实现的解决方案。更通用的框架,例如Zend Framework可能更适合。
学习Drupal的一个重要课程是:不要修改核心或其他模块。这将使升级核心或模块非常耗时。相反,“像Drupal一样”使用钩子进行覆盖。在主题中,您也可以使用钩子进行覆盖,但还有其他方式。覆盖功能非常强大,因此请充分理解该概念。
  1. 我建议你选择适合自己的学习方式,比如视频教程、IRC、黑客技术、线下用户聚会、书籍、文章或者任何组合,并寻找有关Drupal的材料。开始尝试并了解Drupal的工作原理。理解行话是很重要的一部分,比如节点、块、区域、钩子、模块和主题。
  2. Drupal拥有非常灵活的权限系统,使用它可能是最好的选择,而不是自己制作。您可以编写自己的模块,以添加或更改Drupal的行为。因此,如果您想编写一个新应用程序,该应用程序与Drupal配合使用,您可以编写一个执行所需功能的模块,并利用Drupal提供的所有设施,包括用户、权限系统等等。我不太理解您第二个问题的最后一部分“Drupal应用程序是否是嵌套在Drupal网站内部的Drupal实例(嵌套的Drupal)?”。Drupal是服务器上的一组PHP文件,与数据库中的一堆表一起为其服务。多个Drupal网站(因此不同的PHP文件)可以引用相同的数据库或其中的某些部分(例如用户表)。Drupal网站没有真正的“实例”,就像没有真正的“应用程序”一样。当然,我可能对这些术语不太熟悉,但我认为PHP不使用“应用程序”的“实例”。

  3. 这是一个难题,据我所知,Drupal不能与MS SQL一起使用,因此您可能需要自己进行任何与该方向的连接。我还建议在Drupal论坛或IRC上询问。

祝你好运!


1

这里有一些好的答案,我只是简要地补充一些内容。

1 - 学习Drupal:Pro Drupal Development是最好的书籍。进入问题队列并与开发人员互动是熟悉具体事项的一种方式。您关于表单的问题涉及Drupal如何处理表单。FAPI在Drupal中非常强大,并保护您免受安全漏洞的影响。此外,api dot Drupal dot org是代码文档所在的位置,尽管还有其他文档。Google是您的朋友。(在Drupal网站本身上,使用本机搜索以获得分面结果。)

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

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

最糟糕的做法可能是在边缘处进行黑客攻击。真正值得学习Drupal基础知识-管理和编码-以便您真正利用Drupal带来的优势。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接