Questions tagged «web-applications»

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

5
为网站提供友好的URL与数据库ID的实际情况
我们有一个资源数据库,无论是产品,博客文章还是其他资源。我们需要为公共网站设计一个URL方案来解决它们。 这是绑定数据库ID的两个示例: https://www.youtube.com/watch?v=7FPS6llqhXw http://www.amazon.co.uk/gp/product/B000NHOMSQ 这是一个友好的示例: http://en.wikipedia.org/wiki/LED_circuit (瞥见我在那里的浏览生活) 我喜欢友好的URL,因为当您将鼠标悬停在电子邮件或文档中或在电子邮件或文档中看到URL时,您会知道URL末尾的含义。SEO更好,或者曾经是。 重命名文档或产品时会发生什么?是因为它已更改(Wiki可能不会更改,但我们的资源可能会更改)还是由于输入错误,对吗?我们的资源非常技术性,冗长且容易出错。 另外,我们有一个数据库ID,它是一个数字。让我们来看一个使用假装租赁商店的视频地址的想法: http://vidsyeah.com/video/sliding-doors/287171 该ID很明显,并用于数据库查找中。精细。 滑动门不是唯一的,只是从视频标题生成的,可以在GET上进行验证,因此,如果输入了滑动门,但与文档287171中的内容不匹配,则会响应404。 或者,也许它可以忽略不计,如果有人关心的话,它允许人类将他们喜欢的东西粘在里面。因此,该URL也将起作用: http://vidsyeah.com/video/anything-at_all/287171 如前所述,验证友好部分的问题是重命名或拼写错误的问题。如果名称更改,并且确实发生在我们的域中,我们不想破坏那里的URL,那么我们应该: 只是不验证友好部分。 验证,但在数据库记录中添加友好零件的“历史记录”,以便任何以前的友好ID仍然有效! 欢迎您的想法和想法。 路加

7
混淆/混淆面向公众的数据库ID真的是“最佳实践”吗?
我听说人们在互联网上到处都是演讲,这是使Web应用程序中面向公众的数据库ID晦涩难懂的最佳实践。我想它们主要是形式和网址的意思,但是我从没读过太多关于这个主题的文章。 编辑:当然,现在我问这个问题,我发现了一些有关该主题的资源: /programming/2374538/obscuring-database-ids /programming/1895685/should-i-obscure-primary-key-values http://joshua.schachter.org/2007/01/autoincrement.html 这些链接满足了我的一些好奇心,但是SO帖子的选票并不多,而且在这种情况下不一定围绕该主题展开,因此我不确定该怎么做,其中一些声称第三个链接是虚假的。我将保留我的其余帖子: 我了解模糊性和安全性之间的区别,以及两者如何协同工作,但是我无法想象为什么这样做是必要的。 这有什么道理吗,仅仅是偏执狂,还是完全虚假? 我可以想到实现此目标的方法,但是当然,这会增加应用程序代码的复杂性。在什么情况下有用?如果这是一些人经常做的,它怎么通常部署?散列标识符?还有吗 似乎需要大量额外的安全性才能完成大量工作。我并不是在寻找真正的解决方案,我只是想了解人们在现实世界中将如何/为什么这样做。 这是否真的被认为是“最佳实践”,还是仅仅是微不足道的微优化? 注意:我认为有些人可能会得出错误的主意:我并不是在建议难以猜测的id是唯一的安全机制,显然会有通常的访问检查。让我们假设它们已经就位,并且仅仅知道记录的ID或哈希ID不足以授予访问权限。

