zoukankan      html  css  js  c++  java
  • 最近碰到的一些问题

    有一个Java Web的系统,原来只是一个普通的Spring MVC项目。但是因为后期会有多个迭代,在二期的时候,设计者考虑用CQRS来组织项目。但有一个问题设计者当时没考虑到,直接新开一个库地址进行开发,认为一个前端不同页面对应两个后台很容易。然而事实证明,这会存在跨域访问的问题。处理办法就是需要在服务端的HTTP相应数据头中写入Access-Control-Allow-Origin字段。比较好且不造轮子的方案就是升级Spring版本到任意一个能够使用@CrossOrigin注解的版本。配置CORS(跨域资源共享)Filter。
    然而这样虽然可以保证两台机器直连,但是由于线上环境比较复杂,中间会有诸如验证之类的第三方服务。因此最终的解决方案是做gateway转发请求。从某种意义上来说,一个完整的项目被割裂了,而且还不完全互相独立。只能后期将原先代码重构到现有的CQRS架构上。

    再谈谈关于代码,实现一个分层应用代价是很高的。在很多场景程序员为了快速开发,都是直接一个持久层对象裸奔到最上层的。一个良好的分层架构软件,至少得要区分请求数据,一般也就是DTO的形式,内部对象是否就一种形式直接裸奔到持久层,不必过于教条。现有的系统升级是有领域对象的,然而一个比较严重的问题是程序员对业务背景的匮乏,导致系统中领域对象非常贫血且与持久层对象高度雷同,这就导致了不少的重复代码,与大量的属性赋值语句。这种代码明显是违背了软件设计中的开放封闭原则,任何一个小小的字段变化,无论是增加、删除还是改个名字都会引发霰弹式修改。现在来说,也是比较无奈,因为现在还没有人非常清楚最终系统要做成什么样。开发、维护成本高归根到底还是缺少一个DDD(领域驱动设计)中的所谓领域专家。

  • 相关阅读:
    linux系统分析工具续-SystemTap和火焰图(Flame Graph)
    如何使用strace+pstack利器分析程序性能
    MySQL数据类型-decimal详解
    服务器端数据合法性验证:签名sign和口令token原理
    linux系统下php通过php_oci8扩展连接oracle数据库 Nginx
    redis开启远程访问
    cURL函数库错误码说明之PHP curl_errno函数
    权限控制相关模块
    otool
    路由器
  • 原文地址:https://www.cnblogs.com/micrari/p/5923511.html
Copyright © 2011-2022 走看看