某项目要调用现有的100多个DLL 一 开始

某个项目需要使用很多内部其他Team的DLL 和第三方的DLL (大概百来个吧......这是什么鬼啊...可怕的历史,又不能改 这些dll都上生产环境了)

如果直接用dll引用之后调用  会有很多很多的问题

  1.程序的质量会下降到 这百来个dll中质量最差的一个 (万一某些人在代码里面写什么lock(string) 啊什么的....死啦死啦的)

  2.很多dll需要特殊的配置 把这些东西都放在web.config就准备等死吧...也不知道哪些是哪些,维护很容易死人

  3.有些dll也许内部做了什么cache啊 或者开了什么socket端口啊 这种东西.. (有个组件TMD的内部缓冲了1G的数据,要死人啊,坚决关掉他)

  4.要避免不同组件之间的冲突,例如一个dll的配置影响到其他dll的配置

 

最终要实现的效果是

   配置文件隔离

  不同组的DLL之间隔离,不要让代码互相影响

 

想为他们做一下隔离,想了以下的方案

  1.服务器隔离, 把若干个dll分为一组,部署为webservice(或socket之类的)到其他服务器上 , 通过这种方式调用相互之间的影响最小

  2.进程隔离, 把若干个dll分为一组,弄一个HOST 在console或者window service 上. 通过named pipe, message之类的方式通信

  3.Application Domian隔离...这个就没啥好说了,开发比较简单

1和2的开发成本太高了 而且以后debug也是一个大问题......

3的问题是

  a.现在的第三方组件的类很多没有标记为Serializable 也不继承MarshalByRefObject, 输入输出参数也没有标记为Serializable,

  b.需要额外的编码量,相对于直接引用来说, 增加调试难度

  c.性能问题 大数据量的序列化反序列化造成性能损失(performance hurt)

 

目前看起来还是比较靠谱, 不过还需要做一下程序原型设计...

  1.看看究竟能不能走的通

  2.如何减少编码量

  3.性能问题影响大么?怎么解决

posted on 2011-01-28 15:41  听说读写  阅读(671)  评论(1编辑  收藏  举报

导航