簡體   English   中英

WebAPI ODATA —使用標准控制器/ Ioc /存儲庫/ UoW排序體系結構與MVC一起使用

[英]WebAPI ODATA — Consuming With MVC Using Standard Controller/Ioc/Repository/UoW Sort of Architecture

使用帶有javascript的WebAPI ODATA服務不成問題...但是當前的建議是,包裝帶有存儲庫的MVC5應用程序使用的http調用(CRUD)。 我最終看到的許多指導最終直接用於實體/ dbcontext。 我正在尋找指導,以演示“飲用自己的Kool-Aid”並使用在應用程序的外部發布的相同ODATA(也可以是普通的WebAPI)。

在我看來,我正在研究這種流程:AppController(site1:443)-> AppRepository-> OdataController(apiSite2:443)-> OdataRepository-> DataSource

第二個問題是我不一定要讓任何使用者直接訪問數據源,尤其是在未經審查的情況下進行發布,並且我也不想控制器中的所有(任何)邏輯。 我可能在想什么...

為了從控制器中提取業務邏輯,我通常盡可能地將所述邏輯下推到域對象。 如果不可能,那么我將創建一個專門設計用於管理所討論邏輯的類,例如兩個不同對象之間的交互。

如果所有其他方法都失敗了,那么我將由服務管理交互。 這些類可能類似於以下內容:

public class SomeApiController : ApiController
{
    public SomeApiController(ISomeApiService service)
    {
       this.Service = service;
    }

    private ISomeApiService Service { get; set; }

    public IHttpActionResult SomeMethod(int someObjectId)
    {
        // service manages the logic and either defers to the object in question or resolves it through some specialized class
        var result = this.Service.SomeMethod(someObjectId);
        return this.OK(result);
    }
}

public class SomeApiService : ISomeApiService
{
    public SomeApiService(ISomeRepository repository)
    {
        this.Repository = repository;
    }

    private ISomeRepository Repository { get; set; }
}

... 等等。

這樣的想法是,各層之間沒有相互依賴關系,而這些依賴關系無法通過您選擇的IoC容器來解決,並且相互依賴關系只有一種方式。 也就是說,SomeApiService不依賴SomeApiController,SomeApiRepository不依賴SomeApiService。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM