将 Web 应用程序分成多个项目
Posted
技术标签:
【中文标题】将 Web 应用程序分成多个项目【英文标题】:Separating Web Applications into multiple projects 【发布时间】:2010-09-12 09:15:51 【问题描述】:我有一个变得相当大的网络应用程序。我想把它分成更小的更合乎逻辑的项目,但更小的项目仍然需要访问主项目的 app_code 中的一些类。有什么好的方法可以做到这一点?
【问题讨论】:
【参考方案1】:添加一个包含公共类的类库项目,并将对该项目的引用添加到每个新项目中。
因此您将拥有以下解决方案布局
/webapp1
/default.aspx
/....
/webapp2
/default.aspx
/....
/lib
/Utils.cs
【讨论】:
【参考方案2】:如果您只是在寻找一种组织文件的方法,那么您可以为每个子项目创建一个文件夹。这样您就可以访问app_code
的内容并保持一定程度的分离,几乎不需要返工。
如果您正在寻找执行此操作的最佳方法,那么重构您的代码以拥有一个基于 app_code
文件夹中可重用内容的通用类库以及引用该库的多个独立项目是可行的方法.
您可能会遇到以这种方式重构代码的问题,包括无法直接引用配置文件或用户信息。您现在正在从 Web 站点转向 Web 应用程序范式。
http://www.codersbarn.com/post/2008/06/ASPNET-Web-Site-versus-Web-Application-Project.aspx
【讨论】:
【参考方案3】:将您的公共代码从app_code
提取到您的每个其他项目都引用的类库中。
【讨论】:
【参考方案4】:我喜欢创建数据访问项目的 3 层方法,一个单独的业务项目,然后使用您现有的站点代码作为表示层,所有这些都在同一个解决方案文件中。
您这样做,就像我之前说的海报一样,通过在现有解决方案中创建类库项目并将您的 App_Code 类移动到适当的层,然后在业务项目中引用数据访问项目,并在 Web 中引用业务项目项目。
移动它并在移动后重新连接各个部分需要一些时间,因此请确保留出足够的时间进行测试和重构。
【讨论】:
【参考方案5】:在 CVS 和 Subversion 中,您可以设置我认为被称为“别名”(或者可能是“模块”)的内容。无论如何,您可以使用它们来检出源代码控制树的一部分。例如,您可以创建一个名为“views”的别名,用于检查所有 html、javascript 和 css,但不检查您的 php/java/.NET。
【讨论】:
【参考方案6】:这是我在项目中所做的一个示例。 基本思想是将所有通用文件与 htdocs 分开,以便客户端无法直接访问和共享它们。
目录结构:public_html
所有项目的唯一 htdocs 目录。
只存储应该被客户端直接访问的文件,即js、css、图像、索引脚本
core
application
和其他脚本所需的核心类/函数。换句话说,框架。
application
存储用于生成 public_html/index
脚本 + 所有项目通用的类请求的单独页面的文件
config
所有项目的配置,按项目分隔
templates
模板文件与所有其他文件分开
然后将public_html/index
脚本用于所有域/子域上的所有项目,并根据请求的 URL 加载适当的页面...
【讨论】:
【参考方案7】:一种简单的方法是将 app_code 文件夹中的代码分组到它自己的程序集中。您可能会遇到的唯一问题是,如果您的 app_code 文件夹中的代码没有与您页面上的元素解耦(这通常总是一个坏主意,因为它表明您的类中的内聚力很差)。
将代码放在单独的程序集中后,您可以在升级应用程序时将其部署到任意数量的服务器。
【讨论】:
以上是关于将 Web 应用程序分成多个项目的主要内容,如果未能解决你的问题,请参考以下文章