如何在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 ...
随机推荐
- C_文件读写流
strcmp() 所在头文件:string.h 功能:比较俩个字符串 一般形式:strcmp(字符串1,字符串2) 说明: 当S1<S2时,返回为负数return result,result&l ...
- linux下一个Oracle11g RAC建立(八)
linux下一个Oracle11g RAC建立(八) 七.安装oracle软件 直接在图形界面里安装oracle.在node1操作 在虚拟机界面中,直接切换到oracle用户下: [grid@no ...
- Linux中加入用户、删除用户时新手可能遇到的问题
Linux中加入用户.删除用户时新手可能遇到的问题 1.创建新用户后切换到新用户:No directory, logging in with HOME=/ 加入用户 #sudo us ...
- 浅谈JavaScript性能
最近在JavaScript性能方面有所感悟,把我的经验分给大家: 说到JavaScript,就不得不说它的代码的运行速度—— 在我初学JavaScript的时候,只是觉得它是一个很强大的脚本.渐渐的, ...
- CentOs Linux 文件位置标记
vsFTP默认位置: 匿名:/var/ftp/ 用户:/home/用户名 配置文件:/etc/vsftpd/ (一般安装软件后都会在/etc/下生成一个软件相关的配置文件夹) 防火墙位置: /etc/ ...
- servlet请求转发与重定向的差别------用生活实例来形象说明两者的差别
1,请求重定向:client行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保留,地址栏的URL地址会改变. 2,请求转发:server行为,req ...
- Model和Entity Framework
Model和Entity Framework 上一节:ASP.NET MVC 5 入门教程 (4) View和ViewBag 下一节:ASP.NET MVC5 + EF6 入门教程 (6) View中 ...
- sqlserver大容量日志文件处理
原文:sqlserver大容量日志文件处理 针对SqlServer2000 .SqlServer2005.SqlServer2008.SqlServer2012.SqlServer2014库日志文件优 ...
- SQLServer中处理每天四亿三千万记录
我是如何在SQLServer中处理每天四亿三千万记录的 首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地 ...
- C#实现文档转换成PDF
网上有很多将doc.ppt.xls等类型的文档转换成pdf的方法,目前了解到的有两大类: 1.使用虚拟打印机将doc.ppt.xls等类型的文档 2.使用OFFICE COM组件 我采用了第二种方法实 ...