平台框架

当我在十年前以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

平台框架

平台框架_从框架到平台相关推荐

  1. 车联网大数据框架_车联网大数据平台架构设计

    v1.0 可编辑可修改 1 车联网大数据平台架构设计 - 软硬件选型 1. 软件选型建议 数据传输 处理并发链接的传统方式为: 为每个链接创建一个线程并由该线程负责所有的 数据处理业务逻辑. 这种方式 ...

  2. 应梦框架9.0框架_.Net框架能力问题和解答

    应梦框架9.0框架 This section contains Aptitude Questions and Answers on .Net Framework. 本节包含有关.Net Framewo ...

  3. selenium自动化测试框架_自动化测试框架

    为了适应快速发展的行业生态系统的步伐,必须加快应用程序交付时间,而且必须不能以质量为代价.在更短的时间内达到质量的目的至关重要,因此质量保障倍受关注.为了满足对卓越质量和更快迭代的要求,越来越多的企业 ...

  4. 襄阳教育云平台实名认证_襄阳教育云平台手机版(襄阳教学资源平台)V3.7.6 中文版...

    襄阳教育云平台手机版(襄阳教学资源平台)是一款拥有丰富教学资源的客户端应用.旨在确保更好体验平台资源及应用,利用襄阳教育云平台可以更好的辅助教师授课,同步课程高效教学,并且襄阳教育云平台让学生可以随时 ...

  5. 机器学习框架_一个框架解决几乎所有机器学习问题

    一个叫 Abhishek Thakur 的数据科学家,在他的 Linkedin 发表了一篇文章 Approaching (Almost) Any Machine Learning Problem,介绍 ...

  6. java连接数据库不使用框架_实体框架数据库连接不重新连接

    我在Entity Framework中遇到了数据库连接问题 . 我在ASP.NET MVC 3 Web应用程序中使用EF 4.1.10331,但它也因EF 5而失败 . 当我的Web应用程序启动时,由 ...

  7. hadloop大数据平台论文_企业大数据平台建设过程中的问题和建议

    2 0 1 7 年 第 1 2 期 信 息 通 信 2017 (总第 180 期) INFORMATION & COMMUNICATIONS ( Sum . N o 180) 企业大数据平台建 ...

  8. ui自动化测试框架_自动化测试框架--Instrumentation

    Android测试环境的核心是一个Instrumentation框架,在这个框架下,你的测试应用程序可以精确控制应用程序.使用Instrumentation,你可以在主程序启动之前,创建模拟的系统对象 ...

  9. python 消息框架_消息框架message

    在网页应用中,我们经常需要在处理完表单或其它类型的用户输入后,显示一个通知信息给用户. 对于这个需求,Django提供了基于Cookie或者会话的消息框架messages,无论是匿名用户还是认证的用户 ...

最新文章

  1. 老码农90%的程序猿都是瞎努力,这份路线教你成为高手!
  2. 安防工程商必须知道的PoE供电真相
  3. 企业USB权限控制心得
  4. php补充 扩展,php补充安装扩展支持
  5. TimeQuest学习总结
  6. 2019.7.29学习整理python
  7. 《Python Cookbook 3rd》笔记(4.15):顺序迭代合并后的排序迭代对象
  8. 学习Python不需要程基础?
  9. java怎么这么难学6_Java难吗?
  10. 2015Mac版飞秋无法接受文件夹!!!
  11. Python 结合bat批处理文件 实现密码保管箱
  12. 人工智能对智能建筑有哪些影响,智能建筑发展存在哪些问题?
  13. 软工课设-基于JAVA的​大学年级事务督办系统项目和源码​
  14. vue中使用 minix 混入
  15. 2021最常见的网络原理面试题【好文收藏】
  16. vue 使用正则判断邮箱格式是否正确 手机号 证件啥的都可以套用
  17. 超级简单thinkphp微信小程序服务商分账。以及小程序普通支付,微信特约商户
  18. Azure-900【定义云模型】
  19. 最终幻想-核心危机中魔石融合附全能力详细教学
  20. 2019年安徽省程序设计大赛(F.邻家割草)

热门文章

  1. Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)
  2. 【笛卡尔树】【线段树】meetings 会议(P5044)
  3. [XSY3381] 踢罐子(几何)
  4. HDU5120 - Intersection
  5. 4、mybatis通过配置类Configuration 实现初始化
  6. SpringCloud Consul自定义服务注册
  7. SpringCloud Zuul(一)之介绍
  8. IntelliJ IDEA 2018.2 发布,支持 Java 11
  9. 关于分布式一致性的探究
  10. Spring零配置之@Configuration注解详解