1

我希望创建一个将托管在服务器 A 上的服务(例如 URL: http://servera:807)。但是我的主要应用程序需要托管在服务器 B 上(例如 URL: http://serverb:801)。

我很好奇这是否可能?我的服务和主要应用程序需要位于不同服务器上的原因是我无法控制的。当前系统使用具有相同设置的 WCF,我想摆脱它。

在示例中,服务和客户端似乎都托管在同一位置/同一解决方案中

4

1 回答 1

3

以下是解决方案/项目的潜在设置。它简单且不完整,但我认为有助于说明一种可能的设置。您还需要考虑如何处理会话信息和身份验证,因为 MVC 和 ServiceStack 分别处理这些。请参阅CustomAuthenticationMVC

ServerA.sln(ASP.NET Web 应用程序)

  • ServiceModel 项目 - 保存请求对象和 dto(这可以在 ServerA 和 ServerB 解决方案之间共享)
  • ServiceInterface 项目 - 有服务实现
  • Global.asx - 有 Application_Start 方法来配置 ServiceStack

ServerB.sln(MV4 应用程序)

  • ServiceModel 项目(共享)
  • 意见
  • 楷模
  • 控制器

ServiceModel 项目中的类示例:

[Route("/Foos")]
public class Foos : IReturn<FoosResponse>
{}

public class FoosResponse
{
    public FoosResponse()
    {
        this.ResponseStatus = new ResponseStatus();
    }

    public ResponseStatus ResponseStatus {get; set;}
}

ServiceInterface 项目中的类示例

public class FoosService : Service
{
    public FoosResponse Get(Foos request)
    {
        return new FoosReponse();
    }
}

示例如何在 MVC4 应用程序中调用 ServiceStack API

public class FoosController
{
    public ActionResult Index()
    {
        var client = new JsonServiceClient("http://servera:807");
        var response = client.Get(new Foos());
        return View(response);
    }
}
于 2013-03-12T16:20:34.083 回答