打破asp.net Web应用程序

时间:2009-12-09 14:49:01

标签: c# asp.net svn

希望收集关于如何分割Web应用程序(或者可能是Web应用程序集)的一些观点(项目方面)...基本上整个事情将是一个大型站点,但问题出现是因为它有各种各样的模块,每个模块都有自己的开发/发布周期。

出现的问题是,在尝试使会话在站点之间共享并在DLL中嵌入共享资源但将它们作为一个大项目进行分割时,将它们分开会变得令人头疼。从源代码控制的角度来看,这是一场噩梦。

我能想到的可行方法是:

  1. 有一个应用程序和分支疯狂地为每个模块的工作:在基本风格的基础上这似乎是正确的,但它将是很多分支和合并分支在所有时间将是一场噩梦......
  2. 让它们成为所有单独的应用程序:缺点是它们共享主页面和许多自定义控件(在ascx中实现)。我知道如何将它们放在DLL中(使用虚拟路径提供程序),但这是一个相当混乱的解决方案。最重要的是在应用程序之间来回传递会话本质上构建一个自制会话解决方案......
  3. 我试图找出我能做但失败的另一件事是以某种方式在csproj中有一个“虚拟文件夹”,以便例如“ModuleA”文件夹实际映射到“../../。 ./ModuleA/Trunk/”。我相信如果不使用某种预构建脚本就无法做到这一点,但我希望能在Visual Studio中实际加载一些东西,所以我觉得这个想法是不行的......

    有没有人对我应该采用哪种方式提出任何建议(无论是上述之一还是我未考虑过的事情)?想要确保我不会在这里拍摄自己,因为这可能是一个长期项目,有很多未来的改进/维护......

2 个答案:

答案 0 :(得分:3)

我已经在我们的一个项目中完成了这项工作。我们在开发过程中肯定会遇到一些问题,但绝对值得将项目分离到单独的dll中以保持可维护性

正如您还建议的虚拟路径提供程序我有一些相同的链接可能会帮助您。另外,为了在两个模块之间传递数据,我们在接口中创建了属性,并为接口创建了单独的项目,所有模块都实现了该接口,因此我们可以将值从一个模块传递给onther模块。

此外,如果您正在构建模块化应用程序,那么它总是可取的,那么它应该彼此独立,但最终取决于您的要求。

Link1

UC From Database

App之间的会话共享的某些链接(我不建议分享会话,但如果你想要,你仍然可以阅读这篇文章)

ASP .Net Forum

Using State Server

StackOverflow

答案 1 :(得分:0)

如果您正在构建项目,我不确定使用asp.net 2.0是否是个好主意,因为您已经遇到了问题。 在我的项目的某个阶段,我将这些ascx控件移动到单独的“控件库项目”,它只是获取我的html字符串然后我放在网站的某个地方。 喜欢使用<%= fControl%>我填写该代码的aspx页面内的语法。 不是优雅的解决方案,但让事情变得更容易。无论如何,我们决定在php中重新实现项目,因为它更便宜并且没有出现这样的问题。