一尘不染

如何设计和架构Java / Java EE Web应用程序?

java

我是Java开发人员,在Struts,Spring和Hibernate上拥有近5年的经验。

几天后我们将有一个新项目。我们对我们有完整的要求,我们将使用Spring MVC,Spring和Hibernate进行此项目。

我被要求设计和架构整个Web应用程序。设计和创建建筑师是我迄今为止在职业生涯中从未做过的事情。而且我不知道该怎么做,从哪里开始,使用什么工具等等。我什至都不知道A,B,C的设计和建筑风格。

您可能想知道为什么我一开始就被要求这样做。事情是给了我这样做的机会,在每个阶段我都会受到监控,并且我的前辈将审查设计。

因此,欢迎您提出任何建议,想法和步骤以开始并继续前进。


阅读 221

收藏
2020-12-03

共1个答案

一尘不染

我可以根据自己的经验添加2美分(尽管它更多地是关于开发最佳实践的汇编,但您可能会发现在设计应用程序时牢记它们是有用的):

  • 没有一种千篇一律的设计
  • 尝试使应用尽可能轻巧。
  • 使用Maven / Gradle管理依赖项
    • 不要过分依赖IDE。确保您的项目在没有IDE的情况下进行构建(如果使用的是maven / gradle,它将:)尝试使用IDEA,Netbeans和Eclipse打开项目。
  • 对于上述技术,appfuse是一个很好的起点。
  • 首先设计您的数据库/实体
  • 明智而明智地使用库。不要过度使用它们。
  • 不要忘记编写JUnit / TestNG(至少对于服务层而言)
  • 在所有主流浏览器上测试应用程序(不仅仅是您最喜欢的浏览器:)
  • 确定您的Web应用程序将拥有多少总用户和多少并发用户。

    • 然后决定是否需要缓存。
    • 您是否将使用应用服务器集群。
    • 根据功能和更重要的是“您的需求”选择应用程序服务器
    • 在大多数情况下,Tomcat / Jetty绝对可以
    • 避免使用任何特定于应用程序服务器的API
    • 即使使用休眠作为JPA实现,也要使用JPA接口/注释
    • 在映射实体中的关系时要格外小心。确定哪些属性和关系将延迟加载,哪些将渴望加载
    • 设计应用程序时,请牢记应用程序安全性。Spring安全性是绝佳的选择。
    • 永远不要滥用HttpSession。不要在其中存储太多。
    • 保持实体可序列化。强制开发人员使用toString(),hashCode()和equals()
    • 从第一天起不要忘记使用版本控制
    • 不要仅仅认为spring / hibernate / spring-mvc是您的最佳选择。使用至少3到4个选项创建小的概念证明。
    • 尝试使用Jenkins等CI工具自动化集成/构建/部署
    • 检查并调整Hibernate生成的SQL(不时)
    • 不要让业务逻辑渗入视图层。讨厌jsp scriptlets?考虑速度/自由标记。JSP不是唯一的选择。
    • 通过使用Spring的PropertyPlaceholderConfigurator外部化特定于环境的配置。
    • 如果可能,请尝试与现有的用户身份验证机制(如LDAP / OpenID)集成,而不要编写自己的机制。这将使您不必重新发明轮子,而用户则无需记住另一组用户名和密码。
2020-12-03