飞天网站设计出品
扫描关注网站建设微信公众账号

扫一扫 关注飞天

东莞做网站架构是什么

飞天.筑2023-02-07公司新闻 17029

东莞做网站架构是什么?东莞做网站架构软件架构简介,

框架选择

当前的PHP框架有许多选项,如CakePHP、Symfony、Zend framework等。要使用哪一个,没有唯一的答案。这取决于团队成员对每个框架的理解。很多时候,即使不使用框架,也可以编写好的程序。例如,据说Flickr是使用诸如Pearl+Smarty之类的类库编写的。因此,是否使用框架或使用什么框架通常不是最重要的。重要的是,我们应该意识到编程思想中的框架。

逻辑分层

东莞做网站达到一定规模后,代码中的各种逻辑交织在一起,这将给维护和扩展带来巨大障碍。此时,我们的解决方案实际上非常简单,即重构和分层逻辑。通常,从上到下可以分为表示层、应用层、域层和持久层。

演示文稿层

所谓的表示层不仅仅是一个模板。其范围应该更广。所有与性能相关的逻辑都应包含在表示层的范围内。例如,某个地方的字体应显示为红色,而某个地方开头应为两个空格。这些属于表示层。在许多情况下,我们容易犯错误,将属于表示层的逻辑放到其他级别。这里有一个非常常见的例子:当我们在列表页面上显示文章的标题时,我们将设置最大字数。一旦标题长度超过此限制,我们将截断它并在结尾显示“..”。这是最典型的表示层逻辑,但实际情况是,许多程序员在非表示代码中完成数据采集和截断,然后将值分配给表示模板。这种代码最直接的缺点是数据相同。在这一页上,我可能想显示前10个单词,而在另一页上我可能希望显示前15个单词。一旦我们固化了程序中的单词数量,我们将失去可移植性。正确的方法是创建一个程序(如视图助手)来处理这样的逻辑。例如,Smarty中的Truncate属于这样的视图助手(但它的实现不适合中文)。

应用程序层

所谓的应用层主要用于定义用户可以做什么,并将操作结果反馈给表示层。至于如何做,通常不是它的责任范围(而是域层的责任范围)。它将通过委派将如何执行的工作委派给域层。在使用MVC架构的东莞做网站中,我们可以看到如下URL:domain/articles/view/123。它的内部代码实现通常是Articles控制器类,它有一个视图方法。这是一个典型的应用程序层操作,因为它定义了用户可以执行的操作。这意味着控制器最好保持“瘦”,这进一步解释了应用层应该尽可能简单,不应该包括涉及域内容的逻辑。

域层

所谓域层的最直接解释是包含域逻辑的层。它是软件的灵魂。首先,我们来看看什么是域逻辑。简而言之,具有明确域概念的逻辑就是域逻辑。例如,当我们从ATM取款时,流程大致如下:插入银联卡,输入密码,输入取款金额,确认,取钱,然后ATM吐出交易单。在这个过程中,银联卡从ATM机中的账户转账的过程是一个域逻辑,因为取款在银行中是一个明确的域概念,而ATM机吐出交易收据不是域逻辑,而是一个应用逻辑,因为吐出交易单据在银行中不是一个明确域概念,而是一种技术手段。相应地,我们不会在取款后吐出交易收据,也可以发送提醒消息,但不一定。如果在现实中,我们要求取款后必须吐出交易单,也就是说,吐出的交易单已经与取款紧密结合,那么您也可以将吐出的业务单视为域逻辑的一部分,一切取决于问题的具体情况。

在Eric的经典领域驱动设计中,领域层分为五个基本元素:实体、价值对象、服务、工厂和仓库。详情请参阅书中的介绍。域层最常见的错误是将应该属于域层的逻辑公开给其他级别。例如,在CMS系统中,热门文章的定义如下:每天浏览超过1000次,评论超过100次。这类文章是热门文章。对于CMS来说,“热门文章”一词无疑是一个重要的领域概念。我们如何实现这种逻辑的设计?您可以给出以下代码:“SELECT…FROM…WHERE browse>1000 AND comment>100”。是的,这是实现它的最简单的方法。但这里我们需要注意的是,重要的域逻辑“每天超过1000个视图,每天超过100条评论”隐藏在SQL语句中。SQL语句显然不属于域层,也就是说,我们的域逻辑已经泄漏。

持久性层

所谓的持久层是指将我们的域模型保存在数据库中。因为我们的程序代码是面向对象的,数据库通常是关系型的,所以我们需要在将域模型保存到数据库之前将其压平。但是在PHP中,到目前为止,还没有很好的ORM,因此在这方面没有太多解决方案。请参考Martin的书“企业应用程序架构模型”,可以使用的方法大致包括行数据网关或表数据网关,或者将域层和持久层组合成活动记录。


文章关键词
东莞做网站