如标题所示,在设计服务层时,最佳实践是什么?我确实理解服务层应该始终返回DTO,以便在服务层中保留域(实体)对象。但是,来自控制器的服务层的输入应该是什么?
以下是我个人的三项建议:
方法1:在此方法中,在服务层中保留域对象(项)。
class Controller
{
@Autowired
private ItemService service;
public ItemDTO createItem(IntemDTO dto)
{
// service layer returns a DTO object and accepts a DTO o
我知道,在开发MVC应用程序时,并不是每个人都使用彻底的体系结构,但让我们假设我有以下架构:
App.Core --> Class Library (POCO or Domain objects)
App.Data --> Class Library (Repository and Entity Framework)
App.Service --> Class Library (Service layer with all business logic)
App.Web --> asp.net MVC 3.0 project
App.Data --> Has a
我有几个与设计有关的问题:
service layer interfaces应该驻留在domain layer中吗?例如,user service
将代码部分移动到单独的层的主要原因是什么?
service layer是否驻留在same assembly as the application layer中?
谢谢!
编辑
我使用RavenDB,并且有非常瘦的控制器操作,但是有两个动作作为[NonAction]操作出现:
[NonAction]
public IEnumerable<Article> GetAllArticles() {
return t
使用spring 4和maven,我习惯于创建分层应用程序,其中子项目编译成war,根项目编译成war。例如
Web Layer
|
Service Layer
|
Dao Layer
(Shared Common Project)
使用此体系结构,我还可以创建两个具有公共父pom并共享相同子项目的Web应用程序
Web Layer Admin Web Layer
\ /
|
Service Layer
|
Dao Layer
我有以下控制器和操作的ASP.NET MVC应用程序:
public class AccountsController
{
public ActionResult Index()
{
var accounts = _accountsManager.GetAccounts();
return View(accounts);
}
}
像这样的AccountsManager类:
public class AccountsManager
{
private ILogger Logger ...
private ICache C
我有3个服务
class Service1{
@Inject private Service2 service2;
}
class Service2{
@Inject private Service3 service3;
}
class Service3{
public Object test(){
...}
}
class TestService1{
//do a test and mock the method in service3
when(service3.test()).doReturn(Something());
}
我刚刚开始做一个WCF服务项目,使用web.api为我们现有的asp.net mvc应用程序的移动版本公开数据。
到目前为止,我已经使用这个通过在ServiceContract中创建的假数据运行了一些东西。
服务合同如下所示:
[WebGet(UriTemplate = "")]
public IQueryable<Workspace> Get()
{
//I want to use our existing service layer like this:
//WorkspaceService service = n
我有一个带有Spring和Hibernate的MVC应用程序
我让每个控制器调用调用dao的服务层。
controller > service > dao
服务应该总是返回一个实体吗?
我试图将逻辑从控制器移动到服务。目前,这是控制器中的逻辑
autenticate
retrieve user information (service call)
retrieve his appointments (other service call)
create a status response in xml
return appointemnts
正如您所看到的,如果我移动服务中
在Mark在.NET中的依赖注入中,他向UI层注入了一个存储库。我相信他这样做是为了让他能够在UI配置中存储所有的东西,然而这对我来说只是糟糕的设计。将服务引用传递到UI不是更好吗?怎样才能阻止未来的开发人员直接使用存储库?同时,他说他正在把它作为一种n层架构来构建。但是,他现在已经将数据层耦合到UI层(不管是否使用DI )。如果他想把所有三个层都放在不同的独立服务器上呢?虽然他的方法可能会奏效,但对我来说,这似乎是错误的。所以,我想看看整个社会有什么要说的。我的想法是对的,还是我错过了什么?
代码的简化版本:
public class UI
{
IRepository _repo;
我正在尝试从PC2 (而不是PC1,图片中有错误)到路由器的intG0/0,但是包被丢弃在沿着路径的L3交换机上。我尝试过设置一个默认的静态路由,一个默认的网关,一个即插即用的路由器技术,甚至是来自L3交换机和路由器的ospf网络广告。
SWITCH0 0:
Switch#show running-config
Building configuration...
Current configuration : 1203 bytes
!
version 12.2
no service timestamps log datetime msec
no service timestamps deb
我的服务像这样用@Transactional注解
@Transactional
@Service
public class Contact_Service {
....
在我的控制器中,我没有@Transactional,有时我直接使用一些持久化层方法来搜索和持久化我的对象,一切都很好:
@Controller
public class GestionAO {
....
@RequestMapping(...)
public String alerte() {
contact_respository.findOne(...)
我有以下图片: REPOSITORY TAG IMAGE ID CREATED SIZE
softshipper/foo-service latest f3bcb2966414 5 seconds ago 295MB
openjdk 11.0.5-jre 499aaf14790b 4 weeks ago 267MB softshipper/foo-
首先,我是个新手,虽然这个问题针对的是Ninject,但它似乎适用于一般的DI。
我想我漏掉了什么。到目前为止,建议的解决方案似乎都非常复杂。
我有这样的东西:
public class MyController : Controller
{
private IMyService _Service;
public MyController()
:this(null)
{ }
public MyController(IMyService service)
{
_Service = service ?? new MySer
我正在尝试将domain driven design应用于一个安卓项目。有一个常见的用例表明,User想要更改他/她的名称,并且这个新名称应该与后端同步。
class User {
// ...
fun changeName(newName:String, service: AccountService) {
val changed = service.changeName(newName)
if (changed) {
name = newName
}
// fire UserNameChanged
我有一个奇怪的例外,我不知道为什么。我将数据库中的列表保存在内存中,但是当我试图访问getter或将实体保存在变量中时,它抛出了一个异常。
以下是实体:
package model;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@NamedQuery(name="Dog.findAll", query="SELECT d FROM Dog d")
public class Dog implements Serializable {
private static fi
在我的项目中,我有一个对IRepositoryProvider的控制器依赖。
public class HomeController : BaseController
{
public HomeController(ISessionWrapper sessionWrapper,
IRepositoryProvider repositoryProvider,
IApplicationConfiguration applicationConfiguration)
: ba