平台框架_从框架到平台

平台框架

当我在十年前以Java开发人员的身份开始职业生涯时,该行业正经历着革命性的变化。 2003年发布的Spring框架Swift流行,并成为庞大的J2EE平台的严重挑战者。 经过过渡时间后,我很快发现自己赞成使用Spring框架而不是J2EE平台,即使是早期版本的Spring,声明bean也非常乏味。

接下来发生的是对J2EE标准的改进,该标准后来被重命名为JEE。 尽管如此,在这个时代占主导地位的仍然是在Sun提出的平台上使用开源框架。 这种做法使开发人员可以完全控制他们使用的技术,但会扩大部署规模。 慢慢地,当云应用程序成为现代应用程序的规范时,我观察到了将基础架构服务再次从框架迁移到平台的趋势。 但是,这次,它不是受Cloud应用程序的驱动。

框架与平台

我从未听说过或不得不在学校使用任何框架。 但是,在加入该行业后,如果没有任何框架的帮助,就很难构建可扩展和可配置的软件。

据我了解,任何应用程序都包含实现业务逻辑的代码以及其他一些用作帮助程序,实用程序或设置基础结构的代码。 在许多项目中重复使用的与业务逻辑无关的代码可以被概括并提取出来以供重用。 此提取过程的输出是框架。

简而言之,框架是与业务逻辑无关但有助于解决应用程序中常见问题并适合重用的任何代码。

如果遵循此定义,则MVC,依赖注入,缓存,JDBC模板,ORM都是框架。

平台类似于框架,因为它也有助于解决应用程序中的常见问题,但是与框架相反,该服务是在应用程序外部提供的。 因此,公共服务端点可以同时为多个应用程序提供服务。 JEE应用程序服务器或Amazon Web Services提供的服务是平台的示例。

比较这两种方法,平台比框架更具扩展性,更易于使用,但控制量也较少。 由于这些优势,在构建Cloud Application时,平台似乎是更好的方法。

我们什么时候应该在框架上使用平台

迈向平台并不能保证开发人员会摆脱框架。 相反,平台仅是构建应用程序时对框架的补充。 但是,在某些特殊情况下,我们可以选择使用平台或框架来实现最终目标。 我个人认为,在满足以下条件时,平台比框架更好:

  • 框架使用和维护都很繁琐
  • 该服务具有一些在实例之间共享的公共信息。
  • 可以利用其他硬件来提高性能。

在办公室中,我们仍在应用程序中使用Spring框架,Play框架或RoR,并且这不会很快改变。 但是,为了进入云时代,我们将一些现有产品从内部托管迁移到了Amazon EC2服务器。 为了充分利用Amazon基础设施并提高软件质量,我们对当前的软件架构进行了一些重大重构。

以下是一些我们要将产品集成到的平台:

Amazon Simple Storage Service(Amazon S3)和Amazon Cloud Front

我们发现,Amazon Cloud Front对于提高应用程序的平均响应时间非常有用。 以前,我们在英国和美国的内部服务器场中托管大多数应用程序。 这导致其他大洲客户的响应时间显着增加。 幸运的是,亚马逊拥有更强大的基础架构,其服务器场遍布全球。 无论客户身在何处,这都有助于确保包裹的交货时间恒定。

当前,由于手动为应用程序设置新实例,我们认为Amazon Cloud Front的最佳用途是使用静态内容,该内容与Amazon S3中的应用程序分开托管。 这种做法使CDN提供了更一致的交付时间,同时在浏览器中为静态内容提供了单独的连接计数,从而为我们带来了性能上的双重好处。

亚马逊弹性缓存

在集群环境中缓存从未如此轻松。 “群集”一词意味着您的对象将不会被存储或从系统内存中检索。 相反,它是通过网络发送和检索的。 过去,此任务非常棘手,因为开发人员需要将记录从一个节点同步到另一个节点。 不幸的是,并非所有的缓存框架都自动支持此功能。 最佳的分布式缓存框架是Terracotta 。

现在,我们求助于Amazon Elastic Cache,因为它便宜,可靠并且为我们节省了设置和维护分布式缓存的巨大精力。 值得强调的是,分布式缓存决不是要取代本地缓存。 性能上的差异表明,仅当用户需要访问实时临时数据时,才应在本地缓存上使用分布式缓存。

数据分析的事件记录

过去,我们使用Google Analytics(分析)来分析用户行为,但后来决定建立内部数据仓库。 动机之一是能够同时从浏览器和服务器跟踪事件的能力。 事件跟踪系统使用MongoDB作为数据库,因为它允许我们快速存储大量事件。

为了简化事件的创建和检索,我们选择JSON作为事件的格式。 由于浏览器无法防止跨域攻击,因此我们不能简单地将此事件直接发送到事件跟踪服务器。 因此,Google Analytic将事件以对静态资源的GET请求的形式发送到服务器。 由于我们完全控制应用程序的构建方式,因此我们选择让事件先发送回应用程序服务器,然后再路由到事件跟踪服务器。 这种方法更加方便和强大。

知识门户

过去,应用程序从数据库或内部文件存储库访问数据。 但是,为了能够更好地扩展,我们收集了所有知识以构建知识门户。 我们还构建了查询语言来从该门户检索知识。 这种方法为知识检索过程增加了一层,但对我们来说幸运的是,我们的系统不需要提供实时数据。 因此,我们可以利用缓存来提高性能。

结论

以上是我们在迁移到云时转换软件架构的一些经验。 请与我们分享您的经验和意见。

翻译自: https://www.javacodegeeks.com/2014/07/from-framework-to-platform.html

平台框架

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

敲代码时如何快速移动光标_如何用 Linux 技巧大大提高工作效率?

前言Linux中的一些小技巧可以大大提高你的工作效率,本文就细数那些提高效率或者简单却有效的Linux技巧。命令编辑及光标移动这里有很多快捷键可以帮我们修正自己的命令。接下来使用光标二字代替光标的位置。删除从开头到光标处的命令文本ctrl u,例如&am…

Java 13:文本块

Java 13已交付了期待已久的多行字符串或Text Blocks 。 您不再需要连接跨越多行的字符串或转义特殊字符,这确实提高了代码的可读性。 文本块是一种预览语言功能 ,这意味着必须使用--enable-preview标志在Java编译器和运行时中明确启用它们。 这是一个文…

java 异常练习题_java入门异常处理练习题问题

tppe大概方式:1、判断用户输入的类型是否正确,不正确捕获异常,把他包装成我自己定义的异常2、判断用户输入的数是多少2.1、如果是1,则打印“输入图书名称”,用户输入,定义一个Book类型的数组,然…

windows副本不是正版怎么办_盗版系统总是崩溃?别着急,让我来告诉你正版系统怎么下载...

电脑系统崩溃了怎么办?相信很多小伙伴都会选择重装系统,奈何自己又不会,只能搬到修电脑的地方,最后发现安装的还是盗版系统,不能登录微软账号不说,还会被捆绑安装一堆流氓软件,那么,…

java线程有几种状态_java线程的几种状态

java线程的几种状态导语:线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。下面是Java线程的介绍,欢迎参考!新建:new一个Thread对象或者其子类对象就是创建一个线程&#xff0…

sudo spctl --master-disable_量大从优批发--阳离子聚丙烯酰胺--用于生活污水、

量大从优批发--阳离子聚丙烯酰胺--用于生活污水、wkkk量大从优批发--阳离子聚丙烯酰胺--用于生活污水、怎么来辨别聚丙烯酰胺到底是什么型号的呢?下面来介绍型号辨别的消防法。聚丙烯酰胺我们都知道聚丙烯酰基是昂贵的阳离子,其次是非离子聚丙烯酰胺&…

java 框架 例子_如何设计Java框架? –一个简单的例子

通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习。你可能对框架如何工作感到好奇? 这里将通过一个简单的框架示例来说明框架的思想。框架目标首先,为什么我们需要一个除普通库…

jboss eap_HawtIO在JBoss EAP上(第二部分)

jboss eap我刚刚发布了一篇关于在JBoss Wildfly 8.1上运行HawtIO的条目 。 从那篇文章中,您将了解HawtIO的出色表现 ,以及它必须具备的所有 出色 插件,才能从单个仪表板管理基于JVM的技术……好吧…… hawt ……。 但是,出于上一…

alter id order by_声卡id查找表

