我有一个要求,我需要在 2 个域中托管同一个网站。两者之间的唯一区别是细微的样式差异(基本上只是徽标和标题),站点将托管在哪里以及数据库的连接字符串(数据库结构将是相同的)。
我想这与不同 stackexhange 网站的要求大致相似。
创建和维护它的最佳方法是什么?我想避免拥有 2 个完整的独立解决方案,因为这将成为维护的噩梦。可能需要分别对 2 个站点进行增强的可能性很小。
我的项目结构大致如下:
- Web 项目(asp.net 网络表单)
- 数据项目(用于数据访问的 EF)
- 服务项目(用于从数据层返回数据并处理任何计算)
这是我想这样做的方式:
- 在 Web 项目中有逻辑,将根据访问位置显示不同的样式。
- 为具有不同连接字符串的 2 个域提供单独的服务类。这将意味着服务层中有很多重复的代码。
- 使用依赖注入,我可以在部署时轻松更改将要使用的服务类。
就像是
aspx:
<% if(domain) { %>
some html
<% } %>
aspx.cs:
[Inject]
public IService service { get; set; }
IService.cs:
public interface IService
{
string GetClients();
}
服务.cs:
public class DomainAService: IService
{
DbContext db = new DbContext("connectionStringA");
public string GetClients()
{
return db.Clients.ToString();
}
}
public class DomainBService: IService
{
DbContext db = new DbContext("connectionStringB");
public string GetClients()
{
return db.Clients.ToString();
}
}
这种架构有意义吗?服务层的重复逻辑是不是有问题?我想知道堆栈交换站点是如何做到的。