当前位置: 首页 > news >正文

网站代理备案表铁岭做网站公司哪家好

网站代理备案表,铁岭做网站公司哪家好,怎么查网站的域名备案价格,做家具有那个网站在上一篇文章《Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器》中#xff0c;我们已经了解了Raspkate这一轻量型Web服务器#xff0c;今天#xff0c;我们再一起了解下如何基于Raspkate实现简单的RESTful API。 模块 首先让我们了解一下“模块”的概念。Raspkate的… 在上一篇文章《Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器》中我们已经了解了Raspkate这一轻量型Web服务器今天我们再一起了解下如何基于Raspkate实现简单的RESTful API。 模块 首先让我们了解一下“模块”的概念。Raspkate的模块包含了一组能够提供完整业务功能的HTTP处理器Handler例如在Raspkate的源代码库中默认提供了两个模块Default和RaspberryPi它们分别位于两个不同的C#项目中 Raspkate.Modules.DefaultRaspkate.Modules.RaspberryPi Default模块包含了一个标准的静态文件访问服务/处理器以及一个能够读取并返回服务器信息的RESTful API控制器而RaspberryPi模块则提供了一个访问树莓派信息页静态文件的处理器以及一个读取树莓派信息的RESTful API控制器。当然在这里静态文件访问处理都是由FileHandler负责而RESTful API的处理则由ControllerHandler完成。虽然这两个模块使用了相同类型的Handler但它们所专注的业务功能完全不同而且它们是相互隔离独立执行的。 Raspkate中每个模块都被存放于modules目录下的某个子目录中在Raspkate服务启动时会扫描modules目录下的所有程序集定位所有继承于RaspkateModule类的子类并根据类型定义对Handler进行初始化然后注册到Raspkate服务中以便这些Handler能够为HTTP请求提供服务。当然这些模块也可以放在其它目录下但这就需要修改Raspkate服务的配置文件RaspkateService.exe.config把模块所在的目录添加到modules节点下例如 1 2 3 4 5 6 7 8 9 10 11 12 1 14 ? xml  version1.0 encodingutf-8 ? configuration    configSections      section  nameraspkateConfiguration typeRaspkate.Config.RaspkateConfiguration, Raspkate/    / configSections    raspkateConfiguration  xmlnsurn:Raspkate.Config prefixhttp://127.0.0.1:9023/      modules        add  pathmodules/        add  pathd:\\test relativefalse /      / modules    / raspkateConfiguration / configuration 在模块的注册类型中也就是继承于RaspkateModule类的子类中只需要返回该模块能够提供的Handler实例即可。接下来让我们一起看看如何开发一个自己的模块并通过注册ControllerHandler向调用者提供RESTful API服务。 案例计算器 最简单的不过就是计算器运算加、减、乘、除。那么最最简单的就是计算两个整数的和好吧就以这个为例开始我们的RESTful API开发之旅。 首先打开Visual Studio 2013新建一个C#类库Class Library项目项目命名为RaspkateCalculatorModule注意.NET Framework至少选择4.5.2以上老版本的Framework除了2.0以外Microsoft都不再官方支持了。成功创建项目后添加对Raspkate.dll的引用。 然后在这个项目中新建一个名为CalculatorController的类代码如下 1 2 3 4 5 6 7 8 9 1 [RoutePrefix( calc )] public  class  CalculatorController : RaspkateController {      [HttpGet]      [Route( add/{a}/{b} )]      public  int  Add( int  a, int  b)      {          return  a b;      } } 接着在这个项目中新建一个名为Module的类代码如下 1 2 3 4 5 6 7 8 9 10 1 internal  sealed  class  Module : RaspkateModule {      public  Module(ModuleContext context)          : base (context)      { }      protected  override  IEnumerableIRaspkateHandler CreateHandlers()      {          yield  return  new  ControllerHandler( CalculatorController ,              new  [] { typeof (CalculatorController) });      } } OK万事俱备只欠东风啦回到Raspkate中将RaspkateService.exe.config稍微改动一下将该模块的输出目录添加到modules节点中即可直接启动RaspkateService.exe程序了 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 30 31 32 33 34 35 36 37 38 ? xml  version1.0 encodingutf-8 ? configuration    configSections      section  nameraspkateConfiguration typeRaspkate.Config.RaspkateConfiguration, Raspkate/      section  namelog4net typelog4net.Config.Log4NetConfigurationSectionHandler, log4net/    / configSections    raspkateConfiguration  xmlnsurn:Raspkate.Config prefixhttp://127.0.0.1:9023/      modules        add  pathmodules/        add  pathC:\Users\chenqn\Documents\visual studio 2013\Projects\RaspkateCalculatorModule\RaspkateCalculatorModule\bin\Debug relativefalse/      / modules    / raspkateConfiguration    log4net      appender  nameConsoleAppender typelog4net.Appender.ConsoleAppender        layout  typelog4net.Layout.PatternLayout          conversionPattern  value%utcdate{DATE} [%thread] %level %logger - %message%newline/        / layout      / appender      appender  nameFileAppender typelog4net.Appender.FileAppender        file  valuelogs/raspkate.log /        appendToFile  valuetrue /        lockingModel  typelog4net.Appender.FileAppenderMinimalLock /        layout  typelog4net.Layout.PatternLayout          conversionPattern  value%date [%thread] %level %logger - %message%newline /        / layout      / appender      root        level  valueINFO/        appender-ref  refConsoleAppender/        appender-ref  refFileAppender /      / root    / log4net    startup      supportedRuntime  versionv4.0 sku.NETFramework,Versionv4.5.2 /    / startup / configuration 启动程序后你可以在输出的日志中注意到CalculatorController已经被注册到ControllerHandler当中进而可以开始提供HTTP请求的服务了 请打开你的浏览器在地址栏中输入 1 http://127.0.0.1:9023/calc/add/12/30 那么你应该看到的是 看来Raspkate服务已经将计算结果返回给你了。怎么样使用Raspkate开发RESTful API是不是非常快捷接下来让我们看看更加有意思的特性。 案例计算器进阶 刚才我们的计算器还是太简单接下来我打算让这个计算器能够计算复数包括虚数部分的乘法。同学们是否还记得复数相乘的计算公式 OK也就是我们的RESTful API需要接收两个复数每个复数都要包含实数 r 和虚数 i 两个部分返回值也应该包含实数和虚数两个部分。那么我们的CalculatorController就可以写成这样 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [RoutePrefix( calc )] public  class  CalculatorController : RaspkateController {      [HttpGet]      [Route( add/{a}/{b} )]      public  int  Add( int  a, int  b)      {          return  a b;      }      [HttpPost]      [Route( mul )]      public  dynamic Multiplicity([FromBody] dynamic input)      {          var  a input.x.r; // 第一个数的实数部分          var  b input.x.i; // 第一个数的虚数部分          var  c input.y.r; // 第二个数的实数部分          var  d input.y.i; // 第二个数的虚数部分          return  new  { z new  { r a * c - b * d, i b * c a * d } };      } } 重新运行Raspkate服务打开能够发出HttpPost请求的测试客户端我用的是Fiddler看看我们的程序是否可以正确执行 测试成功RESTful API已经以JSON格式返回了我们需要的计算结果。 总结 从上面的演示可以看到Raspkate服务中RESTful API的实现沿用了类似微软ASP.NET Web API的编程习惯包括 Controller的编程模型ASP.NET Web API中使用ApiController作为基类此处使用RaspkateController作为基类Attribute RoutingHttpGet和HttpPost两种HTTP方法其它的暂未实现FromBody特性修饰符使得方法的某些参数可以直接从HTTP Post Body中取值对dynamic类型、匿名类型的支持 相比之下Raspkate服务所提供的RESTful API编程更为简单快捷。今后如果这部分的确有应用的话可以对整个结构作进一步完善。 相关文章  Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器在树莓派下安装Mono环境树莓派上安装mono和jexus运行ASP.NET程序树莓派2发布四核 CPU1G RAM 硬件升级不加价支持Windows 10 陈晴阳Sunny Chen2003年毕业于中南大学铁道校区。高级程序员系统分析员微软MVPVisual C#。cnblogs网名daxnet并打算以该名闯荡IT江湖。MicrosoftDynamics AX、Microsoft .NET/C#以及领域驱动设计DDD的狂热爱好者。 原文地址http://www.cnblogs.com/daxnet/p/5326992.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注 赞赏 人赞赏
http://www.sadfv.cn/news/275449/

