我有一个定制的 ASP.NET MVC 项目,仅供一位客户使用。
我需要扩展该项目,以便根据需要与尽可能多的客户合作。
每个客户都可以决定是否打开或关闭某些功能 (第一次添加新客户时在数据库中定义)
我想知道最好的方法是什么:
1) 使用包含所需基本功能的基本 Controller ,并添加一个扩展基本 Controller 的新 Controller (针对每个新客户)。
2)仅使用一个 Controller ,并使用工厂方法模式构建每个客户(每个客户都有自己的具体类)。
3) 仅使用一个拥有所有功能的 Controller ,并根据 DB 开关打开或关闭功能(第一次添加新客户时在 DB 中定义)
谢谢
最佳答案
所有这些方法都过于严格,在获得一定数量的新客户后,您要么到处复制代码,要么解决一个客户不需要但另一个客户需要的代码。
您最好将每个客户的特定要求作为通用、可重用的选项来实现。例如,如果一位客户有计费部分,则不要创建带有计费部分的 ThatCustomerController,而是添加计费角色,添加计费 Controller ,然后限制该角色对 Controller 的访问。
现在可能感觉这是一项更复杂的工作,但一年后您会感谢这种灵活性。
非常粗略的伪代码示例:
public class GeneralController : Controller
{
public ActionResult Index()
{
// Everyone can come here
}
}
[Authorize(Roles = "Billing")]
public class BillingController : Controller
{
public ActionResult Index()
{
// Only those with the 'billing' role can come here
}
}
关于c# - MVC Controller VS 工厂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27601907/