某项目要调用现有的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.性能问题影响大么?怎么解决

转载于:https://www.cnblogs.com/PurpleTide/archive/2011/01/28/1947073.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hibernate3 jar包的作用[转]

from:http://nopainnogain.iteye.com/blog/761630 (1)hibernate3.jar: Hibernate的核心库,没有什么可说的,必须使用的jar包 (2)cglib-asm.jar: CGLIB库,Hibernate用它来实现PO字节码的动态生成&…

Linux下mysql整库备份

基本语法:mysqldump -u[mysql账户名] -p [--default-character-setutf8] [--max_allowed_packet50M]数据库名 >文件保存路径.示例: mysqldump -uroot -p --default-character-setutf8 --max_allowed_packet50M hyman > /web/hyman.sql转载于:htt…

svr公式推导_支持向量回归(SVR)的详细介绍以及推导算法

1 SVR背景2 SVR原理3 SVR数学模型SVR的背景SVR做为SVM的分支从而被提出,一张图介绍SVR与SVM的关系这里两虚线之间的几何间隔rd ∣ ∣ W ∣ ∣ \frac{d}{||W||}∣∣W∣∣d​,这里的d就为两虚线之间的函数间隔。(一图读懂函数间隔与几何间隔)这里的r就是根据两平行线之…

计算整数中各位数字之和

#include<stdio.h> int digit_sum(int num) {int temp num % 10;if (num > 9)return temp digit_sum(num / 10);elsereturn temp; } int main() {int num 0;scanf("%d", &num);int sumdigit_sum(num);printf("%d\n", sum);return 0; }

Office文档模型深入---Outlook文档模型与开发实战(1)

简介 本篇为Office文档模型深入系列第4篇&#xff0c;原计划是Excel的图表&#xff0c;之后是Word&#xff0c;因为项目转手需要总结Outlook&#xff0c;先改变下顺序&#xff0c;后面的内容会慢慢补上。本篇为Outlook子系列的第一篇&#xff0c;主要介绍下outlook命名空间下…

VS2003,VS2005,VS2008 低版本打开高版本的解决方案和工程文件

一、用记事本打开sln文件&#xff0c;将&#xff1a; Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 改成&#xff1a; Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 二、用记事本打开csproj文件&a…

写一个js向左滑动删除 交互特效的插件——Html5 touchmove

需求描述 需要实现类似QQ中对联系人的操作&#xff1a;向左滑动&#xff0c;滑出删除按钮。滑动超过一半时松开则自动滑到底&#xff0c;不到一半时松开则返回原处。 纯js实现 使用了h5的touchmove等事件&#xff0c;以及用js动态改变css3的translate属性来达到动画效果&#x…

指数高通滤波器代码_高通滤波法、微分算子法、神经网络方法实现图像边缘检测...

边缘检测(Edge detection)是图像处理和计算机视觉中的基本问题&#xff0c;边缘检测的目的是标识数字图像中亮度变化明显的点。本文使用多种不同的方法&#xff0c;实现对 Lena 肖像的边缘检测&#xff0c;研究分析各算法的效果和优缺点。所涉及的方法如下&#xff1a;高通滤波…

Extjs prompt 显示密码框

Extjs 的 prompt 默认是普通的输入框&#xff0c;我们可以通过获取里面的元素&#xff0c;自己改一下。。呵呵 Ext.Msg.prompt("密码","请输入密码:",function(btn,text){if(btn "ok"){Ext.Msg.alert("ok...","验证密码。。。&q…

Android----Fragments详解

Fragments 概念是在Android3.0版本就已经有了&#xff0c;3.0版本是Tab(平板)专用&#xff0c;后来在4.0以上的版本继续沿 用Fragments&#xff0c;改善了Activity的灵活性。 在没有Fragments之前&#xff0c;一个屏幕就只能放一个Activity&#xff0c;有了Fragments之后&#…

matlab中find()函数用法

