杂谈 查看公司源码有感

简介: 换了一个新工作,来到新的公司当然最重要的就是要先熟悉公司的业务,我果断了通过tfs下载了公司的一个业务的源码,里面虽然有很多的封装功能我看不到具体实现,但是通过项目的结构我还是发现了一个公司项目能够成功的关键。

   换了一个新工作,来到新的公司当然最重要的就是要先熟悉公司的业务,我果断了通过tfs下载了公司的一个业务的源码,里面虽然有很多的封装功能我看不到具体实现,但是通过项目的结构我还是发现了一个公司项目能够成功的关键。

  公司名我就不说了,说了大家会觉得我有点什么似的?咱就说我通过看公司源码发现了什么,我先说说这个源码项目是做什么的?这个源码是针对公安局进行调度的程序,就是相当于公安局接线员似的,听公司的老人说这个项目的功能,我以为没有什么复杂的,但是我拿到了公司的源码,我的妈呀,吓我一跳,一共有接近六十个项目,就是这一个解决方案中有六十个项目存在。这是我干软件那么长时间,第一次看到一个解决方案竟然需要那么多的项目存在,当然这并没有吓到我,我果断的拿出了纸和笔,把每个项目按照其分层结构以及功能分类,经过我那么一分类,发现其实就是不同分层结构。一共有那么几层存在:

  1. 客户端代理层 CliengAgent
  2. 客户端UI
  3. 客户端逻辑层 Client Logic
  4. 服务端服务层Service
  5. 服务端数据存取层 DAL
  6. 服务端ORM 层 ORM
  7. 数据传输层 DTO
  8. 接口层 Interface

当然这几层是我自己最后总结发现的,经过我这么一总结,我发现其实也就是传说中的分层结构,和我以前做的项目没有什么区别。让我的心里长抒了一口气,下面就是我针对每一层的所实现的功能进行剖析。我发现这一个项目的结构和我预想的还是有一定的差别,不知道是我的火候不够呢,还是公司的架构师水平不行呢?当然我认为肯定是第一种,因为我公司是国企,应该是架构师不止一个,虽然说我所在的开发二部没有架构师存在,但是架构师应该是千锤百炼的。

我看到首先就是代理层,我先把这个项目的调用关系介绍一下。

 

首先应用程序启动的是客户端代理层,这是我从来没有想到过的开发方式,通过代理层将UI层的界面以插件的形式进行加载,UI层相关的业务逻辑会调用客户端逻辑层,客户端逻辑层会通过.Net Remoting技术高效的调用服务层的方法,服务层通过DAL层进行增删改查操作,当然客户端与服务端的数据传输是通过DTO层进行的。

其中ORM层不是我原来认为的会通过ORM工具进行,而是数据实体层,可能是我没有看到里面具体的实现代码的原因,但是我看到的是ORM层是大量的数据实体,DTO层就是要传输的数据对象。她们会通过接口层进行方法的匹配调用。

通过这个项目,我不是说让我们了解到或者说学习到什么,我只是想说难怪每个程序员都不一样,设计出来的项目结构有时候也需要我们参考。原来多学习别人的设计可以带来这么多的用途。丰富自己的见解,能让自己耳目一新的感觉。

好了,不说废话了,我来说一下我通过这个结构学习到了什么?

首先就是客户端代理层,将UI以插件的方式进行加载,我个人认为这是个很不错的方法,代理层决定要加载哪些内容,而不是我们在界面上全部设计好,可以让代理层自己组装。

其次让我意外的就是数据传输层DTO的使用,说实话我一直就了解DTo的用途,但是我从来都没有想到过在实际的项目中要用到他。DTO和数据实体有一些区别。我在实际项目中一般都是传输数据实体,把数据库表对应的数据实体进行传输,当然我见到很多人都这样做,简单快捷,但是我今天看到了DTO层的单独使用,让我明白以后在追求好的解决方案的时候,开发上的快捷有时候会带来性能上的开销。我理解中的DTo应该是包括要传输的数据,但是可能包括一个表中的一个字段和另一个表的两个字段,这样通过DTo层可以很容易的实现,但是通过数据实体我们就需要传输两个对象,会无形中增加数据的开销。在一个追求效率和性能的项目中,应该是会绝对避免的吧。

