我目前正在构建一个 ASP.Net MVC 4 SAAS 应用程序 (C#),并且一直致力于设计计划。我的意思是如果客户选择Plan A
他们应该有权访问一些东西,如果他们选择的话Plan B
他们可以接触其他人等等。
我坚持的部分是与所有操作共享帐户计划的最佳实践。我意识到使用全局变量是不好的做法,但我真的不想往返数据库来获取每个操作的计划。
我想做的是这个答案 https://stackoverflow.com/a/5118750/1244328他们只是声明一个静态模型并在某个时刻设置它并稍后访问它。您认为这是最好的方法吗?有没有更好的办法?
我认为最佳实践是您应该在项目中包含 IoC 并将配置对象注入到控制器中。
控制器的示例代码:
public class YourController : Controller
{
private IConfigService _configService;
//inject your configuration object here.
public YourController(IConfigService configService){
// A guard clause to ensure we have a config object or there is something wrong
if (configService == null){
throw new ArgumentNullException("configService");
}
_configService = configService;
}
}
您可以配置 IoC 以指定此配置对象的单例范围。如果您需要将此模式应用于所有控制器,您可以创建一个基本控制器类来重用代码。
您的 IConfigService
public interface IConfigService
{
string ConfiguredPlan{ get; }
}
您的配置服务:
public class ConfigService : IConfigService
{
private string _ConfiguredPlan = null;
public string ConfiguredPlan
{
get
{
if (_ConfiguredPlan == null){
//load configured plan from DB
}
return _ConfiguredPlan;
}
}
}
- 此类可以轻松扩展以包含更多配置,例如连接字符串、默认超时...
- 我们将一个接口传递给我们的控制器类,我们很容易在单元测试期间模拟这个对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)