Questions tagged «web-applications»

Web应用程序是通过“ Web”访问的应用程序,“ Web”可以表示Internet或内部网络(Intranet)。

14
您应该对Web应用程序进行版本控制吗?
我最近与一位同事讨论了有关Web应用程序版本控制的问题。 我认为您根本不需要它,并且,如果您只想进行健全性检查以确认您的最新版本已经发布,我认为日期(YYMMDD)可能就足够了。 我在基地外吗?我错过了重点吗?我应该使用Web应用程序版本号吗


4
MVC / REST是否应为属于其他用户的资源返回403或404?
当使用基于资源的站点(例如MVC应用程序或REST服务)时,当客户端尝试GET访问他们无权访问的资源时,我们有两个主要选择: 403,表示客户未经授权 ; 要么 404,表示资源不存在(或无法找到)。 共同的智慧和惯例似乎是对事实做出回应-即403。但是我想知道这是否真的是正确的做法。 安全登录系统永远不会告诉您登录失败的原因。也就是说,就客户端而言,不存在的用户名和错误的密码之间没有可检测到的差异。目的是使用户ID(或更糟糕的是电子邮件地址)不易被发现。 从隐私的角度来看,返回404似乎更安全。我想起了一起事件,据说有人通过查看真人秀(幸存者)中的哪些资源不存在而找到了他们。网站与哪些网站做了。我担心403可能会泄露敏感信息,例如序列号或帐号。 是否有令人信服的理由不返回404?404政策会在其他地方产生负面影响吗?如果没有,那为什么不更普遍呢?

6
人们为什么要使用REST API而不是DBAL?
在过去的两家公司中,我曾经使用过REST API,用于通过Web应用程序查询数据。即。而不是让Web应用程序直接执行SQL,而是调用REST API,然后执行SQL并返回结果。 我的问题是...为什么要这样做? 如果它要暴露给第三方,我可以理解。比完整的数据库更好地公开有限的REST API。但是在这两家公司中并非如此。 有人向我建议,这些REST API使在DBMS之间进行切换更加容易。但这不是数据库抽象层(DBAL)的重点吗?也许您将ORM用作DBAL,或者您可能只编写原始SQL并让DBAL在适当的情况下转换特定于DB的内容(例如,将MySQL的LIMIT转换为MSSQL的TOP)。 无论哪种方式,对我来说似乎都是不必要的。而且我认为这也使诊断问题变得更加困难。如果Web应用程序上的报告给出了错误的数字,则您不仅可以转储SQL查询,还必须转储REST URL,然后进入用作REST API的项目,并从中提取SQL。因此,这是一个额外的间接层,减慢了诊断过程。

5
没有中央数据库
我有一个客户正在寻求构建处理非常敏感的数据(比银行/卡详细信息更敏感)的网站/移动应用/桌面应用。由于数据的敏感性,他们不想将其保存在中央数据库中,但他们仍然希望其应用程序进行同步(假设我将一些数据添加到了移动应用程序中,然后我希望能够转到我的移动应用程序中。桌面应用程序并看到相同的数据)。 我想不出一种不错的,可靠的方法来做到这一点,我不确定是否有一种方法。这就是为什么我在这里。有谁知道我该如何处理这些数据? 我正在考虑的一种解决方案是在每个应用程序上都有一个客户端数据库,该数据库将以某种方式在应用程序之间进行同步,我可以看到这是非常不可靠的,而且变得混乱。

4
如何防止Web应用程序中的竞争状况?
考虑一个电子商务网站,其中Alice和Bob都在编辑产品清单。爱丽丝(Alice)正在改善描述,而鲍勃(Bob)正在更新价格。他们开始同时编辑Acme Wonder Widget。鲍勃首先完成并用新价格保存产品。爱丽丝花了更长的时间来更新描述,完成后,她用新描述保存产品。不幸的是,她还用原先的价格覆盖了价格,这是不希望的。 以我的经验,这些问题在Web应用程序中极为常见。某些软件(例如Wiki软件)确实对此具有保护作用-通常第二次保存失败,并显示“页面在编辑时已更新”。但是大多数网站都没有这种保护。 值得注意的是,控制器方法本身就是线程安全的。通常,他们使用数据库事务,从某种意义上说,如果爱丽丝和鲍勃试图在同一时刻进行保存,就不会造成损坏,这使它们变得安全。竞争条件是由Alice或Bob在浏览器中拥有过时的数据引起的。 我们如何预防这种比赛条件?我特别想知道: 可以使用哪些技术?例如,跟踪上次更改的时间。各自的优缺点是什么。 什么是有用的用户体验? 此保护内置哪些框架?