第三个让我意外的就是那么多的项目结构,那么多类的开发,不同人的分工,竟然会咋那么短的时间内完成。我不得不佩服这些项目经理,如果在我以前的公司,这绝对是完成不了的,这就看出一个公司的管理是多么的重要,我离职的最重要的原因也是公司的管理不够,本来一个好的项目需要大家的共同努力,但是我们根本就不能提出意见,甚至我提出了一个建议,竟然被批评了那么长时间,甚至恶语相加。唉,不说也罢

总之,今天写这篇博客的目的就是让我们程序员的学习不要只是停留在书本上,要多看别人的项目代码,多研究别人的部分,任何一个程序员都会有他擅长的一面。所以我们不能只是看到自己多么的优秀,而忽略了他人的建议或优势。

今天的学习是为了明天的吃饱,不是仅有自己,还有孩子老婆。加油吧 朋友们

我又回来了,回到了技术最前线,
相关文章
|
1月前
|
算法 搜索推荐 Java
太实用了!阿里内部强推的超全Java算法学习指南,已被彻底征服
算法和数据结构一直以来都是程序员的基本内功。 数据结构可以看作是算法实现的容器,通过一系列特殊结构的数据集合,能够将算法更为高效而可靠地执行起来。
|
9月前
|
Java
无意中发现阿里巴巴Java开发手册「2023最新黄山版」竟然发布了
提起阿里巴巴的《Java开发手册》大家肯定都不陌生,这份手册代表这Alibaba技术团队的集体智慧结晶和内部大佬的经验总结,经历了多次打磨不断的完善,随着市面上各种版本的流出,小编无意中发现了这份【黄山版】。
6040 1
|
9月前
|
消息中间件 NoSQL Java
硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K
春节过后紧接着就是跳槽黄金期“金三银四”,现在Java面试已经是快被谈烂的话题了。随着近些年面试要求不断的提高,面试真题、面试总结、面试笔记......各种Java面试八股文一搜一大把,根本背不完,甚至是收藏=学会。但是总有程序员在错误地学习着,一边收藏一边抱怨着程序员是个枯燥无味的行业!
|
Linux 内存技术
阿凡达模式Demo系统开发方案丨阿凡达泰山众筹系统开发
阿凡达模式Demo系统开发方案丨阿凡达泰山众筹系统开发
174 0
阿凡达(泰山众筹)开发原理丨阿凡达(泰山众筹)系统开发(详情开发)丨阿凡达及泰山众筹源码案例部署
交易是否能够结束的关键计算在SwapMath.computeSwapStep中完成,这里计算了交易是否能在目标价格范围内结束,以及消耗的tokenIn和得到的tokenOut.这里摘取此函数部分代码进行分析
|
新零售 人工智能 缓存
泰山众筹(阿凡达4.0)系统开发详细及方案丨泰山众筹(阿凡达4.0)开发源码及平台
新零售是指个人、企业以互联网为依托,通过运用大数据、人工智能等先进技术手段并运用心理学知识,对商品的生产、流通与销售过程进行升级改造,进而重塑业态结构与生态圈,并对线上服务、线下体验以及现代物流进行深度融合的零售新模式。
|
存储 编译器 区块链
泰山众筹阿凡达开发(升级版)丨泰山众筹阿凡达系统开发(案例及开发)丨泰山众筹阿凡达开发源码及部署
 The blockchain social new retail system is a decentralized platform to create a new trading model.Blockchain technology is a marketing system that can decentralize sales.Through it,an open marketing ecosystem is built for businesses to promote the sales ecological cycle.Through the blockchain mall
|
人工智能 移动开发 大数据
程序人生 - 【官方指南】教你如何快速成为CSDN博客专家!
程序人生 - 【官方指南】教你如何快速成为CSDN博客专家!
164 0
程序人生 - 【官方指南】教你如何快速成为CSDN博客专家!
|
JavaScript 关系型数据库 MySQL
关于个人全栈项目【臻美IT】博客类出现的问题以及解决方法
每做一个项目,要记得写下心得哦,别偷懒啊! 先上网址: www.maomin.club/
关于个人全栈项目【臻美IT】博客类出现的问题以及解决方法