当前位置: 首页 > news >正文

硬笔书法网站是谁做的在centos做网站

硬笔书法网站是谁做的,在centos做网站,企业网站开发背景则么写,中国铁建统一企业门户您是否曾经想过将现有的Java EE整体应用程序重构为基于微服务的应用程序需要做什么#xff1f; 该博客解释了一个简单的购物车示例如何转换为基于微服务的应用程序#xff0c;以及围绕它的一些担忧。 整体和基于微服务的应用程序的完整代码库位于#xff1a; github.com/ar… 您是否曾经想过将现有的Java EE整体应用程序重构为基于微服务的应用程序需要做什么 该博客解释了一个简单的购物车示例如何转换为基于微服务的应用程序以及围绕它的一些担忧。 整体和基于微服务的应用程序的完整代码库位于 github.com/arun-gupta/microservices 。 继续阅读以获取更多荣耀 Java EE Monolith Java EE整体应用程序通常定义为WAR或EAR档案。 该应用程序的全部功能都打包在一个单元中。 例如在线购物车可能包含用户目录和订单功能。 所有网页都在应用程序的根目录中所有相应的Java类都在WEB-INF/classes目录中资源在WEB-INF/classes/META-INF目录中。 让我们假设您的整体设计不是设计为一个分散的大泥巴并且该应用程序是按照良好的软件体系结构构建的。 一些常见的规则是 分离关注点可能使用Model-View-Controller 使用定义明确的API的高内聚和低耦合 不要重复自己干 接口/ API和实现是分开的并且遵循Demeter定律 。 类不会直接调用其他类因为它们恰好位于同一存档中 使用域驱动设计将与域/组件相关的对象保持在一起 YAGNI或您不需要它不要构建您现在不需要的东西 这是一个琐碎的购物车整体WAR存档的外观 此整体应用程序具有 网页例如.xhtml文件用于用户目录和订单组件打包在归档的根目录中。 这些网页还打包了在不同网页之间共享的所有CSS和JavaScript资源。 这三个组件的类在WEB-INF/classes目录中的单独软件包中。 多个类使用的所有实用程序/公共类也都打包在这里。 每个组件的配置文件打包在WEB-INF/classes/META-INF目录中。 该应用程序的任何配置文件例如分别连接和填充数据存储的persistence.xml和load.sql也都打包在此处。 它具有众所周知的体系结构IDE友好易于共享简化测试易于部署等常见优点 。 但同时也具有诸如敏捷性受限持续交付的障碍技术堆栈“卡住”技术债务增加等缺点 。 即使微服务如今已成为热门但整体还是不错的。 即使那些对您不起作用的服务也可能不会立即迁移到微服务中从而受益匪浅。 其他方法例如更好的软件工程和体系结构可能会有所帮助。 微服务既不是免费的午餐也不是灵丹妙药它需要大量的投资才能成功例如服务发现服务复制服务监视容器PaaS弹性等等。 除非您的系统过于复杂而无法作为一个整体进行管理否则甚至不要考虑使用微服务。 微服务高级版 Java EE的微服务架构 好了我已经听说了所有这些内容但是想知道之前/之后的内容即整体代码库的外观以及重构后的微服务代码库的外观。 首先让我们看一下整体架构 该体系结构的关键部分是 在将用户订单和目录组件打包为单独的WAR文件的情况下应在功能上分解应用程序。 每个WAR文件应具有该组件所需的相关网页 15 类和配置文件。 Java EE用于实现每个组件但是对堆栈没有长期承诺因为不同的组件使用定义良好的API 14 相互通信。 每个档案都有自己的数据库即不共享数据存储。 这允许每个微服务发展和选择最合适的数据存储类型-关系NoSQL平面文件内存中或其他。 每个组件都将向服务注册中心注册。 这是必需的因为每个服务的多个无状态实例可能在给定的时间运行并且它们的确切端点位置仅在运行时才知道 17 。 Netflix Eureka Etcd Zookeeper是该领域的一些选项 更多详细信息 。 如果组件之间需要相互通信这很常见则可以使用预定义的API进行通信。 实现同步的REST或实现异步通信的Pub / Sub是实现此目的的常用方法。在我们的案例中Order组件发现用户和目录服务并使用REST API与它们进行对话。 该应用程序的客户端交互是在另一个应用程序在本例中为Shopping Cart UI中定义的。 该应用程序主要从服务注册表中发现服务并将其组合在一起。 它应该主要是一个哑代理在其中调用不同组件的UI页面以显示界面 18 。可以通过提供标准CSS / JavaScript资源来实现常见的外观。 该应用程序相当琐碎但至少强调了一些基本的体系结构差异。 整体与微服务 下面比较了基于单体和基于微服务的应用程序的一些统计信息 特性 整体式 微服务 档案数量 1个 5 合同JAR〜4 KB 顺序WAR〜7 KB 用户WAR〜6 KB 目录WAR〜8 KB Web UIWAR27 KB 网页 8 8见下文 配置文件 4 web.xml template.xhtml persistence.xml load.sql 每个档案3个 persistence.xml load.sql web.xml 类文件 12 26 每个档案的服务注册 服务发现类 每个档案的应用程式类别 档案总大小 24 KB 〜52 KB总计 整体应用程序的代码库位于 github.com/arun-gupta/microservices/tree/master/monolith/everest 支持微服务的应用程序的代码库位于 github.com/arun-gupta/microservices/tree/master/microservice 问题和待办事项 以下是将整体重构为基于微服务的应用程序时遇到的问题和TODO Java EE已经允许使用EAR打包对应用程序进行功能分解。 应用程序的每个组件都可以打包为WAR文件并捆绑在EAR文件中。 他们甚至可以通过这种方式共享资源。 现在这不是真正的微服务方式但这可能是使您入门的过渡步骤。 但是请注意 FlowScoped bean没有在EAR中正确激活 WFLY-4565 。 使用JSF资源库模板提取所有模板文件。 目前所有网页都在everest模块中但它们应该位于每个组件中 15 。 将整体数据库拆分为多个数据库需要为每个应用程序使用单独的persistence.xml和DDL / DML脚本。 同样需要相应地创建迁移脚本例如使用Flyway。 必须为所有组件创建一个REST接口该接口需要被另一个组件访问。 UI仍在单个Web应用程序中。 而是应将其包含在已分解的WAR 15 中然后再在哑代理中进行组合。 闻起来像portlet吗 在PaaS中部署多个WAR文件 12 每个微服务都应易于部署在容器中 6 这是单片应用程序的类的完整列表 ./target/classes/org/javaee7/wildfly/samples/everest/cart/Cart.class ./target/classes/org/javaee7/wildfly/samples/everest/cart/CartItem.class ./target/classes/org/javaee7/wildfly/samples/everest/catalog/CatalogItem.class ./target/classes/org/javaee7/wildfly/samples/everest/catalog/CatalogItemBean.class ./target/classes/org/javaee7/wildfly/samples/everest/catalog/CatalogItemType.class ./target/classes/org/javaee7/wildfly/samples/everest/checkout/Order.class ./target/classes/org/javaee7/wildfly/samples/everest/checkout/OrderBean.class ./target/classes/org/javaee7/wildfly/samples/everest/checkout/OrderItem.class ./target/classes/org/javaee7/wildfly/samples/everest/checkout/Shipping.class ./target/classes/org/javaee7/wildfly/samples/everest/uzer/Uzer.class ./target/classes/org/javaee7/wildfly/samples/everest/uzer/UzerBean.class ./target/classes/org/javaee7/wildfly/samples/everest/uzer/UzerItem.class 这是基于微服务的应用程序的类的完整列表 ./catalog/target/classes/org/javaee7/wildfly/samples/everest/catalog/ApplicationConfig.class ./catalog/target/classes/org/javaee7/wildfly/samples/everest/catalog/CatalogItem.class ./catalog/target/classes/org/javaee7/wildfly/samples/everest/catalog/CatalogItemREST.class ./catalog/target/classes/org/javaee7/wildfly/samples/everest/catalog/CatalogItemType.class ./catalog/target/classes/org/javaee7/wildfly/samples/everest/catalog/ServiceRegistration.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/cart/Cart.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/cart/CartItem.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/catalog/CatalogBean.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/catalog/CatalogItem.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/checkout/Order.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/checkout/OrderBean.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/checkout/OrderItem.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/checkout/Shipping.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/ServiceDiscovery.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/ServiceDiscoveryStatic.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/ServiceDiscoveryURI.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/ServiceDiscoveryZooKeeper.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/uzer/UzerBean.class ./everest/target/classes/org/javaee7/wildfly/samples/everest/uzer/UzerItem.class ./order/target/classes/org/javaee7/wildfly/samples/everest/order/ApplicationConfig.class ./order/target/classes/org/javaee7/wildfly/samples/everest/order/Order.class ./order/target/classes/org/javaee7/wildfly/samples/everest/order/OrderItem.class ./order/target/classes/org/javaee7/wildfly/samples/everest/order/OrderREST.class ./user/target/classes/org/javaee7/wildfly/samples/everest/uzer/ApplicationConfig.class ./user/target/classes/org/javaee7/wildfly/samples/everest/uzer/UserREST.class ./user/target/classes/org/javaee7/wildfly/samples/everest/uzer/Uzer.class 同样完整的代码库位于github.com/arun-gupta/microservices 。 未来话题 本系列中的一些未来主题将是 微服务是否需要容器 如何使用容器部署多个微服务 如何轻松监控所有这些服务 A / B测试 使用微服务和容器进行连续部署 您还想看些什么 请享用 翻译自: https://www.javacodegeeks.com/2015/06/monolithic-to-microservices-refactoring-for-java-ee-applications.html
http://www.zqtcl.cn/news/562852/

