職場で古いアプリケーションを書き直そうとしていますが、それを行う方法についてアイデアを得るように言われました。
私の考えは次のとおりです。
アプリケーションは主に Web サイトになるため、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 アプリケーションのモデル フォルダーにリンクしますが、MVC は私の最後の関心事です。
これまでに 1 つの問題を検出しました。指定されたサービスをインスタンス化しないと、複数のエンティティをクエリできません。明るい面では、自分のデータがどのように処理されているかを完全に制御できます。
実際の質問
もしあれば、これらの機能をサポートするためのアーキテクチャ設計を教えてもらえますか?