7
作为REST API客户端的Web应用程序:如何处理资源标识符
当我尝试实施REST时,与REST相关的几个概念就在我的脑海中。 我有一个包含业务逻辑的REST-ful后端API系统,以及一个提供UI的Web应用程序。从有关REST的各种资源(特别是REST在实践中:超媒体和系统体系结构)中,我知道我不应该公开实体的原始标识符,而应该返回带有的超链接rel="self"。 考虑这个例子。REST api具有返回一个人的资源: <Person> <Links> <Link rel="self" href="http://my.rest.api/api/person/1234"/> </Links> <Pets> <Link rel="pet" href="http://my.rest.api/api/pet/678"/> </Pets> </Person> Web应用程序出现问题。假设它返回的页面包含浏览器的超链接: <body class="person"> <p> <a href="http://my.web.app/pet/???????" /> </p> </body> 我应该在href属性中添加什么?当用户打开目标页面时,如何将API实体URL保留在Web应用程序中以便能够获取该实体? 要求似乎有冲突: 超链接href应指向Web应用程序,因为它是承载UI的系统 本href应该有实体的一些ID,因为Web应用程序必须能够在目标页打开时,解决实体 提到的书说,Web应用程序不应解析/构造REST URL,因为它不是基于REST的。 URI对消费者应该是不透明的。只有URI的颁发者知道如何解释它并将其映射到资源。 因此,我不能仅仅1234取自API响应URL,因为作为RESTful客户端,我应该将其视为http://my.rest.api/api/AGRIDd~ryPQZ^$RjEL0j。另一方面,我必须提供一些URL,这些URL可以引到我的Web应用程序,并且足以使该应用程序以某种方式还原API的原始URL,并使用该URL来访问API资源。 最简单的方法可能只是使用资源的API URL作为它们的字符串标识符。但是网页网址http://my.web.app/person/http%3A%2F%2Fmy.rest.api%2Fapi%2Fperson%2F1234很丑陋。 对于台式机应用程序或单页javascript应用程序而言,这似乎非常容易。由于它们持续存在,因此它们可以将URL与服务对象一起保留在内存中,以延长应用程序的生命周期,并在必要时使用它们。 使用Web应用程序,我可以想象几种方法,但是所有方法似乎都很奇怪: 替换API URL中的主机,并仅保留结果。巨大的缺点是,它需要Web应用程序处理API生成的任何URL,这意味着怪异的耦合。而且,它不再是RESTful的,因为我的Web应用程序开始解释URL。 公开REST API中的原始ID及其链接,使用它们来构建Web App的URL,然后使用Web App Server上的ID在API中找到所需的资源。这样比较好,但是会影响Web应用程序服务器的性能,因为Web应用程序必须通过REST服务导航来发出一系列形式的获取ID请求的链接,以处理来自浏览器的任何请求。对于有些嵌套的资源,这可能会很昂贵。 self将api返回的所有URL 存储在Web应用服务器上的持久(DB?)映射中。为它们生成一些ID,使用这些ID构建Web应用程序页面URL并获取REST服务资源的URL。也就是说,我http://my.rest.api/pet/678用一个新的密钥将URL 保留在某处3,然后将网页URL生成为http://my.web.app/pet/3。这看起来像某种HTTP Cache实现。我不知道为什么,但是对我来说似乎很奇怪。 还是所有这些都意味着RESTful API不能用作Web应用程序的后端?

2
什么时候适合在前端进行计算?
我的团队正在开发一个基于WEB的财务应用程序,并且与一位同事存在争议,该将计算保留在哪里-纯粹在后端还是在前端? 简要说明:我们将Java(ZK,Spring)用于前端,将Progress 4gl用于后端。涉及数据库中一些核心数学和数据的计算都保存在后端,因此我不在谈论它们。我说的是用户输入值X,然后将其添加到值Y(在屏幕上显示),然后结果显示在字段Z中的情况。我的意思是,纯简单的jQuery-ish操作。 因此,这里的最佳做法是: 1)使用JavaScript添加值,该值可保存到后端和后端,然后在后端“保存时”验证它们? 2)将所有业务逻辑放在同一位置-因此将值带到后端并在那里进行计算? 3)在前端进行计算;然后将数据发送到后端,在那里进行验证,仅在结果有效且相等时才再次进行计算,然后将其显示给用户? 4)还有别的吗? 注意:我们在Java中进行了一些基本的验证,但与其他所有业务逻辑一样,大多数验证仍在后端。 通过重新计算后端中的所有内容来发送的数据增加不是问题(XML大小较小;服务器和带宽可以承受用户增加的操作量)。

