asp.net-mvc – ServiceStack应该是MVC应用程序中的服务层还是应
我正在创建一个MVC网站,并且还打算创建一个在该网站内部以及可能由第三方使用的Web API。
从MVC控制器,我将调用一个服务层,它将包含业务逻辑,对域模型进行操作,执行验证,使基础架构外部服务调用等。服务层又会调用到存储库中进行任何数据库交互。 现在,我喜欢ServiceStack的外观,并打算将其用于Web API – 它似乎比ASP.NET MVC 4 Web API更成熟。我的问题是,如果我将ServiceStack API调用到我上面的服务层,类似于MVC控制器,或者我应该将其作为服务层,为Web客户端和MVC控制器提供服务? 解决方法
我也不会做
理想情况下,MVC和ServiceStack都应该使用和共享纯C#依赖关系。在和谐共处的MVC ServiceStack网站的一个很好的例子是在SocialBootstrapApi演示项目中,该项目已部署在AppHarbor:http://bootstrapapi.apphb.com 我将在您的ServiceStack AppHost中注册所有的依赖项,然后注册一个MVC Controller factory,这样您的MVC控制器和ServiceStack服务就可以自动连接这些依赖关系。 在你的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)); } 使用IGreeter的ServiceStack服务示例 public class HelloService : Service { public IGreeter Greeter { get; set; } //Autowired public HelloResponse Get(Hello request) { return new HelloResponse { Result = Greeter.SayHelloTo(request.Name) }; } } 使用相同IGreeter的MVC控制器示例: public HelloController : ServiceStackController { public IGreeter Greeter { get; set; } //Autowired public void Index(string name) { ViewBag.GreetResult = Greeter.SayHelloTo(name); return View(); } } 一般的想法是MVC中的逻辑控制器,ServiceStack服务应该涉及HTTP层/集成点,即从QueryString或FORM POST的变量收集用户输入,并调用纯/可测C#逻辑,然后准备响应,在ServiceStack中,将填充Response DTO,而对于MVC Controller,您将填充ViewModel。 从MVC控制器调用ServiceStack服务 虽然我将通过上面的C#greet服务来控制器ServiceStack共享功能,但也可以从MVC控制器调用ServiceStack服务,如: public HelloController : ServiceStackController { public void Index(string name) { using (var helloService = AppHostBase.ResolveService<HelloService>()) { ViewBag.GreetResult = helloService.Get(name).Result; return View(); } } } 与ServiceStackController共享会话/缓存 虽然MVC控制器示例继承自ServiceStackController,但并不一定要允许您在MVC和ServiceStack中共享相同的Session / Caching / Authentication RequiredRole / RequiredPermission属性。 有关ServiceStack为MVC带来的其他好处,请参阅MVC PowerPack。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC 4的用户管理
- asp.net – GridView在行选择后滚动回到顶部
- asp.net-mvc-3 – MVC 3 Webgrid使整行可点击
- asp.net-mvc – Sitecore在我的MVC解决方案中提供了一个空白
- asp.net-mvc-3 – MVC 3在提交模型后,View不会刷新
- asp.net-mvc – 捕获文件名作为参数的MVC路由
- asp.net core中AddTransient,AddScope和AddSingleton有什么
- asp.net-mvc-3 – SelectList不显示所选项目
- jquery发起get/post请求_或_获取html页面数据
- asp.net – 最佳实践:DataBound with loop vs RowDataBoun
- asp.net – ASP .NET MVC中的TinyMCE Spellcheck
- 如何找出重新启动ASP.NET Web应用程序的原因
- 在ASP.NET Web App中查找内存泄漏
- asp.net – 为什么我的aspx页面没有被缓存在客户
- 很好地取代了asp.net的GWT
- asp.net-mvc – 为什么HttpContext.Current在asp
- ASP.NET c#获取屏幕宽度(以像素为单位)
- asp.net-mvc – 将焦点放在不使用JavaScript的Ed
- asp.net – MVC中的HTTPContext和Controllercont
- 尝试使用VS和IIS Express在本地设置HTTPS时出现连