7
业务逻辑是否可能不会潜入视图?
在过去的三年中,我已经为多个Web应用程序项目进行了开发,无论是个人的还是工作的,我似乎都无法弄清楚是否有可能至少某些业务逻辑没有出现在应用程序的视图层中。 在大多数情况下,会出现类似“如果用户选择了选项x,那么应用程序必须使他能够提供y的信息,否则,他/她应该提供信息z”之类的问题。或执行一些AJAX操作,该操作应将一些更改应用于模型,但除非用户明确要求,否则不要提交更改。这些是我遇到的一些最简单的问题,我无法弄清楚如何避免视图中的复杂逻辑。 我读过的大多数有关MVC的书通常都展示一些非常琐碎的示例,例如CRUD操作,它们仅更新服务器上的数据并显示它们,但在大多数功能丰富的应用程序中,情况并非如此。 是否可以实现完全没有业务逻辑的视图?

4
像亚马逊这样的公司如何避免访问数据库层的瓶颈?
如果您想象一家像亚马逊(或任何其他大型电子商务网站应用程序)的公司正在大规模运营一家在线商店,而其仓库中的实物数量有限,那么他们如何优化这一点,以至于没有一个瓶颈?当然,它们必须具有多个具有复制功能的数据库,以及许多独立处理负载的服务器。但是,如果多个用户由不同的服务器提供服务,并且两个用户都试图将相同的商品添加到他们的购物车中,而该商品仅剩一个,则该商品的剩余数量必须有一些“真相来源”。这是否意味着至少,所有访问单个商品的产品信息的用户都必须串行查询同一数据库? 我想了解如何使用分布式计算来经营这么大的商店,而又不会在包含库存信息的单个数据库上造成巨大的瓶颈。

7
是否有充分的理由避免针对非实时Web应用程序使用node.js?
我已经看到很多关于实时Web应用程序的Node.js多么出色的讨论-需要套接字,Comet,AJAX大量通信等等的东西。我知道,它的事件驱动,异步,线程驱动模型也适用于低开销的并发。 我也看到了Node.js教程,这些教程用于更简单的“传统”非实时应用程序(例如,标准博客示例,对于那些学习应用程序开发的人们来说,这似乎是标准的“ Hello World”)。我也知道,节点静态允许您提供静态资产。 我的问题是:是否有充分的理由要避免针对传统Web应用程序使用Node.js,例如分类,论坛,上述博客示例或为内部业务应用程序构建的CRUD应用程序?仅仅因为它在所有时髦的实时信息方面都表现出色,这是否就禁忌它用于更固定的用途? 我唯一能想到的就是缺乏成熟的库(尽管情况正在发生变化)。 (我问的原因是,我正在考虑放弃PHP以使用Node.js,主要是为了克服语言之间切换的阻抗不匹配问题,而且还可以重用验证代码和其他功能。我的超我劝告我选择最好的工具;但是,我没有太多的时间学习十五种语言及其所有的userland库,只是为了拥有一个全面的工具库,而且还可以确保Node.js可能为我提供比PHP /以后我必须开始考虑流量大的Apache。) [编辑]到目前为止,谢谢大家。我只想看看在选择答案之前是否还有其他人会考虑。@Raynos的答案有点证实了我的想法,评论者的链接为我们提供了很好的思考,但是我想看看是否还有其他人有任何特定于节点的答案,例如“不要将节点用于问题X” '。(除了高CPU任务,我已经知道了:-)

3
在单页面应用程序中处理浏览器缓存
我试图弄清楚如何正确处理单页应用程序的Web浏览器缓存。 我有一个非常典型的设计:实现SPA的几个HTML,JS和CSS文件,以及SPA消耗的一堆JSON数据。当我要推送更新时会出现问题:我同时更新了网站的静态部分和同时生成JSON的代码,但是客户端浏览器通常缓存了静态部分,因此旧代码尝试处理新数据并可能(取决于所做的更改)遇到问题。(特别是,在使用缓存的JS而无需重新验证的情况下,IE似乎比Chrome或Firefox更具攻击性。) 处理此问题的最佳方法是什么? 确保我的JSON更改向后兼容,并假定浏览器缓存将在合理的时间范围内到期。 在静态JS和JSON中都嵌入某种版本号,然后window.location.reload(true);在它们不匹配时执行。 找出标题的适当组合(must-revalidate或no-cache其他方式;有关执行此操作的方法,来源 会有所不同),以确保浏览器始终在每次加载时重新验证所有资源,即使这意味着要进行几次额外的往返加载网站。 微管理我的缓存控件并使标头过期,以便在我要推送更新时静态内容过期。 还有吗

3
我应该使用WADL描述我的RESTful API吗?
我将着手进行一个广泛使用正确的RESTful方法的项目。也就是说,它使用HATEOAS并以允许客户端进行常规探索的方式提供资源。 我想确保以一种允许以多种语言自动生成客户端应用程序的方式提供对端点的描述。我了解对于基于SOAP的Web服务,我可以使用WSDL,并且显然有WSDL2提供了与REST一起使用的HTTP动词的更大定义。但是,我看到许多关于它的实用程序的文章来回摆动。 因此,我应该使用WADL来允许外部代码生成器快速为我的Web应用程序构建客户端,还是期望有更好的标准?

