问题标签 [web-architecture]
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.
ajax - 社交网络,如何构建“你有新的未读消息”架构
例如,当我们在http://facebook.com或http://gmail.com上有新消息时,网站会向我们发出信号,而这发生在没有刷新页面的情况下。这个怎么运作?我是这样想象的:
一些 Jhon 是现场注册用户。
有 javascript 代码,每 10 秒向消息表发送 AJAX 请求,用于检查:在表中,是否有未读消息给 john(架构,如何标记就绪/未读消息,这里不重要),如果是,站点给出信号对 Jhon “你有几条新消息”。
请告诉我,我是否更接近真相?如果是,我还有一个问题。
networking - 两层架构和三层架构有什么区别?
我在具有业务逻辑(客户端)的应用程序中使用 JDBC。此 JDBC 连接到另一台机器(服务器)中的数据库。在这种情况下,我的 JDBC 直接与数据库连接并存储和检索数据。这是两层架构吧?
在另一个应用程序中,例如 servlet 编程,我只是在我的客户端机器上有浏览器,它是表示层(客户端层)。让我将我的业务逻辑视为应用程序层(第二层)和数据库作为数据层(第三层)。我仍然使用 JDBC 将我的应用程序(业务逻辑)与数据库连接起来。第二层和第三层现在驻留在服务器上。
通过上面的例子,在三层架构中,浏览器只是额外添加了一个浏览器,并将我的业务逻辑保留在服务器上。除了这些,我没有感觉到任何性能差异。如果我错了,请纠正我并通过其他示例向我解释 2 层和 3 层的确切架构。提前谢谢亲爱的朋友们。
php - 减少 AJAX/PHP/MYSQL 中 mysql 连接所需的架构
背景:
我通过 AJAX 将变量传递给 php 文件。php 文件连接到服务器并检索它传递回 javascript 的结果。每次用户单击请求按钮时都会发生这种情况(大约每 5 秒)。因此,对于每个用户,php 文件(以及 mysql 连接)每 5 秒调用一次。
问题:
如上所述,mysql 连接的数量高得不切实际。
问题:
有没有更好的架构,而不是有这么多的 mysql 连接,我宁愿有更少的连接。
我已经阅读了一些关于 mysql_pconnect 的内容。但是如果我必须升级,因为我在某个地方读到 mysqli 不支持它,会发生什么?单个 mysql_pconnect 可以处理多少个查询?如果有人建议 mysql_pconnect 那么如何实现呢?
asp.net-mvc - 使用 ASP.NET MVC 4 编写模块化页面
我正在开发 ASP.NET MVC 4 应用程序,它将用于配置复杂的应用程序。我想要一个配置页面,有多个选项卡。每个选项卡将用于配置系统中的不同部分,当您单击它时,将使用 AJAX 加载正确的表单(每个配置选项卡将是不同的局部视图)。我想在页面底部有“保存更改”按钮,这将保存整个选项卡中的更改。
由于系统本身是模块化的,我想让配置站点也模块化。这意味着,我希望每个选项卡都是某种插件,向我公开以下方法(通过从接口继承):GetConfigurationPartialView(它将返回带有此选项卡视图模型的局部视图),SaveChanges(其中将配置作为草稿保存到数据库中),GetConfigurationXml 将导出完整的 XML 配置并将其应用到系统上。
我的问题是:
- 你觉得这个设计怎么样?你有更好的主意吗?
- 您如何建议在主视图中实现这个“保存更改”按钮?我如何迭代我的所有插件并调用每个插件的 SaveChanges 方法,将正确的模型对象(这是部分视图的模型)传递给它,而无需深入了解主控制器/视图中的每个插件对象,所以我可以保持这个系统易于扩展吗?
- 一些选项卡包括带有数据的网格。我开始研究 Kendo UI 网格。我想让用户在网格上做所有事情,在客户端(删除和添加新行),然后我想在我写的 SaveChanges 方法中获取客户端所做的所有更改的服务器端列表(例如,在伪代码中:changes[0]={Action = Delete, ProductID = 1}, changes[1]={Action=New, ProductID=1, Name="aaa" })。我该怎么做?
谢谢。
node.js - 这是一个好的 Web 应用程序架构吗?
我正在尝试自己构建一个网站,但我也想构建一个本机移动应用程序,将来可以访问同一个数据库。
我现在想的是使用 Node.js 为数据库构建 Web 服务包装器,每个数据库操作都将通过 Web 服务 API 执行。对于网站框架,我将使用 Rails。
请让我知道这是否是一个好的架构。我不确定使用 Web 服务封装数据是否是个好主意。会不会有性能问题?如果可行,我应该使用哪个数据库?Rails 可以通过 Web 服务与 DB 通信吗?
非常感谢!
更新
为什么人们对这个问题投反对票?
asp.net-mvc-4 - n 层数据检索的区域参数
我想知道我的 Web 应用程序层中用户区域设置的最佳位置,以格式化数据库结果查询的日期列输出。
我可以从 HttpContext.Request 获取区域设置并将其作为字符串传递给业务层,然后使用业务对象层中的 System.Globalisation 创建一个 DateTimeFormatInfo 对象。
IE。DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture(cultureString).DateTimeFormat;
业务层从数据访问层获取数据,并使用 LINQ 查询选择器,可以使用上面的 dtfi 对象格式化日期列。
但是我想知道我是否真的应该将带有语言文化的字符串传递给业务层,而是应该使用从业务层返回的数据加载另一个匿名类型,并在控制器中添加日期格式。
这将避免 WPF 应用程序将执行线程的文化信息传递给业务层中的同一调用的情况。
web-applications - 从前端迁移到后端 Web 开发
我主要做前端 Web 开发,但我想转向后端 Web 开发。
我有一些后端开发经验。我使用 Ruby-on-Rails 开发了一个基本网站,但我没有“得到”很多东西;我只是这样做是因为一些教程或截屏视频是这样说的。基本上我以某种方式破解了它。所以,我了解 MVC 模式并对后端开发有所了解。
但是,我想学习后端开发,以便我可以开发生产质量的动态数据库驱动的 Web 应用程序。路线图应该是什么?(我正在休假 6 个月。)同样,我真的很想“得到”它。
目前,当我在网上阅读内容时,我发现自己迷失了很多术语。我想了解架构。例如,我在 highscalability.com 上阅读了一些关于架构的帖子,如果不同的网站感觉完全迷失了方向。所以,我想了解所有这些东西。
另外,我想学习如何开发一个可用于 iOS 应用程序和东西的 JSON api。
我想知道如何使用 AWS 或 heroku 之类的东西来部署应用程序。
另外,我不想从像 RoR 这样的高级框架开始,因为它们隐藏了很多东西。相反,我想从 node.js 开始,因为我已经有 JS 的经验,而且我认为它会帮助我更好地学习内部结构。
编辑:是的,我阅读了关于 nodejs 资源的 SO 答案,但这只是帮助我学习 nodejs API。不是我上面提到的其他东西。
performance - 创建 Web 应用程序架构最重要的是什么?可扩展性、可维护性还是性能?
我目前正要重新设计一个正在运行的、特殊用途的德语社交网络 Web 应用程序。当前版本太混乱了,我们决定从头开始。我不想再遇到所有的问题,所以我一直在思考和阅读很多关于:
- 可扩展性
- 代码的可维护性
- 表现
我在一篇博文中争辩说,对于我们系统的架构,我将完全使用重要性顺序,如上面发布的含义:
可扩展性 >> 可维护性 >> 性能
这些结果让我有点惊讶,因为我一直认为性能对于创建可扩展系统至关重要。
- 您对这三个因素的重要性有何看法?
- 我还认为,为了实现这些目标,需要事先进行仔细的规划和设计。你有什么其他必须有的建议吗?
ruby-on-rails - 如何在 Rails 应用程序中设计/组织/架构移动 Web 的开发?
我将尽我所能将其表述为一个可以回答的问题,而不是作为讨论的开始。
我的问题的本质是,根据您的经验,将您的网站的移动 Web 版本开发为使用您的网站作为 API 的单独应用程序,还是从为您的网站提供服务的同一个 Rails 应用程序中开发更好?
我目前正在计划我们将如何实施它,这里是每个我认为的优点/缺点。
移动网络的单独应用程序
- 好处
- 性能:现有网站的开销更少 = 更好的性能
- 占用空间更小:更易于组织和更清洁的应用程序来工作/开发
- 解耦:将迫使我们为桌面/移动构建服务
- 缺点
- 子域:必须使用 m.thredup.com,以便将移动流量路由到单独的应用程序
- 会话管理:必须处理多个应用程序/域的身份验证
- 本地开发更难:为本地开发维护的另一项服务
- 分支管理:新代码需要 Web 应用程序 + 移动应用程序的单独分支
移动网络的相同应用程序
- 好处
- URL 计划:能够在桌面 + 移动设备上使用相同的 URL(更易于共享)
- 会话管理:能够使用现有的用户会话
- 更快的实施:更短的项目时间表,因为所有后端逻辑都已经到位
- 缺点
- 代码膨胀:为我们已经很大的 Rails Web 应用程序提供更多代码
如果我们要在现有应用程序中开发移动网络,这里是我们呈现移动视图的方法 - http://scottwb.com/blog/2012/02/23/a-better-way-to-add-mobile -pages-to-a-rails-site/
任何见解将不胜感激。
wcf - 如何从 Windows Azure 云服务使用非公共 NTLM WCF 服务?
我有一个具有单个辅助角色的 Windows Azure 云服务。辅助角色的 App.config 文件指定 NTLM 凭据应用于 WCF 身份验证(所有这些的要点:http: //goo.gl/wFCLv7)。
一切都按预期在本地工作,但是当我将 CloudService 部署到 Azure 时,尽管系统提示我输入我的 NTLM 凭据(根据我 RDP 到的 Worker Role 机器的 Windows 事件安全日志成功审核了这些凭据),WCF 的调用服务返回空值。(我不知道如何收集更多的调试信息)
在与同事核实之后,WCF 服务的主机果然是私有的,而不是面向公众的——这可能解释了为什么当我的应用程序托管在云上时,我无法从我的应用程序中查询它,即使使用我的 Windows 身份验证凭据也是如此。
如何利用来自 Windows Azure 的非公共、NTLM 安全的 WCF 服务?为了使用 Azure 中的服务,我需要在 WCF 服务器上进行哪些更改?一个简单的答案可能是公开 WCF 主机——但是公司非常害怕“云”——是否有更小的替代方案可以用于概念验证?
最好的,网络/安全/Azure noob