相关文章:

  • 专业网站建设市场wordpress主题特色功能
  • 手机网站开发怎么样手机seo关键词优化
  • 网上请人做软件的网站wordpress 自动分页
  • 做网站的心得体会网站网页设计优秀案例
  • 丰台体育馆网站建设虚拟机wordpress教程
  • 做脚本从网站引流为什么python不适合开发网站
  • 阿里云服务器windows系统网站搭建教程网络营销是什么样子的
  • 蓬莱网站建设公司报价织梦登录wordpress
  • 合肥做一个网站要多少钱网站开发 需求清单
  • 做微网站需要什么拖拽建设网站源码
  • 从化网站制作洞泾做网站公司
  • 国内好的网站设计打电话叫人做网站
  • 新乡网站建设服务精品展厅设计
  • 站长工具seo排名查询最近的军事新闻有哪些
  • 钦州网站制作网站建好后
  • 网站承建江西做网站优化好的
  • 网站开发怎样手机号验证公司logo墙设计图片
  • ASP图书信息管理系统网站建设拼多多跨境电商平台
  • 网站建设原因分析免费企业邮箱推荐
  • 专业网站制作软件广东省网站集约化建设方案
  • 南充做网站公司哪家好网站建设开发设计公司
  • 网站怎么做流量统计每平每屋设计家官网
  • 网站description是指什么口碑营销的前提及好处有哪些
  • 南昌seo网站开发西方设计网站
  • 天津手机模板建站成都网站开发工资
  • 做个网站跳转链接怎么做南阳河南网站建设价格
  • 东莞网站案例营销用中文版wordpress建英文站
  • 寻找手机网站建设怎么让付费网站免费
  • 绛县苗木网网站是由谁建设的写作网站设定
  • 检察机关门户网站建设自查报告湖北省住房建设部官方网站