• 项目相互依赖管理


    在用VS中进行开发一个项目时必定会有很多“项目(Project)”,不同的Project负责不同的功能模块,这样子可以将功能分散到不同的Project中去。这样不仅可以功能分摊到各自的Project降低开发的难度,同时也可以方便以后的维护和拓展。项目管理这是一门很深的学问,我在我的一个小项目体会到了冰山一角,跟大家来分享一下。

    当项目很多的时候,不同项目之间必定会有相互调用相互依赖的关系,这种关系会随着项目数量的增加而变得错综复杂。随之项目之间的依赖关系的管理就至关重要了,举个切身的例子来说明不好的项目以来将会带来怎样的后果。我前段时间做的一个项目有四个Projects,分别为DataService、App、Func、Lib这么四个项目,四个项目之间的依赖关系如下:

     

     

    (箭头指的方向为依赖的方向,如App指向DataService表示App依赖于DataService)

    从上图可以看出我这四个项目之间的依赖关系比较复杂(换句话说是比较不好),Func和Lib之间相互依赖从而形成了一个环。这种情况在一般编程的时候并没有大碍,但是如果说你同时修改了Func和Lib中的内容,然后你又重新生成解决方案,那么你的噩梦就从此开始了!比如说Func中的A函数调用了Lib中的B函数,然后B的DLL还没生成,所以A无法生成DLL,与此同时Lib中的C函数调用了Func中的D函数,由于Func的DLL没有正常生成,Lib的DLL也无法生成。就这么形成了一个死循环。

    解决方案是,将Func中调用Lib和Lib中调用Func的类中的方法注释,生成,然后将注释取消接着生成。

    比较好的方法就是让两个项目之间不会产生一个相互依赖的环,这样子的话就可以很有效的避免此类的问题。在我的项目中,我将Lib项目中被Func引用到的类提取出来放到另一个项目中既可以解决这个问题。

     

    我认为这个问题可以在设计阶段的时候完全避免,只要将需求分析地彻底,功能模块划分的清晰,并且设计的时候注意到这个问题。

  • 相关阅读:
    创建基于MailKit和MimeKit的.NET基础邮件服务
    MailKit---获取邮件
    C# 与JAVA 的RSA 加密解密交互,互通,C#使用BouncyCastle来实现私钥加密,公钥解密的方法
    .net 开源 FTP 组件 edtFTPnet
    Consul1-window安装consul
    通信传输利器Netty(Net is DotNetty)介绍
    工作中,如何衡量一个人的 JavaScript 编码水平?
    10个有趣又能编译为JavaScript的语言,你用过哪些?
    一定要你明白Java中的volatile
    面试总被问到HTTP缓存机制及原理?看完你就彻底明白了
  • 原文地址:https://www.cnblogs.com/imjustice/p/2198112.html
Copyright © 2020-2023  润新知