高级别问题:如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持
2013-07-22 20:37
806 查看
这是我最近碰到的一个问题,有一家企业.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插件框架的解决方法,针对这个问题,各位看官有其它办法来解决吗?
我先亮出基于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大型应用系统的模块化开发实现多版本程序集并存支持[转载]
- 关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
- C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 客户常用问题回答
- 关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
- 转:关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 角色成员功能的改进支持公司加入到角色
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 基于数据库资源的多语言实现
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 大数据支持分表优化
- C#.NET 大型企业信息化系统集成快速开发平台 4.1 版本 - 面向数据库SQL语句的应用开发一
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题
- C#.NET 大型企业信息化系统集成快速开发平台 4.1 版本 - 面向数据库SQL语句的应用开发二
- ASP.NET 2.0如何实现数据库应用开发
- 关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
- C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 用户权限树的实现 -- 权限递归树
- 关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
- 关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 几十套业务系统集中统一授权管理实现经验分享
- C#.NET 大型企业信息化系统集成快速开发平台 4.1 版本 - 如何才能成为全国知名软件组件
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
- 关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性