WebApi可以部署在IIS里,也可以寄宿在不同的宿主上(寄宿的本质就是利用一个具体的应用程序为Web Api提供一个运行的环境,并解决请求的接收和响应的回复),如Web Host,Self Host方式...WebApi可以部署在IIS里,也可以寄宿在不同的宿主上(寄宿的本质就是利用一个具体的应用程序为Web Api提供一个运行的环境,并解决请求的接收和响应的回复),如Web Host,Self Host方式...从资源返回类型区分 WebAPI支持内容协商(根据客户端能接受的格式要求,返回相应的JSON,XML,ATOM等格式)。 MVC只能利用Json Result返回JSON数据类型。...从代码角度区分 mvc代码在System.Web.Mvc中,Controller继承System.Mvc.Controller webapi代码在System.Web.Http程序集中,Controller...继承的是System.web.http.ApiController WebApi在提供数据方面,是比MVC更加轻量的架构。
目前最流行的跨平台交互是采用http协议通过JSON对象进行互操作。这种方式最简单,也很高效。webservice+xml的方式似乎已经过时。...下面是我做的一个例子 webapi的代码 View Code public IEnumerable GetAllProducts() { Console.WriteLine... }; //return FileResult; }).ToList()[0].FileName; webapi...返回的IEnumerable 或 IQueryable 支持odata协议,odata协议功能很强大,查询很方便。...,NSURLConnection, NSJSONSerialization,也非常方便,似乎没有必要去使用第三方的类库。
代码里有注释: 方法一,传json参数 方法二,传表单参数 方法三,传字节流 public void Post() { ...
很多同学都会说使用MD5加密一下,其实这是错误的。签名算法不能恢复原来的数据,因为它本身并不包含原来数据的信息。 而加密方法不同,加密方法是可以根据加密结果重新推算出原来的数据的。...HMAC SHA作为一种更加安全的签名算法,使用一个Key来影响签名的结果。这样同样的输入配合不同的Key可以得出不同的签名,更加安全。...我们在基类的OnActionExecuting里取出这些数据组合成签名的参数,然后根据客户端ID获取签名的Key,然后使用同样的签名算法计算签名。并且比较客户端的签名跟服务端的签名是否一致。...因为有时间戳跟随机数的存在,所以理论上每次请求的签名是不可能重复的。...客户端调用 这里演示一下C#签名并且调用http接口的代码 [TestMethod()] public void GetUserTest() {
WebAPI是建立在MVC和WCF的基础上的,原来微软老是喜欢封装的很多,这次终于愿意将http编程模型的相关细节暴露给我们了。...在WebAPI v1.0(和ASP.NET MVC4在一起的版本)很多的类和接口并不存在,同时对Task异步编程(ApiController默认提供异步执行方法)的支持还有一些欠缺(缺少不少方便的扩展方法...路由设置 在Global.asax文件中需要注意WebApi的路由要先于MVC的路由进行注册,不然会出现路由无效的情况。...就会调用异常过滤器,可以检查异常,并采取一些操作,例如记录日志、提供新的响应对象来处理异常等 Tip: 在MVC4中,推荐使用同步基类,在以后的版本中推荐使用异步接口对应用程序进行扩展。...快速入门系列--WebAPI--01基础 快速入门系列--WebAPI--02进阶 快速入门系列--WebAPI--03框架你值得拥有 快速入门系列--WebAPI--04在老版本MVC4下的调整 参考资料
首先我们知道http是一种无状态的请求,他的生命周期就是从客户端浏览器发出请求开始,到得到响应结束。那么MVC应用程序从发出请求到获得响应,都做了些什么呢? ...本文我们会详细讨论MVC应用程序一个请求的生命周期,从一个控件到另一个控件是怎样被处理的。我们还会详细介绍一下整个请求的生命周期中,用到的相关组件。...其实还有很多相关的组件包含在一个完整的mvc应用程序请求生命周期里,在整个请求过程中他们都扮演者非常重要的角色。...意思就是说ASP.NET应用程序,不管是MVC还是WebForm,最终都会到达一个HttpApplication类的实例。...先看看下面这张图,描述了MVC的主要经历的管道事件: ? 上图就是一个完整的mvc应用程序的一个http请求到响应的整个儿所经历的流程。
以往我们讲了WebApi的基础验证,但是有新手经常来问我使用的方式 这次我们来分析一下代码的用法,以及调试的方式 WebApi在一些场景我们会用到,比如: 1.对接各种客户端(移动设备)2.构建常见的...(之前的样例太过简单,这次加一些参数,让初学者多看到这些场景) 3.调试接口 1.HelpPage Api帮助文档 我们新建的WebApi集成了微软自带的HelpPage,即Api的文档,在我们编写好接口之后会自动生成一份文档...config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/Apps.WebApi.XML...注意,新建请求的时候,要设置GET,POST 3.验证权限 之前的文章,我们是通过令牌的方式+接口权限来访问接口数据的 打开SupperFilter.cs过滤器代码 //url获取token...主要看业务场景吧) 4.通过Token向其他接口拿数据 看到SysSampleController类,这个类和普通MVC里面的样例的接口其实没有什么区别,BLL后的所有都是通用的,所以逻辑就不需要重新写了
ASP.NET MVC 4 beta中包含了一个实验项目,用作开发“单页面应用程序(single page applications)”。...它是构建于jQuery和Knockout之上的数据访问和缓存库。在示例代码中,你会看到有一个与knockout兼容的视图模型被自动生成。它的内部是基于Upshot的函数,用作处理与服务层的通信。...另外它还包含用于驱动UI的代码。(SPA的视图模型类似XAML技术,如此看来,这块地方很快会充斥各式各样的代码。) MVVM风格的数据绑定使用Knockout框架完成。...绑定过程与设置控件的DataContext属性不同,你需要调用ko.applyBindings完成。...服务器端 服务端的应用程序框架由普通的MVC页面表示,而应用程序内的各种视图由分离页面(partial pages)表示。在示例中,Knockout数据绑定用作动态地显示和隐藏这些页面。
今天在ActFramework群里面谈及了Spring的调用栈, 大家都觉得调用栈太长了影响性能,也不利于调试....我这边刚好有一个Web框架性能测试项目的代码, 其中有一些常见的Java MVC框架,包括Springboot, JFinal, NinjaFramework等, 我在代码中添加了 new RuntimeException...().printStackTrace(); 用来打印调用到应用逻辑(控制器)的调用栈.下面是我的测试结果: ActFramework java.lang.RuntimeException at benchmark.ActBenchmark.jsonSerialization...ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) ActFramework直接使用undertow IO thread的调用栈..., 原因是所谓Act在调用业务方法的时候new了一个Thread.
1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-WebApi与Unity注入 使用Unity是为了使用我们后台的BLL和DAL层 2:ASP.NET MVC5+EF6+EasyUI...后台管理系统(2)-WebApi与Unity注入-配置文件 3:ASP.NET MVC5+EF6+EasyUI 后台管理系统(3)-MVC WebApi 用户验证 (1) 4:ASP.NET MVC5...+EF6+EasyUI 后台管理系统(4)-MVC WebApi 用户验证 (2) 以往我们讲了WebApi的基础验证,但是有新手经常来问我使用的方式 这次我们来分析一下代码的用法,以及调试的方式...Api帮助文档 我们新建的WebApi集成了微软自带的HelpPage,即Api的文档,在我们编写好接口之后会自动生成一份文档 配置HelpPage,非常简单,分两步 设置项目属性的输出XML文档 ?...主要看业务场景吧) 4.通过Token向其他接口拿数据 看到SysSampleController类,这个类和普通MVC里面的样例的接口其实没有什么区别,BLL后的所有都是通用的,所以逻辑就不需要重新写了
应用程序接口(API,Application Programming Interface)是基于编程语言构建的结构,使开发人员更容易地创建复杂的功能。...怎么用VB.NET 创建WebAPI服务 一,打开我们的 VS死丢丢,创建一个ASP.NET项目 二,精简APS.NET程序(这里只说WebAPI哈,其他的东西砍掉) 2.1 要砍掉的目录如下...Controllers,目录里面已经生成了两个默认的控制器,分别是MVC控制器HomeController.vb和WebAPI控制器ValuesController.vb 4.1 MVC控制器HomeController.vb...继承了MVC的控制器基类,不知我们的主角,但是可以配置一个主页; 4.2 WebAPI控制器ValuesController.vb继承了ApiController的控制器基类 4.3 我们再次运行一下项目...,看一下WebAPI控制器的访问,MVC控制已配置默认控制器Home启动项目是,第一眼看到的即是!!!
接下来进入的是俺在ASP.NET学习中最重要的WebAPI部分,在现在流行的互联网场景下,WebAPI可以和HTML5、单页应用程序SPA等技术和理念很好的结合在一起。... 接下来,介绍ASP.NET WebAPI的服务器管道,这一块和之前学习的ASP.NET MVC管道很相似,但也有一些差异,不过个人感觉这个管道更加的像J2EE的管道了。...最后介绍与WebAPI客户端调用相关的内容,提到调用大家第一反应就是在Web页面中通过javascript进行Ajax调用,获取数据并呈现,服务的消费者是前端页面,这只是调用的主要方式之一。...另外一种就是通过HttpClient来进行调用,这和Web Service调用很相似,服务的消费者是一般应用程序。...快速入门系列--WebAPI--01基础 快速入门系列--WebAPI--02进阶 快速入门系列--WebAPI--03框架你值得拥有 快速入门系列--WebAPI--04在老版本MVC4下的调整 注:
Core的WebApi创建和发布开始。...的调用就好了。...02 发布时注意事项 由于我自己是Windows的系统,所以发布的还是和MVC的一样用的是文件格式的发布。 ?...上面是项目发布后的目录,可以看到,不过是项目代码里面比MVC项目上轻了很多,发布后的也轻量了不少。...配置应用程序池 我们创建了一个NetCoreWebTest的网站,在IIS创建网站这块我就不多说了。 ? 如上图,要注意的点里面在应用程序池中我们的.Net CLR的版本要改为无托管代码。
从何说起 这来自于我把项目迁移到Asp.Net Core的过程中碰到一个问题。...在一个web程序中同时包含了MVC和WebAPI,现在需要给WebAPI部分单独添加一个接口验证过滤器IActionFilter,常规做法一般是写好过滤器后给需要的控制器挂上这个标签,高级点的做法是注册一个全局过滤器...先认识下ApplicationModel 看一下官方文档是怎么描述应用程序模型(ApplicationModel)的: ASP.NET Core MVC defines an application...Apply,方法参数是各自的应用程序模型,以IControllerModelConvention为例看一下它的定义: namespace Microsoft.AspNetCore.Mvc.ApplicationModels...也就是说,它的执行时间比激活控制器还要早,那时候根本没有过滤器什么事儿,它的调用是发生在app.UseEndpoints()。 回到最开始的需求。
Stream是请求信息的content stream。Read方法将读取stream,将其实例化为一个对象,然后返回它。 HttpContentType来自请求信息。...(body 只能被读取一次)Only one thing can read the body MVC和WebAPI之间的一个关键不同点在于MVC缓存请求主体(request body)。...这意味着MVC的参数绑定可以反复从body中查找参数片断。然而,在WebAPI中,请求主体(HttpContent) 只能被读取一次,不被缓存,只能向前读取的流。...SomeType,因而应用SomeType上的特性决定其采用model binding 与MVC的区别 以下是MVC和WebAPI在参数绑定上的一些不同点: MVC只具有model binding,而没有...这是由于MVC将对request body也应用model bind 进行解析,而WebAPI对request body将使用serializer来解析。
二.介绍 不管是传统的三层架构、 DDD 经典四层架构(DDD Lite),亦或是其他具有应用逻辑层(业务逻辑层)的架构,在Web应用程序开发当中 ,我们的业务逻辑最终都需要经过 Web Api 来进行调用...,这里我们可能会有一个重复的操作:编写业务逻辑->编写API调用业务逻辑,这种重复性的操作有没有解决办法呢,我们编写完业务逻辑以后便给我们自动生成WebApi,答案当然是有的。...它生成的API符合Restful风格,可以根据符合条件的类来生成WebApi,由MVC框架直接调用逻辑,无性能问题,完美兼容Swagger来构建API说明文档。...[DynamicWebApi] 第二步:Startup中注册 // 添加动态WebApi 需放在 AddMvc 之后 services.AddDynamicWebApi(); 因为需要MVC的一些类来进行处理...不通过MVC绑定到参数列表的类型。 五.疑难解答 若遇到问题,可使用 Issues 进行提问。
这篇文章主要介绍了C#获取根目录实现方法汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,共有四种项目情况的方法,需要的朋友可以参考下 1.控制台应用程序 static...Console.WriteLine(Path.GetFullPath("../../")); Console.ReadKey(); } 运行结果: 2.winform应用程序...("/") 4.WebApi项目 public class ValuesController : ApiController { //api/values public...Core的根目录获取:HttpRuntime.AppDomainAppPath 补充:WebForm /Mvc /WebApi项目的根目录为配置文件Web.config所在的目录。...以上就是本文的全部内容,希望对大家的学习有所帮助,欢迎大家留言。
view */ public void openActivity(View view) { // 创建意图对象 Intent intent = new Intent(); // 方便调用...// 激活一个Activity startActivity(intent); } /** * 开启系统中的Activity * 案例演示的是开启图库的Activity * * @param...,用途大都是初始化一些数据,和程序的界面 * Activity创建的时候进行调用 */ @Override protected void onCreate(Bundle savedInstanceState...-- icon:指定应用程序的图标;label:指定应用程序的名称; --> 的设置,那么将默认的使用应用application的icon,label 的设置 --> <!