6
建议IT需求是开发人员的工作吗?
我是唯一一个即将结束的Web应用程序开发人员。现在,我们正在研究使其在大约几个月的时间内上线。 这是非IT公司的Web应用程序。尽管他们有自己的内部IT团队,但是他们已经问过我对实时服务器的硬件要求是什么。RAM,32位或64位。 内部IT团队不应该这样做吗?或者由于我是唯一从事该项目的人员,所以我有责任让他们知道可能影响项目性能的任何特定硬件要求吗? 我问这个问题的原因是,我以前没有做过。过去,我一直被赋予一台服务器,并要求在其上部署应用程序。我从不担心服务器配置等。

4
您如何处理多个用户在Webapp中编辑同一条数据?
我正在处理的一个项目正在寻找一个Web应用程序,该应用程序将管理多个用户之间的任务列表。这是一个主任务列表,其任务项由授权用户分发。每个用户都有自己的帐户来登录和查看分配给他们的任务;多个用户可能有一个共同的任务。 我试图将项目的详细信息排除在外,因为我将更多地与如何处理以下情况的整体概念作斗争,但是如果有帮助,我将使用Java,EclipseLink和GWT,并实现RequestFactory。该数据库是PostgreSQL。 因此,我尝试解决的概念性问题如下: 如果多个用户共有的单个任务以任何方式更改(例如任务完成,删除等),则具有此任务的所有用户的任务列表都将更新。有哪些设计模式可帮助实现此功能? 我查看过的某些模式是“观察员”和“调解员”-在这些模式上是否应该考虑其他模式? 假设有两个用户同时更改同一任务。 首先,我应该允许这种情况发生还是在某个人完成更改之前将其锁定? 其次,如果不加锁,我该如何调和接受谁的更改?这涉及1中的情况,因为用户1可以提交数据,并且在用户2接收更新的数据之前,他/她可能已经前进并提交了他/她的更改。 我真的在寻找您可以提供的有关如何在此Web应用程序的多个实例之间正确同步数据的任何指导点,建议或技巧。我将不胜感激!

4
创建api时,我应该坚持使用小函数和多次调用,还是几次调用和大函数?
我有一个需要维护的Rails平台。它基于其构建了许多不同的Web应用程序。但是,现在客户正在请求一个API,以便他们可以将用户保留在其站点上,但可以利用我们拥有的一些自动化任务。 该平台用于构建保险应用程序,并允许其在线购买,以及提供下载与您的保单相关的文档的方式。 所以我在构建API时的问题是: 当我必须做很多事情,比如validate,创建user,user profile和policy,几乎在同一时间。我应该进行4个单独的API调用,并让客户端在其端进行4个调用。还是我应该打一个电话,该电话除了很多参数之外,可以验证客户端并同时创建所有这三个对象,从而简化客户端的操作? 在这种情况下,客户端可以同时获取所有必需的信息,因此它不像在其应用程序中有自然的流程那样暂停,它们可以对我的平台进行API调用。 在客户端上使用过许多API之前,我的直觉是尽可能简化客户端,让他们只进行一次调用。但是,这会导致functionsAPI 变得相当庞大,我也不喜欢这两者。 您如何建议我解决这个问题? 需要注意的是,我对客户端能否实现复杂的API并不十分有信心。

4
系统地选择编程语言
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我正在寻找一种选择语言的方法。我不是在征求有关语言的意见。我的任务是将我们商店的当前语言与其他可用语言进行比较。我们是一家网站开发商店。 我们的CEO希望获得一份关于所有可用的基于Web的语言的完整白皮书,这些语言是它们的派生语言(例如,jsp来自Java,而Java来自c / c ++)。我还需要创建一个矩阵,其中包含特定语言的所有关键因素以及该特定语言的不足之处。语言是受平台限制的吗,是为功能编程,过程还是面向对象设计的,还是可以与任何编程范例一起使用? 我还需要掌握较少技术性的信息,例如给定语言的人才库的规模以及该人才库中位数的薪水。市场将如何看待我们的选择? 我们开始寻找一位顾问来帮助我们理解所有这些事情,但是我们发现大多数顾问都来自开发背景,而且通常答案似乎是“ xxx是最好的语言,因为它是我所用的语言。在过去n年中使用最多,并且从未让我失望。您可以在前端添加yyy并使用zzz库” 我对这项任务感到不知所措,并且鉴于我们的首席执行官正在寻找的东西,我觉得最好的做法是在学术界寻找并雇用没有实际开发经验的教授来“教”我们关于所有可能的语言。 还有其他人必须进行此练习吗?如果可以的话,您可以分享过去用于该过程的步骤和/或方法吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.