一.基本用法 返回矩阵或向量中非零元素的索引 注意&#xff1a;matlab中下标从1开始 举例&#xff1a; &#xff08;1&#xff09;向量 返回非零元素下标 find&#xff08;vector&#xff09; x[1 2 3 0 0 6 7 8 9]; find(x)ans 1 2 3 6 7 8 9返回前…

Hadoop Mapreduce分区、分组、二次排序过程详解

2019独角兽企业重金招聘Python工程师标准>>> 1、MapReduce中数据流动 &#xff08;1&#xff09;最简单的过程&#xff1a; map - reduce &#xff08;2&#xff09;定制了partitioner以将map的结果送往指定reducer的过程&#xff1a; map - partition - redu…

python set判断一个键是否存在_python redis 有序集合sorted set检查某个键是否存在

redis有序集合(Sorted Set)命令ZADDZREMZCARDZCOUNTZSCOREZINCRBYZRANGEZREVRANGEZRANGEBYSCOREZREVRANGEBYSCOREZRANKZREVRANKZREMRANGEBYRANKZREMRANGEBYSCOREZINTERSTOREZUNIONSTORE从上面命令中看到&#xff0c; redis的有序集合(Sorted Set)没有命令判断键是否存在于有序集…

软件过程改进之百科名片

软件过程改进/过程改进&#xff08;Software Process improvement&#xff0c;SPI&#xff09;帮助软件企业对其软件(制作)过程的改变(进)进行计划、(措施)制定以及实施。他的实施对象就是软件企业的软件过程&#xff0c;也就是软件产品的生产过程&#xff0c;当然也包括软件维…

python实现计算字符串或列表中每个字符出现的次数,并打印出现次数最多的字符

chars[a,c,x,d,p,a,m,q,s,t,p,a,t,c,c] char1sabcdcdefasbcd dict{} #创建一个空字典 for x in chars: #for循环遍历列表或字符串&#xff0c;如果字符在字典中则value加1&#xff0c;如果不在则创建&#xff08;key,value),key字符&#xff0c;value1if dict.get(x)None:dict…

基于 OpenFire 的TVBox管理平台开发笔记

目录 一、開發環境設置.... 3 1.1 JDK 安裝.... 3 1.2 MySql Server安裝.... 4 1.3 OpenFire安裝.... 6 1.4 Openfire Admin 功能.... 14 1.4.1 用戶摘要&#xff1a;.... 16 1.4.2 組摘要&#xff1a;.... 16 1.4.3 用戶組管理&#xff1a;.... 17 1.4.4 發送管理消息&#xf…

RedMine项目管理系统邮件推送设置(Windows环境)

RedMine项目管理系统有邮箱推送功能&#xff0c;当Bug&#xff0c;安全漏洞等内容被修改、解决、评论的时候&#xff0c;系统会通过邮件 及时的通知你的团队和客户。邮件通知的环节、形式、时间、接受人均可定制&#xff0c;功能十分实用。 下面是针对windows系统环境下安装的R…

python的 数组 储存_Python的数组储存

import timemember["小甲鱼","小布丁","黑夜","迷途","伊静"]print(member,"\n")member[2,1,3,5,4]print(member,"\n")member.sort()empty[] # 创建空列表print(member) #向列表添加元素.member.append…

jquery in action 学习笔记

1 面对对象的编程 1.引用传递 在javascript中,string int Boolean 不是按引用进行传递的.而对象和数组是按引用传递的. 示例: // Create an array of itemsvar items new Array("one", "two", "three");// Create a reference to the array of …

matlab实现冲激函数(分数处冲激也行)

clear all; close all; b8; a3; syms X t; tvb/a-3:0.001:b/a3; %定义时间向量 X dirac(a*t-b); Xtsubs(X,t,tv);%调用matlab内置函数 subs(s,old,new),将X中的t替换为tv Xt(find(Xtinf))1; %冲激处幅值置为1 figure(1); plot(tv,Xt);只需更改参数a与b就可以实现任意位置的冲激…