如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持[转载]
如何在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大型应用系统的模块化开发实现多版本程序集并存支持[转载]的更多相关文章
- Mac系统cocos2dx + android 开发环境配置
Mac系统cocos2dx + android 开发环境配置 /****************************************************** 这遍文章主要转载自:htt ...
- 如何在ASP.NET Core中实现CORS跨域
注:下载本文的完整代码示例请访问 > How to enable CORS(Cross-origin resource sharing) in ASP.NET Core 如何在ASP.NET C ...
- 如何在 ASP.NET MVC 中集成 AngularJS(1)
介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...
- [翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置
[翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置 原文: USING CONSUL FOR STORING THE CONFIGURATION IN ASP.NET COR ...
- [转]Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理【续】【源码在这里】(在线demo,全部源码)
本文转自:http://www.cnblogs.com/legendxian/archive/2010/01/25/1655551.html 接上篇Asp.Net大型项目实践(10)-基于MVC Ac ...
- 如何在ASP.Net创建各种3D图表
我们都知道,图表在ASP.NET技术中是一种特别受欢迎而又很重要的工具.图表是表示数据的图形,一般含有X和Y两个坐标轴.我们可以用折线,柱状,块状来表示数据.通过图表控件,我们即能表示数据又能比较各种 ...
- 如何在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 ...
- 如何在ASP.NET Core中实现一个基础的身份认证
注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ...
- 如何在ASP.NET Core中应用Entity Framework
注:本文提到的代码示例下载地址> How to using Entity Framework DB first in ASP.NET Core 如何在ASP.NET Core中应用Entity ...
随机推荐
- Linux中iptables设置详细
无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵... 一下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务 ...
- 多种语言socket编程集锦—win32
原文 http://www.blogjava.net/huyi2006/articles/263831.html 借此地方整理以下socket编程的多种语言的实现,socket可以跨平台的通信,因此多 ...
- java抽象类和接口的区别(转载)
1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用. 如果向一个抽象类里加入 ...
- Serialization performance analysis
Serialization performance analysis http://www.skyscanner.net/blogs/serialization-performance-analysi ...
- HTTP2协议之HPACK--之头部压缩规范介绍
接下来打算把HTTP2协议的头部压缩算法给翻译下,敬请等候. HPACK - Header Compression for HTTP/2 HPACK:HTTP/2头部压缩 概要说明 这个规范定义了HP ...
- Ubuntu终端字体颜色方案
默认: 蓝色代表该文件夹: 绿色代表可运行文件. 红色表示压缩文件. 浅蓝色表示链接文件: 灰色表示其它文件: 红色闪烁表示链接的文件有问题了 黄色表示设备文件. 非常不爽怎么办,改! # Attri ...
- jQuery EasyUI API - Layout - Layout[原创汉化官方API]
最近在学习jQuery EasyUI,发现中文的文档好少,部分文档不错但它是鸟语的,为了大家也为了自己学习吧,汉化做一下笔记. 有没有说清楚的,或者翻译不正确的地方还请大家谅解指出.. 由于工作时间原 ...
- Castle扩展Ibatis.Net
使用Castle扩展Ibatis.Net,面向接口编程-更优雅的代码 使用Ibatis.Net做项目半年了,甚是喜欢,感觉确实是个简单.轻巧的O/R Mapping框架,特别是将Sql配置在Xml文件 ...
- ps入门教程:选择工具、移动工具、索套工具的使用
本节课程主要内容:1.学习矩形选择工具.椭圆选择工具.移动工具.多边形套索工具.套索工具.磁性套索工具和魔术 棒选择工具.2.用套索和磁性套索,实现对人物照片的抠图.----------------- ...
- js实现多张图片同时放大缩小相对位置不变
项目要求需要用js实现同时放大多张图片相对位置不变,就和同事去一家国外网站的js文件中跟踪扒取了这一算法, 庆幸的是算法抠出来了并整理了出来,但遗憾的只知计算过程却弄不明白算法原理: 大体上是核心运算 ...