4

我有一个关于我应该如何从其他服务中使用 ServiceStack 中的服务的问题。

我已经为我的所有请求响应了 DTO,女巫实现了IReturn接口。对于像这样的客户端JsonServiceClient,当我发出请求时,它会返回对象响应,其中实现的类型是IReturn,太棒了!

现在我正在重构一个项目,为将来的项目中使用的服务编写插件,当我在另一个服务中注入服务并发出请求时,它返回对象类型,所以我必须将其转换为HttpResult,然后转换对象对 DTO 类型的响应。

在我的大多数服务方法签名中,我将对象作为返回类型,然后我返回一个HttpResult带有响应的对象。例如:

public object Get(Request request)
{
    return new HttpResult(responseObj);

}

除了使用客户端的服务之外,我还有其他选择吗?

我有一个服务和 DTO 仅用于视图,它们使用插件中的其他服务。这就是为什么我需要正确获取响应 DTO(视图服务就像控制器一样)。

4

1 回答 1

2

恐怕没有理解你的问题,我没有主题,

但我会使用相同的响应对象,只更改请求。

在服务模式

                public class TestRequest : IReturn<TestResponse>
                {
                 public int Id { get; set; }
                 public string name { get; set; }    
                }
                public class LowLevelRequest : IReturn<TestResponse>
                {
                 public int Id { get; set; }
                 public string name { get; set; } 
                 public string permissions { get; set; }      
                }

                public class TestResponse
                {
                  public bool success { get; set; }
                  public string message { get; set; }
                }

在路由表中

                    Routes
                      .Add<TestRequest>("/TestAPI/{Id}", "POST,GET, OPTIONS")
                      .Add<LowLevelRequest>("/InternalAPI/{Id}", "POST,GET, OPTIONS");

在服务

                  public TestResponse Post(TestRequest request)
                  {      JsonServiceClient client=new JsonServiceClient();
                         LowLevelRequest  lowrequest=new LowLevelRequest() { Id=request.Id, name=request.name, permissions="RW"  }                                                           
                        return  client.Post<TestResponse>(lowrequest);
                   }

                  public TestResponse Post( LowLevelRequest request)
                  {      ....
                         return new TestResponse() { success=true, message="done" };
                  } 
于 2013-10-01T02:17:22.113 回答