将Web应用程序分为多个项目

时间:2020-03-06 14:36:07  来源:igfitidea点击:

我有一个越来越大的Web应用程序。我想将其分成较小的,更具逻辑性的项目,但是较小的项目仍然需要访问主项目的app_code中的某些类。有什么好的方法可以做到这一点?

解决方案

添加具有公共类的类库项目,并在每个新项目中添加对该项目的引用。

因此,我们将具有以下解决方案布局

/webapp1
   /default.aspx
   /....
/webapp2
   /default.aspx
   /....
/lib
   /Utils.cs

将通用代码从" app_code"中提取到类库中,每个其他项目都引用该类库。

在CVS&Subversion中,我们可以设置我认为称为"别名"(或者也许是"模块")的内容。无论如何,我们可以使用它们来检出源代码管理树的一部分。例如,我们可以创建一个别名" views",以检出所有HTML,javascript和css,但不检出php / java / .NET。

我喜欢3层方法:创建一个数据访问项目,一个单独的业务项目,然后将我们现有的站点代码用作表示层,所有这些都位于同一解决方案文件中。

我们可以像在我之前所说的那样,通过在现有解决方案中创建类库项目,然后将App_Code类移动到适当的层,然后引用业务项目中的数据访问项目以及Web项目中的业务项目,来完成此操作。

到处移动将花费一些时间,并且一旦移动就需要重新连接零碎的零件,因此请确保留出足够的时间进行测试和重构。

这是我在项目中正在做的事的一个示例。
基本思想是将所有通用文件与htdocs分开,这样客户端就不能直接和共享访问它们。

目录结构:
public_html
所有项目的唯一htdocs目录。
仅存储应由客户端直接访问的文件,即js,css,图像,索引脚本

核心
应用程序和其他脚本所需的核心类/功能。换句话说就是框架。

应用
存储用于生成public_html / index脚本+所有项目通用的类所请求的单独页面的文件

config
所有项目的配置,按项目分隔

模板
模板文件与所有其他文件分开

然后,将" public_html / index"脚本用于所有域/子域上的所有项目,并根据请求的URL加载正确的页面...

一种比较简单的方法是将app_code文件夹中的代码分组到其自己的程序集中。我们可能遇到的唯一问题是,如果app_code文件夹中的代码没有与页面上的元素脱钩(这通常是一个坏主意,因为它表明类的内聚性很差)。

将代码放在单独的程序集中后,可以在升级应用程序时将其部署到任意数量的服务器上。

如果我们只是在寻找一种组织文件的方法,则可以为每个子项目创建一个文件夹。这样,我们将能够获得app_code的内容,并保持很少的返工水平。

如果我们正在寻找最佳的方法,那么可以根据app_code文件夹中可重用的内容以及引用该库的多个独立项目来重构代码,以拥有一个通用的类库。

我们可能会遇到以这种方式重构代码的问题,包括无法直接引用配置文件或者用户信息。我们现在正从网站转到Web应用程序范例。

http://www.codersbarn.com/post/2008/06/ASPNET-Web-Site-versus-Web-Application-Project.aspx