强烈建议收藏这个表格真的很方便,强烈建议大家收藏,尤其是那些喜欢折腾的人!因为有时候会特别需要它声卡ID表芯片型号仿冒ID创作的CA01320x100918仿冒ID值 0,1,2,3,4,5,6,9,10,11,12Cirrus Logic公司CS42100x100101仿冒ID值 13Cirrus Logic公…

java bean id_在 JSP中使用JavaBean的标签是 ,其中 id的用途是 __________________学小易找答案...

【多选题】Flash渐变动画分为()。P22【单选题】关于 JavaBean,下列的叙述哪一项是不正确的?( )【填空题】用户在实际 Web应用开发中,编写Bean除了要使用 ___________________ 引入 Java的标准类。【单选题】Its very foolish _____ it.【填空题】在 Web服务器端使用JavaBean,将…

JDK 14:CMS GC是OBE

JDK 14 Early Access Build#23 ( 2019/11/13 ) 现已上市 。 此版本最值得注意的更改之一是删除了并发标记扫描垃圾收集器 。 JEP 291 [“弃用并发标记扫描(CMS)垃圾收集器”]早在2017年就使用JDK 9和JEP 363 [“删除并…

python 转成摩尔斯电码_一篇文章教会你摩尔斯码

正规的摩尔斯码对照表是这样的其实记住主要的26个字母就够日常用了,而记26个字母有一张更简单的图: 把点和横线以字母的形态呈示出来,基本上看一遍就能记住大半了。不过要注意每个字母下方的一行小字,那是正确的顺序,别…

java addfirst_java – ArrayDeque类的addFirst方法

以下行的功能基本上是(head-1)MODULO(elements.length),因此当head 0时,从head减去1将导致最大可能值而不是-1.head (head - 1) & (elements.length - 1)10是元素的有效长度,根据实现,elements.length总是2的幂.如果不是这种情况,则操作无效.了解其工作原理需要了解位操作…

kali使用笔记本自带无线网卡_无线网卡?那是什么?

用过无线网卡的童鞋都知道无线网卡的方便,而没有用过无线网卡的往往觉得它很陌生,今天就来跟大家讲讲无线网卡的三大用途。NO.1摆脱网线束缚,台式电脑也能连WiFi如今,WiFi上网越来越方便,如果房间里没有预装网口&#…

无效的Java

也许我可以被机器人代替进行代码审查。 有一些反馈我发现自己一遍又一遍。 这是我最不喜欢的一些: 通用代码结构 放弃其他 if return的else就是多余的,并造成不必要的缩进。 if (foo) { return bar; } else { return baz; } // should be replaced b…

java 指定打印机打印_java 指定打印机 进行打印

代码如下:package com.printer;import java.io.*;import java.util.Locale;import javax.print.*;import javax.print.attribute.*;import javax.print.attribute.standard.*;public class PrintTest {public static void main(String args[]) {FileInputStream psS…

everything安装版和便携版有什么区别_国行版爱他美卓萃和普通版有什么区别,一定要选卓萃吗?...

粉丝私信:想给孩子喝国行版爱他美,有普通版和卓萃版,这两个版本有什么区别,卓萃的价格这么高,就一定好吗?奶粉速递:爱他美奶粉在国内算是家喻户晓的品牌了,吃的宝宝也比较多&#xf…

尚学堂java培训_IT培训教育平台课程分享

知乎朋友大家好,有以下【好课推荐】,并且愿意推荐给大家一起学习。更有海量学习资源与你分享,每天更新!让你快速学习成长,无后顾之忧。1~4阶段SketchUp全能室内设计师养成班(完整版)2020版[千锋] jQuery入门教程全集(看…

java usbkey数字证书_Java创建数字证书

BouncyCastle下载:链接:http://pan.baidu.com/s/1vrcL4 密码:6i27package com.what21.security05;import java.io.InputStream;import java.io.OutputStream;import java.math.BigInteger;import java.security.Key;import java.security.…

modbus调试时间超时_Java调试器和超时

modbus调试时间超时在代码中存在超时的情况下如何使用调试器。 我的调试器王国! 因此,您一直忙于编写一个项目,一切顺利,直到出现错误为止。 您可以进入开发人员的工具箱,然后拔出调试器。 很棒–您可以设置断点&…