在工作中,我们即将重写一个旧应用程序,我被告知要获得一些关于如何做到这一点的想法。
我的想法如下:
由于该应用程序将主要是一个网站,因此我将使用 MVC。用于 DI 和 IoC 的带有 POCO 实体的 EF。Web 应用程序和其他客户端将使用的服务的 WCF。
到目前为止,架构应该如下所示: - Demo.Web - Demo.Entities - Demo.Services
现在我的架构是这样的:
命名空间 Demo.Entities
// IEntity.cs
public interface IEntity { }
//User.cs
public virtual long UserId { get; private set; }
public virtual string Name { get; private set; }
public User() { }
public User(long userId, string name)
{
UserId = userId;
Name = name;
}
命名空间 Demo.Services
// IService.cs
public interface IService<T> : IDisposable where T : IEntity
{
List<T> GetList();
}
// UserService.cs
public class UserService : IService<User>
{
public List<User> GetList()
{
return new List<User>(); // Simplicity
}
public void Dispose() { }
}
当我需要使用它时,我会这样做:
using(IService<User> service = new UserService())
{
var q = service.GetList();
}
至于 MVC,我将使用 Demo.Models 中的模型,如果需要实际模型,我会将它们链接到我的 MVC 应用程序的 Models 文件夹,但现在 MVC 是我最不关心的问题。
到目前为止,我已经检测到一个问题,如果不实例化指定的服务,我将无法查询多个实体。从好的方面来说,我可以完全控制处理我的数据的内容和方式。
实际问题
如果有的话,谁能指出我支持这些功能的任何架构设计?