サービスレイヤとDALを一緒に持ってくる必要があります。しかし、それを別のアセンブリに分けることができます。
ServiceLayerの定義Foo.Services.Core.dll
namespace Foo.Services.Core.Models
{
public class Foo
{
...
}
}
namespace Foo.Services.Core.DataServices
{
public interface IFooService
{
Task<Foo> GetByIdAsync(int id);
}
}
次のプロジェクトは、UnitOfWorkのFoo.Services.Impl.UnitOfWork.dll
namespace Foo.Services.Impl.UnitOfWork
{
public class UnitOfWorkFooService : IFooService
{
private readonly IUnitOfWork _uow;
public UnitOfWorkFooService(IUnitOfWork uow)
{
_uow = uow;
}
public Task<Foo> GetByIdAsync(int id);
{
return await _uow.FooRepo.FindOne(...).FirstOrDefaultAsync();
}
}
}
それともREST APIにFoo.Services.Impl.RestApi.dll
を話し、将来的に異なる合計で、より具体的になります
namespace Foo.Services.Impl.RestAPI
{
public class RestApiFooService : IFooService
{
private readonly IRestApi _restapi;
public RestApiFooService(IRestApi restapi)
{
_restapi = restapi;
}
public Task<Foo> GetByIdAsync(int id);
{
return await _restapi.FooEndpoint.GetAsync(id);
}
}
}
エンティティを抽出することができます別のプロジェクトに – Simon
サービス層でデータ層が使用されています。だからあなたのサービス層はこのリファレンスの一部としてエンティティについて知っているでしょう。前述のようにエンティティを別のプロジェクトに移動しない限り、これは非常に一般的です。 – Ric
サービス層はエンティティについて知っている必要がありますが、残りのデータ層については知りません。 – Simon