如何从部署在另一台服务器上的MVC4.net应用程序调用部署在远程服务器上的Servicestack服务?

阿莫尔

我是Servicestack的新手,正在尝试为当前项目实施它。现在,我将MVC.NET应用程序部署在一台服务器上(例如http:// server1:8080),并将servicestack服务部署在另一台服务器上(例如http:// server2:9080)。

我已经经历了

https://github.com/ServiceStack/ServiceStack/wiki/Mvc-integration

但我不明白如何将其更改为从http:// server2:9080呼叫服务

如何从我的MVC控制器调用服务?

    Service code is as following  

// APPHOST.cs

    public class AppHost : AppHostBase
        {
            public AppHost() : base("Flight app host",
                typeof(flightService).Assembly) { }

            public override void Configure(Container container)
            {

            }
        }

//请求DTO

    [Route("/flights/","POST")]
        [Route("/flights/{departure}/{arrival}","POST")]
        public class TravelServiceRequest : IReturn<TravelServiceResponce>
            {
                public string departure { get; set; }
                public string arrival { get; set; }

            }

//回应DTO

    public class TravelServiceResponce
        {

            public string departure { get; set; }
            public string arrival { get; set; }
            public string airline { get; set; }
            public decimal fare { get; set; }
            public DateTime arrivalTime { get; set; }
            public DateTime departureTime { get; set; }
        }

// 服务

public class flightService:Service
    {

        public object Post(TravelServiceRequest request)
        {
            var response = new TravelServiceResponce
            {

                departure =request.departure,
                arrival =request.arrival,
                airline="jet airways",
                fare =677,
                arrivalTime =new DateTime(2014,12,12,5,6,2),
                departureTime = new DateTime(2014,11,12,5,6,2)    

            };

            return response;
        }

    }

  // Gloable.asax.cs file 

public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            var appHost = new AppHost();
            appHost.Init();
        }
}

在我的MVC应用中

public class HomeController : Controller
    {
        public ActionResult Index()
        {

            //call service from here 

            return View();
        }
}

我有C#代码来调用此服务,但是我不确定这是否是在MVC控制器中使用的最佳方法

           var client = new JsonServiceClient("http://server2:9080/");

            var responce = client.Post(new TravelServiceRequest
            {
                departure = departure,
                arrival = arrival

            });

请以最好的方式帮助我在MVC中调用远程服务。

神话

进程外调用ServiceStack Services

如果ServiceStack和MVC不在同一Web应用程序中托管在一起,那么您将使用ServiceStack Server DTO和.NET Service Client访问与任何.NET Service Client一样的ServiceStack Service,例如:

var response = client.Post(new TravelServiceRequest { ... });

共享Server DTO .dll的另一种方法是使用“添加ServiceStack参考”提供的VS.NET集成,它使您可以从远程URL生成Server DTO。

ServiceStack + MVC进行中

如果ServiceStack和MVC一起托管在同一AppDomain中,请参考ServiceStack与MVC的集成,它允许您的控制器可以通过从继承来访问大多数ServiceStack功能ServiceStackController

然后,您可以在MVC控制器中通过以下方式在过程中执行ServiceStack服务:

var response = base.Execute(new TravelServiceRequest { ... });

这等效于从IOC解析ServiceStack服务并直接调用它,而您可以这样做,例如:

using (var service = base.ResolveService<TravelServices>())
{
    var response = service.Post(new TravelServiceRequest { ... });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章