基于客户端配置文件的网站上标签的最佳模式

时间:2015-08-05 01:11:11

标签: c# asp.net-mvc-4 design-patterns configuration

我要求根据客户端配置文件配置当前的Web应用程序。所以基本上,允许应用程序根据客户的身份进行扩展和自定义。我目前开始的要求很简单,即使Web应用程序中的文本可配置。所以ATM,将有2个可能的配置文件,并根据您选择的配置文件(通过AppSetting或数据库),所有标签都需要相应地呈现。我可以想到很多这样做的方法。我不想做的一件事是将标签值存储在数据库表中,因为ATM不需要通过接口修改标签,所以我想的可能是资源文件?

此外,我的下一个要求是根据个人资料打开/关闭网站中的所有功能,因此我需要考虑这一点。有时,一个功能将共享90%的逻辑,因此复制到该功能并对该配置文件进行10%更改然后具有相同功能的2个副本且差异最小是不可行的。所以我也在寻找解决方案。也许整体设计可以满足这两个要求?

任何建议都将受到高度赞赏。 感谢

1 个答案:

答案 0 :(得分:-1)

根据我的理解,您需要更新网站上的标签,并根据所选的个人资料提供一些功能。

所以要做到这一点,我想这样做:

首先实现MVC模式,我们的网站将在View中,Model将是Profile类,控制器将托管所有业务逻辑。

如果我们不想使用数据库,我们可以序列化Profile类的对象并存储(对于ref ),因为我们可以有一个File对象,它是一个配置文件,我们可以存储该配置文件可用功能的名称。

在运行时读取该配置文件的所有可用功能,从而填充视图(网站)。这可以通过使用反转控制模式来完成。像这样:

public interface IFeatures{...}

public class Feature1 implements IFeatures{...}

public class Feature2 implements IFeatures{...}

public class Profile{
  private String name;
  private String pwd;
  private File configFile;
  ...
}

public class Controller{

    public List<?> getFeauturesForProfile(Profile p){

      List<IFeatures> features;
      List<String>feautures = scanConfigFileForFeatures(p.getConfigFile()); 
      for(String feature : features)
         features = Class.forName(feature).newInstance();
      return features

    }

}

由于我只熟悉java,所以我在java中编写了语法。