Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 分层应用中的Asp-webapi微风_Design Patterns_Architecture_Asp.net Web Api_Breeze - Fatal编程技术网

Design patterns 分层应用中的Asp-webapi微风

Design patterns 分层应用中的Asp-webapi微风,design-patterns,architecture,asp.net-web-api,breeze,Design Patterns,Architecture,Asp.net Web Api,Breeze,我目前有一个ASP Web API项目,目标是创建一个SPA 我首先使用EF代码,并具有以下解决方案结构: - BookClub.Entities - BookClub.DataAccess (DbContext, generic Repository, ...) - BookClub.BusinessLogic (UOW, Facade pattern) - BookClub.Web (ASP Web Api (v2)) 我想尝试一下微风,但我真的不知道哪里适合微风。 所有示例都使用Apic

我目前有一个ASP Web API项目,目标是创建一个SPA

我首先使用EF代码,并具有以下解决方案结构:

- BookClub.Entities
- BookClub.DataAccess (DbContext, generic Repository, ...)
- BookClub.BusinessLogic (UOW, Facade pattern)
- BookClub.Web (ASP Web Api (v2))
我想尝试一下微风,但我真的不知道哪里适合微风。 所有示例都使用ApicController中的上下文或存储库。 应该避免这种情况,并且每个实体都应该使用BusinessLogic层外观。 但是我的控制器会是什么样子呢


以前有人这样做过吗?

您的控制器只是为您定义的视图简化了业务逻辑实体的转换。如果您已经建立了业务层,那么只需在控制器get/put方法中使用它。下面的代码将返回json格式的
书籍

[HttpGet]
[ValidateAntiForgeryToken]
[OutputCache(NoStore = true, Duration = 0)]
public ActionResult GetBook(int bookID)
{
    BookBL bookBL=new BookBL();
    Book model=bookBL.SelectOne(bookID);
    return Json(model, JsonRequestBehavior.AllowGet);
}

//Return a partial view instead 
[HttpGet]
[ValidateAntiForgeryToken]
[OutputCache(NoStore = true, Duration = 0)]
public ActionResult GetBookView(int bookID)
{
    BookBL bookBL=new BookBL();
    Book model=bookBL.SelectOne(bookID);
    return PartialView("Partials/BookView", model);
}

啊!刚刚意识到你可能指的是js中的控制器。这可能不是预期的答案。不,我不是指js中的控制器。问题是如何将工作单元结构与breezejs结合使用。breezejs的所有示例都使用一个存储库,这仅仅是一种方法,还是我可以通过一个额外的业务逻辑层进一步创建关注点分离?正如所说,控制器是一个中介,不需要任何业务逻辑。在其背后使用repo或UOW模式,就像在任何webapi技术中一样。这根本不是一个容易的问题。Breeze接受控制器发出的指令。在服务器上,ContextProvider只是一个没有web API依赖关系的助手。一种可能的解决方案: