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