vista ventajas refieren qué patron mvc modelo los las estructura ejemplos diseño desventajas controlador capas basados acciones asp.net-mvc asp.net-web-api servicestack service-layer

asp.net-mvc - refieren - modelo vista controlador ventajas y desventajas



¿Debería ServiceStack ser la capa de servicio en una aplicación MVC o debería llamar a la capa de servicio? (1)

Yo no haría ninguna de las dos cosas.

Idealmente, tanto MVC como ServiceStack deberían usar y compartir dependencias C # puras. Un buen ejemplo de que un sitio web de MVC + ServiceStack SocialBootstrapApi armónicamente es el proyecto de demostración SocialBootstrapApi , que se implementó en AppHarbor en: http://bootstrapapi.apphb.com

Registraría todas sus dependencias en su ServiceStack AppHost y luego registraría una fábrica de MVC Controller para que tanto sus controladores MVC como los servicios de ServiceStack se conecten automáticamente con estas dependencias.

En tu AppHost:

void Configure(Funq.Container container) { container.Register<IGreeter>(c => new Greeter()); //Set MVC to use the same Funq IOC as ServiceStack ControllerBuilder.Current.SetControllerFactory( new FunqControllerFactory(container)); }

Ejemplo del servicio ServiceStack usando IGreeter

public class HelloService : Service { public IGreeter Greeter { get; set; } //Autowired public HelloResponse Get(Hello request) { return new HelloResponse { Result = Greeter.SayHelloTo(request.Name) }; } }

Ejemplo de controlador MVC que usa el mismo IGreeter:

public HelloController : ServiceStackController { public IGreeter Greeter { get; set; } //Autowired public void Index(string name) { ViewBag.GreetResult = Greeter.SayHelloTo(name); return View(); } }

La idea general es para la lógica dentro de los controladores MVC. Los servicios de ServiceStack deberían preocuparse por la capa HTTP / punto de integración, es decir, recopilar la entrada del usuario de las variables QueryString o FORM POST''ed y llamar a la lógica de C # pura / comprobable para luego preparar la respuesta. en ServiceStack que llenaría el Response DTO, mientras que para un controlador MVC estaría poblando el ViewModel.

Llamar a los servicios de ServiceStack desde un controlador MVC

Aunque quisiera que la funcionalidad de compartir controladores + ServiceStack a través de un servicio C # greet arriba, también puede llamar a un servicio ServiceStack desde un controlador MVC como:

public HelloController : ServiceStackController { public void Index(string name) { using (var helloService = AppHostBase.ResolveService<HelloService>()) { ViewBag.GreetResult = helloService.Get(name).Result; return View(); } } }

Compartir sesión / almacenamiento en caché con ServiceStackController

Aunque los ejemplos de MVC Controller heredan de ServiceStackController , no es necesario, pero sí le permite compartir los mismos atributos Session / Caching / Authentication + RequiredRole / RequiredPermission en MVC y ServiceStack.

Consulte MVC PowerPack para conocer otros beneficios que ServiceStack aporta a MVC.

Estoy creando un sitio web de MVC y también tengo la intención de crear una API web para usar tanto en el sitio web como potencialmente por terceros.

Desde los controladores MVC llamaré a una capa de servicio que contendrá lógica de negocios, actuará en modelos de dominio, realizará validación, realizará llamadas de servicio externo de infraestructura, etc. La capa de servicio a su vez llamará a los repositorios para cualquier interacción con la base de datos.

Ahora, me gusta el aspecto de ServiceStack y tengo la intención de usarlo para la API web; parece más maduro que ASP.NET MVC 4 Web API . Mi pregunta es, ¿debería tener la llamada ServiceStack API en mi capa de servicio anterior, similar a los controladores MVC, o debería convertirla en la capa de servicio, dando servicio tanto a los clientes web como a los controladores MVC?