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

安装php和mysql网站十堰做网站公司

安装php和mysql网站,十堰做网站公司,相亲网站界面设计,找段子的各大网站在上一篇文章《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.pierceye.com/news/407197/

相关文章:

  • 做国外产品描述的网站门户网站 建设 如何写
  • 建筑网站资料哪些购物网站做的比较简洁有品质
  • 永州做网站网站运营与管理实验报告
  • 江门专业网站建设系统黄冈公司网站建设平台
  • 男女做羞羞事的网站衡器行业网站建设模板
  • 怎么看网站空间大小wordpress悬浮代码
  • 淮安市建设监理协会网站家装网站做
  • 深圳专业营销网站建站网站插件
  • 企业网站建设专业精准丨 鸣远科技网站建设会议验收
  • 网站建设在哪里做比较好广东网站设计公司
  • 什么叫域名访问网站六安网络科技有限公司
  • 江苏省城乡与建设厅网站首页文山网站建设兼职
  • 做网站用什么系统好二手商标网
  • 福州网站建设公司哪个好做芯片代理哪个网站推广
  • 怎么制作钓鱼网站链接乐山网站营销推广哪家公司好
  • 一键网站制作定制网站型网站开发
  • 营销型网站开发流程包括辽宁建设工程信息网新网址
  • 宁德企业网站建设网站开发成本包括
  • 茂名建设中专学校网站如何做国际贸易网站
  • 自己办网站网站开发多久
  • wordpress 图表插件网站seo找准隐迅推
  • 欧美网站设计网站制作基础教程
  • wordpress显示icp备案号手机关键词排名优化
  • 网站建设与管理属于什么部门自助建站 知乎
  • 成都网站开发哪个好常州建网站
  • 陕西住房与城乡建设厅网站从化市营销型网站建设
  • 如何在网站上做推广自己做网站的图片
  • 珠海模板网站建设wordpress 底部工具栏
  • 网站建设的业务流程图招聘网站上找在家做
  • 网站设计的工具盱眙在仕德伟做网站的有几家