问题标签 [3-tier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 使用 Symfony PHP 实现 3 层架构
在我到目前为止所做的学校 Web 项目中,我使用 3 层方法构建了我的应用程序。数据层、应用程序和表示层。我已经在 python 和 java 中使用了这个架构,我也想在 php 中使用它。我对层之间的通信非常严格,因为这些是分配的要求,我可以说我觉得它很好,因为当我尝试从 mySQL 切换到 Mongo db 时,这很容易。我只需要更改我的数据访问对象函数内的代码。
正如我之前所说,我现在想用 php 编写一个更大的应用程序,我下载并安装了 Symfony2 框架,它是一个 MVC 框架。我的意图是使用 MySQL 初始测试应用程序,然后使用 Redis 切换和测试它。
所以我的问题是:我可以使用框架的功能和所有“好东西”来编写 3 层架构应用程序吗?我该如何分离这些层?
java - 我的应用程序是否缺少应用程序层?
我是编程新手。我创建了一个 Spring MVC Web 应用程序。它有前端的 JSP,Spring MVC 作为中间件组件,对于数据部分,向 web 服务发出请求以获取数据。中间件组件由于应用程序本身并没有太多的业务逻辑,只是为了获取数据而存在。
我的朋友说我的应用程序缺少应用程序层。它是否正确?目前我在 Tomcat 中部署我的应用程序,数据库是 Teradata。我没有使用任何应用服务器(仅网络服务器)。那么这是否意味着我的应用程序缺少应用程序层?请详细说明。
java - 实施分层方法
我想用 Java(Swing GUI)创建 3 层应用程序。创建分层的最佳方法是什么?是打包还是创建单独的项目并包含 JAR 文件。
java - 三层架构正确性
我有一个在(有缺陷的)三层架构中实现的项目。我的工作是使它更通用,以便将新数据库添加到项目中。
具体:SQL 数据库有一个 databaseFacade,我必须使它更通用,这样我们就可以很容易地添加多个数据库。在这种情况下,将其写入 CSV 文件。
我在数据库层的想法是创建一个定义所有方法的接口。然后让数据库外观(取决于您要使用的)实现此接口,使其变得更加通用。然后我有某种 DBmanager 类。这个 DBmanager 类将读出一个配置文件,以便他知道要使用什么数据库。基于此信息,他将创建接口实例并将其返回给应用程序层。
但是,这是我不知道我是否正确的地方。应用层现在有一个 DBmanager 类(其中所有内容都被正确封装,只有一个方法是公共的,用于返回外观),然后是 DBfacade。
关于这个的正确性有什么想法吗?因为我有疑问。
c# - MVC 控制器和业务逻辑的区别(3 层)
我一直试图在 ASP.NET 中找到 MVC 和 3 层架构之间的区别。我参考了一些以前的一些以前的问题和一些页面,但可以找到一个明确的答案。
这是一个关于 MVC 实现的 msdn 页面:http: //msdn.microsoft.com/en-us/library/ff647462.aspx
考虑一下,我有这个代码:
Single page aspx UI and code as well
现在,考虑我有不同的文件
---- View 和 Code-behind spearated ----
.aspx
.aspx.cs
- 看到上面这个类的msdn 页面链接
Controller
,我无法辨别业务逻辑(对于 3 层架构中的中间层来说是相似的)和控制器之间的区别。 - 3-tier 和 MVC 是完全不同的东西吗?Visual Studio 中的 ASP.NET 应用程序是否已经像 MVC 形式那样分离文件?如果这些没有不同,哪一种是首选风格?
- 如果 .aspx 和 .aspx.cs 已经分开,那么 MVC 框架是什么?
php - 我的 3 层网站使用 cUrl 一直冻结
你好stackoverflow人民,
一点背景
我的 PHP 使用 IIS 安装在 windows 7 com 上,我实现了 web.config,SQL Server (mssql) 版本是 12.0 。
我建立的网站是理论上的 3 层架构,这意味着我已经使用 2 个 com 进行了测试,其中一个 com 包含 mssql 和 web 层,另一个包含应用程序层。
所以当用户连接时,它会像这样连接
我使用 PHP 的 cUrl 函数向应用层发送请求,看起来像这样:
有点抄袭这个问题。
有时我使用 $.ajax 调用来接收来自 Web 层的内容,例如推荐或消息。
一个典型的页面可能包含 10-20 个 cUrl 调用。
问题
问题是网站在 3 或 4 页后一直冻结(它是随机的,但通常在此范围内)或页面没有加载所有内容(据我了解,这是由于 curlopt_timeout 选项造成的?需要解释),我必须重新启动 IIS 服务器。我已经确定是 cUrl 函数不断冻结 com。
我已经寻找了几个月的解决方案,但是在大约 20 种不同的解决方案之后,我束手无策。我不知道为什么 cUrl 会冻结整个 IIS(整个 localhost 会冻结),我也不知道为什么即使我将整个站点复制到另一个 com 时它仍然会返回(情况变得更糟)。
当我在 2 coms 上测试这个东西时(见上文),网站加载速度非常慢。显然也是因为 cUrl。
我希望有人能对正在发生的事情有所了解,并在可能的情况下提供解决方案。
感谢stackoverflow社区。
附加信息
如果它有助于解决问题,所有 cUrl 请求都会转到应用层上的单个 php 文件 dbQuery.php,该文件读取输入并加载所需的 mssql 表页面,获取或发送任何信息,并返回 mssql 结果xml。(我认为这可能会导致瓶颈,因为最大的页面生成了 37 个 cUrl 调用)。
更新
今天早上(26/3/2012)我尝试减少 cUrl 调用的数量,网站性能提高了很多。但是冻结仍然发生:\
c# - 实体框架最佳实践与 asp.net webforms 应用程序
我在 .net 框架 4.0 上构建 asp.net 应用程序,我将使用 Linq 到实体(实体框架)作为我的数据模型(DAL),我的设计模式将是实体框架将是 DAL 的 3 层层层。
我的问题是我是否应该为我的表设置一个 BLL 层,以便我从我调用我的选择、插入、更新和删除函数的表示层(我的页面)处理它,或者最好直接调用实体框架我的表示层?
c# - 三层架构中的哪些内容
最近,我们的教授说我们的表示层应该主要由方法调用组成,并且我们的大部分代码应该在业务对象和数据访问层中完成。我的问题是这通常包括用户输入的代码吗?我的意思是这个;我有一个由多个文本框组成的表单,以便用户可以输入不同内容的值。然后,用户单击一个按钮,信息将保存在数据库中。
按钮偶数方法如下所示:
上述按钮事件方法中的代码是否应该真正进入业务对象或数据访问类而不是表示层类?
这不是家庭作业。在我的编程课之外,我正在为我的儿子创建一个 90 天的锻炼计划。我也可以将它用作毕业时的投资组合,因此,我想确保我遵循标准做法。
delphi - 如何在服务器端获取kbmMW客户端查询语句?
我找到了“OnQueryStatement”方法:
这个方法可以得到客户端的查询语句,但是所有的客户端查询都会触发这个事件两次!(如截图)!为什么?如何正确获取客户端查询语句?
提前致谢!:)
jakarta-ee - Java-EE6:如何设计层之间传递的@Entity?
我目前正在使用 Java-EE6(GlassFish 3.1.2、MySQL Server 5.1 和 Netbeans 7.1.1)开发 3 层应用程序。
该项目目前包括3个项目:
- 企业应用程序/EJB:控制数据库实体的外观
- Java Class-Library:表示数据库模型的@Entity 注释类(该项目由 EE-app 和胖客户端共享,以便在层之间交换实体实例)
- J2SE Fat-Client:服务器资源的 JNDI 查找(远程访问 EJB)
为了在创建/修改/删除实体时更新客户端的 GUI,我决定通过实现一个主题来使用 JMS,其中每个客户端在启动时订阅,并且 EJB 容器上的消息驱动 bean 充当发布者。
现在我面临以下大问题:
- 我将生命周期侦听器(@PostUpdate 等)附加到实体对象,然后它们应该将更新消息发布到订阅的客户端。实体类位于 class-lib 项目中,而发布者位于 EE-app 中。问题是,EE 应用程序引用了类库项目,但反之亦然(因为不允许循环项目引用)。因此,实体类中的生命周期回调方法在 EE-app 中的消息驱动发布者 bean 上没有引用。
这是一个与设计更相关的问题,因此问您这是否基本上是使用 Java-EE6 设计 3 层应用程序的正确方法?
如果可能,我想避免 DTO/DAO,以尽可能降低复杂性,并且应用程序不会产生繁重的网络流量。
提前感谢您的建议!