Asp.net 将Web应用程序分离为多个项目

Asp.net 将Web应用程序分离为多个项目,asp.net,Asp.net,我有一个越来越大的web应用程序。我想把它划分成更小、更符合逻辑的项目,但是较小的项目仍然需要访问主项目的app_代码中的一些类。有哪些好方法可以实现这一点?添加一个包含公共类的类库项目,并在每个新项目中添加对此项目的引用 因此,您将拥有以下解决方案布局 /webapp1 /default.aspx /.... /webapp2 /default.aspx /.... /lib /Utils.cs 将您的通用代码从app\u code提取到一个类库中,该类库由您的

我有一个越来越大的web应用程序。我想把它划分成更小、更符合逻辑的项目,但是较小的项目仍然需要访问主项目的app_代码中的一些类。有哪些好方法可以实现这一点?

添加一个包含公共类的类库项目,并在每个新项目中添加对此项目的引用

因此,您将拥有以下解决方案布局

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

将您的通用代码从
app\u code
提取到一个类库中,该类库由您的每个其他项目引用。

在CVS&Subversion中,您可以设置我认为被称为“别名”(或者可能是“模块”)的内容。无论如何,您可以使用它们签出源代码管理树的一部分。例如,您可以创建一个名为“视图”的别名,用于检查所有HTML、javascript和css,但不检查任何php/java/.NET。

我喜欢三层方法,即创建一个数据访问项目,一个单独的业务项目,然后使用现有的站点代码作为表示层,所有内容都在同一个解决方案文件中

正如我之前的海报所说,您可以通过在现有解决方案中创建类库项目,将应用程序代码类移动到适当的层,然后在业务项目中引用数据访问项目,在web项目中引用业务项目来实现这一点


移动它需要一点时间,一旦你移动了,就需要重新连接各个部分,所以一定要留出足够的时间进行测试和重构

以下是我在项目中所做工作的示例。
其基本思想是将所有公共文件与htdocs分开,这样客户机就无法直接访问这些文件并进行共享

目录结构:
public\u html

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

core

应用程序
和其他脚本所需的核心类/函数。换言之,框架

应用程序

存储用于生成所有项目通用的
public\u html/index
script+类请求的单独页面的文件

config

所有项目的配置,按项目分开

模板

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



然后将
public\u html/index
脚本用于所有域/子域上的所有项目,并根据请求的URL加载适当的页面…

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


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

如果您只是想找到一种组织文件的方法,那么您可以为每个子项目创建一个文件夹。通过这种方式,您将能够访问
app\u code
的内容,并在很少返工的情况下保持一定程度的分离

如果您正在寻找实现这一点的最佳方法,那么重构代码,使其具有一个公共类库,该类库基于
app\u code
文件夹中可重用的内容以及引用该库的多个独立项目

以这种方式重构代码可能会遇到问题,包括无法直接引用配置文件或用户信息。现在,您将从Web站点过渡到Web应用程序范例