8
强调客户端或服务器端处理的利弊
为什么我要编写一个具有大量服务器端处理功能的Web应用程序? 对我而言,在客户端编写程序是一个巨大的优势,因为它只需占用最少的处理即可将数据发送到客户端,从而尽可能地减轻了服务器负载。 除了在服务器端编写网络应用程序并将客户端仅作为视图外,我在编写Web应用程序方面几乎看不到什么。我为什么要这么做?我看到的唯一好处是,我可以使用自己想要的任何语言(http://www.paulgraham.com/avg.html)进行书写。

1
OAuth的替代品?
在将API服务扩展到外部使用者和开发人员时,Web行业正在/已经转向使用OAuth。简单有一些优雅之处。...而且,三步OAuth流程还不错...我只是发现它是一堆糟糕的选择中最好的。 是否有其他更好,更安全的替代方案? 安全参考来自以下URL: OAuth 2.0对网络不利吗? 没有签名的OAuth 2不利于网络 我在IT安全性堆栈交换中遇到了这一点,并认为从安全性的角度来看这是很痛苦的: OAuth / OpenID / Facebook Connect ..疯狂吗? 也许SAML 2.0是替代方案? 那OpenID呢? 这个问题的目的是从编程的角度来看。 OAuth是当今存在的最佳选择吗? 是否存在替代选项,这些选项使我可以将Web应用程序扩展到从安全角度,实现角度,寿命(不需要几个月的返工)以及更好的支持消费者的Web应用程序,并支持消耗我的Web的移动应用程序应用。

5
RESTful体系结构的优缺点
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我所见过的关于REST优缺点的最常见讨论倾向于将有关SOAP的讨论框架化。我都没有经验。我目前面临的决定是我的经验不足,这使我难以评估。我开始开发一个具有多个组件的应用程序-主要是一个管理方面,允许所有者管理多个站点-一个面向公众的用户界面,该界面允许用户与主机上保存的数据进行交互。我需要评估允许将后者托管在任何地方并通过RESTful体系结构与前者进行通信的含义,或者要求两个组件都位于同一主机上。开发RESTful架构的关键含义是什么,尤其是在以下方面的功能方面: 1:安全2:性能3:接口复杂性 编辑:看这个问题的一些答案-我应该澄清。我不是在寻求与SOAP的比较-而是REST应用程序与所有组件都驻留在一台主机上的应用程序的概述。(尽管感谢您的回答!)

5
使用服务器端页面呈现可带来哪些优势?
我正在开发一个Web应用程序,目前我已经用html / js / css编写了整个网站,而在后端,我有servlet承载一些RESTFUL服务。所有表示逻辑都是通过获取json对象并通过javascript修改视图来完成的。 该应用程序本质上是一个搜索引擎,但是它将具有不同角色的用户帐户。 我一直在研究Play和Spring等框架。我是Web开发的新手,所以我想知道使用服务器端页面呈现会带来哪些优势? 是:速度吗?更轻松的开发和工作流程?访问现有图书馆?更多?上述所有的?

3
为什么在Web应用程序中通常使用REST代替类似RPC的机制?
我最近刚开始在一家公司中使用了一个非常不寻常的自定义框架用于其Web应用程序,至少与我所知道的典型Web应用程序框架相比。代替RESTful Web服务,使用RPC机制与服务器进行通信。 与服务器通信看起来像一个简单的函数调用,但是该函数在服务器而不是客户端上执行。在服务器端,有一种方法可以定义客户端可以调用的功能。完全抽象了如何将其转换为http请求的细节。 我现在只用了很短的时间,但是似乎很方便。但是我想知道我缺少这种方法的缺点。其他人似乎都在做不同的事情,这通常对我来说是一个迹象,表明我可能做的是愚蠢或出色的事情,而前者的几率更高。

5
Java Web应用程序文件夹结构
作为J2EE的初学者,我最近开始使用J2EE的核心:Servlets&Jsps从头开始开发自己的项目。 我无法评估我的项目文件夹结构是否正确。这是我的项目文件夹结构。 在问问题之前,我承认我无法回答,也无法证明有人问我为什么使用这种文件夹结构。问题:将我的jsps放在web-inf之外是一个好兆头。如果没有,为什么会这样呢?如果是,为什么? J2EE Web应用程序是否有任何标准的文件夹结构约定,我知道maven提出了一些标准,但是我们仍然可以根据我认为的要求进行自定义。 我做了一些谷歌搜索,找到了两个参考 1 2 答案不在同一页上,因此无法得出任何结论。 布局J2EE Web应用程序的文件夹结构时要考虑哪些要点,重要的是,应该将Jsps静态内容放入&为何?

4
如何在互联网上出售软件?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我想在网上出售我的软件,但不确定如何进行整个商户设置。我可以使用Commerce Server 2009,但我希望看起来很专业,因此没有一个普通的旧PayPal帐户。 要使用ASP.NET出售一些商品,接受信用卡,我需要知道什么/该做什么?

2
Google为什么在大多数应用程序中不使用GWT?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 Google创建了Google Web Toolkit(GWT),并且在构建自己的Web应用程序时不使用它。 这是否意味着GWT不适合构建动态应用程序?还是有缓存问题?还是有RPC问题?还是有其他问题阻止Google使用这项技术? EDIT:我不是在这里说Google从来没有在任何应用程序中使用过GWT,但是我想说的是,为什么他们没有广泛使用它?

2
将大型Angular 2应用与其中的多个小型应用组合
经过3个月的辩论和研究,关于在React(与Redux)和Angular 2之间进行选择的研究,我公司的前端团队最终决定采用Angular 2(因为它更适合我们的问题)。 我们正在从事企业应用程序业务,该业务目前由许多不同的前端技术组成(同时拥有整个后端RESTful),我们希望将其全部替换,并拥有一种技术来简化将来的培训和质量控制。 鉴于我们产品的性质,产品范围很广,并且其中包含模块,这些模块本身是不同的域,可以作为独立的应用程序制作,但产品本身位于单个URL中。 例; 我们将我的产品称为SuperApp。 作为UI,SuperApp具有标准的登录系统,并可以导航到子模块/子产品,因此工作流如下所示。 超级应用 验证用户 忘记密码向导 无需身份验证即可访问公共页面 认证用户 导航系统 家 子产品1 子产品2 子产品3 轮廓 ... ... 团体 ... ... 请注意,在以上表示中,Sub-product1和Sub-product2是两个完全不同的领域,具有完全不同的业务领域。 我现在可以想到的是,我可以将SuperApp创建为单个Angular 2项目,仅包含与其自身相关的组件和视图,并且SuperApp还负责加载多个子应用程序;Sub-product1,Sub-product2(同样是不同的Angular 2项目,它们都有自己的package.json,webpack配置等)通过哑组件,并充当提供顶级路由的Shell和占位符来容纳这些子应用。 有一次,Sub-product1在壳体内加载时,它会自己的路由附加到当前路由SuperApp在已经登陆。 我想要分离的原因是因为这些不同的应用程序(当前使用ExtJS构建)具有专门的团队(我们是一家拥有500多个开发人员的公司),因此,如果他们拥有自己的Angular项目,则可以管理其工具并依赖于他们的喜好,而无需依赖父级父级应用。 但是我无法在官方的Angular文档中或网上找到任何地方是否可以嵌套Angular应用程序(以这种方式共享框架代码,而完全隔离子应用程序的依赖项并仅在应用程序加载时需要),或者是否有其他替代方法可以解决此问题。 任何指导,甚至任何相关文章的链接,将不胜感激。

2
如何构建基于Websockets的实时大量Web应用程序?
在开发实时单页应用程序的过程中,我逐渐采用了websocket,以向用户提供最新数据。在这个阶段,我很伤心地看到,我被摧毁了太多我的应用程序的结构,和我没能找到一个解决这种现象。 在详细介绍之前,请先介绍一下上下文: 该webapp是实时SPA; 后端在Ruby on Rails中。实时事件由Ruby推送到Redis密钥,然后微节点服务器将其拉回并推送到Socket.Io; 前端位于AngularJS中,并直接连接到Node中的socket.io服务器。 在服务器端,在实时之前,我对资源进行了明确的基于控制器/模型的分离,每个过程都附加有处理。当我开始通过Websocket向用户推送内容时,这种经典的MVC设计就被完全粉碎,或者至少被绕开了。现在,我有一个管道,所有应用程序都将向下流动或多或少的结构化数据。而且我感到压力很大。 在前端,主要关注的是业务逻辑的重复。当用户加载页面时,我必须通过经典的AJAX调用加载模型。但是我还必须处理实时数据泛滥,而且我发现自己复制了很多客户端业务逻辑,以保持客户端模型的一致性。 经过一些研究,我找不到任何好的文章,文章,书籍或任何能给人们提供建议的关于如何可以并且应该如何设计现代Web应用程序体系结构的建议,并且要牢记一些特定的主题: 如何构造从服务器发送给用户的数据? 我应该只发送诸如“此资源已更新,您应该通过AJAX调用重新加载它”之类的事件,还是推送更新的数据并替换通过初始AJAX调用加载的先前数据? 如何为发送的数据定义一个一致且可扩展的框架?这是模型更新消息还是“ blahblahblah出现错误”消息 如何不从后端的任何地方发送有关所有内容的数据? 如何减少服务器和客户端上的业务逻辑重复?

4
允许用户定义字段是不好的做法吗?
一般来说,允许用户在Webapp数据库中创建用户创建的字段是否被认为是不好的做法? 例如,我正在为妻子制作一个房屋库存网络应用程序,而她将要为不同的项目定义自己的字段。我打算允许她创建商品类别,并在这些类别中添加“功能”。功能只是将键/值存储为字符串。这样,例如,如果她有一个名为“音频CD”的类别,则可以为“艺术家”,“曲目”等内容添加功能。但是在另一个“家具”类别中,她可以为诸如“材料”之类添加功能”(木材,塑料等)。然后,任何项目都可以属于一个(或多个)类别,将那些功能添加到该项目中。 我看到的问题是,通过这些功能进行搜索需要字符串比较,没有数据验证等。按照敏捷的方法,也许最好是让她提出新的类别和属性,而我只需要创建新表当我们去。在我的示例中,这是一个很小的用户群(我们当中有2个),并且创建的记录量很小,因此也不错。 一般来说,人们在“现实生活”中如何处理这样的事情?

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.