【问题标题】:How can I structure an ASP.NET project for re-use如何构建 ASP.NET 项目以供重用
【发布时间】:2010-11-20 14:56:00
【问题描述】:

我正在设计一个 Web 应用程序,该应用程序将具有多个提供不同功能的可安装模块。这里有很多常见的东西,我有 3 个 C# 类库,我知道它们很容易在不同的项目中使用。

我坚持的一点是实际的网站本身。理想情况下,我想制作一个可以在多个项目中重复使用的 ASP.NET 页面库,但我知道这是不可能的。

你们如何构建您的网站项目,以便页面可以在多个项目中重复使用?到目前为止,我想出的唯一解决方案是在 SVN 中创建一个存储库,并在主项目的 svn:externals 属性中引用它。这允许我将页面添加到所有网站通用的目录中,并且我知道我将能够使用它来将它们检出到其他项目中。但是,我觉得这有点笨拙,并且会在创建新项目时引起问题(创建新解决方案需要许多步骤,以确保正确的外部设置到位)。

有没有更好的解决方案?当您想跨多个客户端项目共享通用 ASPX 文件时,最好的方法是什么?您如何管理针对它们的更改?

提前致谢!

编辑:

非常感谢大卫的回复。我对此进行了更多思考,并认为我会列出一些更具体的想法/担忧。首先,关于项目的更多信息。首先,它是一个CMS。但是,我们也有需要 CRM 的客户,还有一些客户既不想要,又想要从头开始的整个定制系统。

在我上面的原始帖子中,我谈到了拥有主根目录的子目录(例如,cms),使用svn:externals 可以轻松地在多个项目中重新共享网页。我开始认为这是做到这一点的唯一方法。困扰我的一件事是,如果客户的网址是:

http://www.shotgunanddribble.com/cms/content.aspx

但是,我想我可以使用Application_BeginRequest 来减轻可怕的 url,方法是根据客户站点的配置重写它们。例如,如果客户只是一个 CMS,我可以将他们的顶级域重写为 /cms/。如果他们是 CRM,也一样。如果他们都是:

http://www.shotgunanddribble.com/ -> /cms/

http://crm.shotgunanddribble.com/ -> /crm/

使用这些类型的重写有什么缺点吗?我认为,除非其他人有什么神奇的想法,否则svn:externals 是我唯一的希望。

【问题讨论】:

    标签: c# asp.net project-layout


    【解决方案1】:

    实际代码很容易放入其他程序集并从中继承,但 ASPX 文件绝对是另一回事。一个通用的用户控件库如何包含大部分显示内容,并且每个项目都有自己的页面,这些页面主要是用户控件的框架?我从来没有尝试过,所以可能有一些我现在没有想象的“陷阱”。

    【讨论】:

    • 嗨,大卫,感谢您的回复,很抱歉花了一段时间才回复。是的,我正在考虑广泛使用用户控件来处理许多常见的视觉内容。出于某种原因,将 everything 放在控件中似乎很笨拙,但这不是批评,只是其中一种感觉 :) 除了使用 svn:externals,我认为控件是做到这一点的唯一方法。跨度>
    • @Moo-Juice:我同意。在 .NET 的早期,我对一个项目的用户控制非常着迷,虽然它的设计看起来非常灵活,但维护却很笨拙。我确信它可以做得很好以适应设计,但某些约定需要记录并由项目中的其他开发人员遵守。
    • 我会接受这个答案,因为我认为svn:externals 和用户控件是解决它的唯一方法。前者用于处理公共页面的子目录,而控制则以尽可能通用的方式制作新的客户特定的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    相关资源
    最近更新 更多