相关文章:

  • 橙色网站后台模板WordPress的SEO插件安装失败
  • 做网站好还是做微信小程序好外包加工网外放加工活
  • 中国建设银行网站查征信电子商务网站建设及推广
  • 扫描网站漏洞的软件php网站后台验证码不显示
  • 诸城哪里有做网站的做网站的尺寸
  • 网站开发参考书目做网站推广赚钱吗
  • 九度网站建设网站做ppt模板
  • 浙江做公司网站多少钱评论回复网站怎么做
  • 江门网络建站模板虚拟主机价格一般多少钱
  • 网站建设公司云南深圳手机商城网站设计费用
  • 汇泽网站建设网页版快手
  • 手机销售培训网站wordpress案例插件
  • 滨江道做网站公司wordpress 花瓣网
  • 如何建网站快捷方式软件开发做平台
  • 常见的静态网页深圳罗湖企业网站优化
  • 做网站一天赚多少钱外贸网站建设排名
  • 一个大型网站建设得多少钱百度成都总部
  • 网站制作公司汉狮网络手机版网站优化
  • 铜川做网站logo 图标 设计
  • 如何做网站的注册页面南京宣传片公司有哪些
  • 中国建设机械教育协会网站网站建设中html中关于图片显示的标签有哪些
  • 网站过期后dede减肥网站源码
  • 营销型 手机网站网站建设方案后期服务
  • 怎么做一个个人网站建网站的八个步骤
  • 淘宝导购网站模版上海网站推广软件
  • 做影视网站引流湖北响应式网站建设费用
  • 网站统计cnzz网站空间有哪些
  • 泉州微信网站开发公司wordpress头像解决
  • 湛江网站建设皆选小罗24专业网站建设 福田
  • 厦门哪些做鲜花的网站门户网站开发设计报告