如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持

这是我最近碰到的一个问题,有一家企业.NET程序员有80多人,产品线很多也很复杂。对于这样的产品,他们采用了模块化开发来实现复用与协作。不过,这样做需要解决一个问题,就是在一个产品中,不同模块由不同Team来开发,他们可能会引用同一个程序集的不同版本。这时候,你该怎么来解决呢?

我先亮出基于iOpenWorks插件框架(你可以访问http://www.iopenworks.com/Products/SDKDownload来下载这个插件框架)解决方法,然后描述这个问题的上下文,最后可由读者们来提提你们的解决方案。

在部门管理模块中,我们使用了一个程序集的1.0.0.1版本,分别在代码和ASP.NET页面中引用了该程序集,如下所示。传统在ASP.NET页面中使用程序集的方法是:(1)使用Import标签来声明引用的类型空间,接着使用其类型;(2)使用指定命名空间的类型来调用。需要注意的是,为了降低开发复杂度,模块使用多版本程序集的方法和以前的方法相同,从而避免模块化引起的侵入性负效应。在下图中,你可以发现支持多版本的模块化开发方法和原有方式一模一样。

在用户管理模块中,我们使用了一个程序集的1.0.0.0版本,也分别在代码和ASP.NET页面中引用了该程序集,如下所示。

这两个模块由两个团队来分别开发,由于管理和进度原因,他们使用了同一个程序集的不同版本,此时,基于OSGi.NET的实现方案结果如下。在用户管理里面,显示结果为1.0.0.0的结果,即打印出“ROOT”;在部门管理里面,显示结果为1.0.0.1的结果,即打印“ROOT-v1.0.0.1”。

iOpenWorks插件框架针对多版本程序集的支持方案的核心是实现正确的类加载,其实现核心为2点,如下所示:

(1)通过对CLR扩展,支持多版本程序集的类加载;

(2)扩展ASP.NET页面编译方法,为每一个ASP.NET页面编译设置正确的程序集版本。

这个示例的源码如下:点击下载源码

除了iOpenWorks插件框架的解决方法,针对这个问题,各位看官有其它办法来解决吗?

如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持[转载]的更多相关文章

  1. Mac系统cocos2dx + android 开发环境配置

    Mac系统cocos2dx + android 开发环境配置 /****************************************************** 这遍文章主要转载自:htt ...

  2. 如何在ASP.NET Core中实现CORS跨域

    注:下载本文的完整代码示例请访问 > How to enable CORS(Cross-origin resource sharing) in ASP.NET Core 如何在ASP.NET C ...

  3. 如何在 ASP.NET MVC 中集成 AngularJS(1)

    介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...

  4. [翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置

    [翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置 原文: USING CONSUL FOR STORING THE CONFIGURATION IN ASP.NET COR ...

  5. [转]Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理【续】【源码在这里】(在线demo,全部源码)

    本文转自:http://www.cnblogs.com/legendxian/archive/2010/01/25/1655551.html 接上篇Asp.Net大型项目实践(10)-基于MVC Ac ...

  6. 如何在ASP.Net创建各种3D图表

    我们都知道,图表在ASP.NET技术中是一种特别受欢迎而又很重要的工具.图表是表示数据的图形,一般含有X和Y两个坐标轴.我们可以用折线,柱状,块状来表示数据.通过图表控件,我们即能表示数据又能比较各种 ...

  7. 如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites]

    如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites] 一.布局页面介绍[Abo ...

  8. 如何在ASP.NET Core中实现一个基础的身份认证

    注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ...

  9. 如何在ASP.NET Core中应用Entity Framework

    注:本文提到的代码示例下载地址> How to using Entity Framework DB first in ASP.NET Core 如何在ASP.NET Core中应用Entity ...

随机推荐

  1. google code 上源码的下载方法

    SVN全称是Subversion,是Apache的一个子项目 ,具体能够到SVN中文站(http://www.subversion.org.cn/)去了解下.Google Code是Google的一个 ...

  2. PHP添加Mssql/sqlserver2000扩展,适用于Php5.2/Php5.3/Php5.4

    原文:PHP添加Mssql/sqlserver2000扩展,适用于Php5.2/Php5.3/Php5.4 本文介绍如何在Windows下配置php扩展. 本文链接 http://blog.csdn. ...

  3. JVM相关知识(1)

    1.JVM内存管理的机制 内存空间划分为:Sun JDK在实现时遵照JVM规范,将内存空间划分为堆.JVM方法栈.方法区.本地方法栈.PC寄存器. 堆: 堆用于存储对象实例及数组值,可以认为Java中 ...

  4. 【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

    原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人 ...

  5. SSM 使用方法

    System Safety Monitor(以下简称为SSM),它是一款俄罗斯出品的系统监控软件,通过监视系统特定的文件(如注册表等)及应用程序,达到保护系统安全的目的.在某些功能上比Winpatro ...

  6. Maven学习笔记(一) : 简单介绍

    近期在学习<maven实战>,写点东西记录一下.^_^ 何为Maven:      Maven主要服务于基于java平台的项目构建.依赖管理和项目信息管理. Maven是优秀的构建工具: ...

  7. Url.Content

    Url.Content了,Url是ViewPage的一个对象,它最常用的一个方法就是Content,它的功能是返回某个文件的路径.一般情况下,在使用了ASP.NET MVC后,目录结构变得有点诡异,像 ...

  8. 曲演杂坛--一条DELETE引发的思考

    原文:曲演杂坛--一条DELETE引发的思考 场景介绍: 我们有一张表,专门用来生成自增ID供业务使用,表结构如下: CREATE TABLE TB001 ( ID ,) PRIMARY KEY, D ...

  9. win7 64位下如何安装配置mysql-5.7.7-rc-winx64

    距离上次安装MySQL已经过去好久了.步骤这些,有可能会忘记.简单记录一下吧.(参考了一些网络上的博客.) 1.mysql-5.7.5-m15-winx64.zip下载 官方网站下载地址: http: ...

  10. Java 感知Mysql存储过程变量数量

    在项目中,可能会遇到sybase 移植到 mysql的情况,因为sybase 支持存储过程的可变参数,而mysql不能支持,所以,在调用mysql的时候,需要感知存储过程到底有几个参数,来合理的配置参 ...