• WCFRest实例:打造轻巧灵活的服务和Url


    如果想做一个分布式系统,肯定需要不同的机器来提供不同的服务,而有些基于http协议,有些tcp/ip协议,有些使用MSMQ通道,以往的技术实现起来比较容易,但是有一点是致命的:管理起来不方便。于是WCF顺势而出。但是使用一段时间后你会发现,你只是需要一点点,但是却有一堆臃肿的东西在你服务器上,于是wcfrest和WebApi顺势而出(其实是很原始的技术,只是换了一个马甲,重新封装了一下)。基础东西我就不介绍,主要说下实际应用的东西。

    写博客一段时间,偶然百度下自己写的内容,发现各种爬虫把自己码的字都爬过去了。好吧,你赢了。此片博文特此感谢小蓝同学。好基友你们懂的。

    Interface的定义:

    image

    定义一个很简单的方法,GetList。其实参数也可以使用这种方式:

    image

    那我为什么会选择上面的一种定义方式呢?我把BucketMessage这个Model的内容通知给客户端,每次请求都需要把这个Model全部参数传递上来。可能有人说这样会增加http请求的内容,但是我认为这样定义是为了所有接口的参数类型统一。至于你非要纠结那几个字段和网速性能方面,我只能说呵呵。

    方法的实现如下:

    image

    接下来是选择Host的过程。刚开始我用IIS做宿主。于是,我果断开启苦比模式。

    首先web.config的system.serviceModel节点:

    image

    参数说明:

    AspNetCompatibilityEnabled:AppDomain(应用程序域)如果开启ASP.NET的兼容模式,则为true.
    HelpEnabled:如果 WCF帮助页启用 则true
    对于配置文件的管理,我个人倾向于把Config文件夹统一放到一个根目录,然后在服务器mklink.不明白的google。
    然后在Global.asax中添加:
    image 
    嗯,只是一个路由映射而已。
    然后在配置文件中添加映射的配置:
    image 
    如想对每个Request都执行Application_BeginRequest,那么必须要在system.web或system.webServer中的modules中加入
    runAllManagedModulesForAllRequests="true"属性.
    iis启动,访问http://localhost:8080/Bucket/Bucket/GetList,调用,一切OK。

    但是用IIS当host的一个不好地方就是当我把方法改成了Post以后,再次调用,要么找不到这个url,要么405,具体原因不明。调试一晚上无果,求大神告知。

    于是换成了Winform当Host,正式上线后用Windows Service当Host。

    Chrome下输出:

    image

    Rest的好处在于轻巧和灵活,基于WebApi的规定。但是Rest只能用webHttpBinding绑定。

    鸟文名:YamatAmain
    地 址:http://www.cnblogs.com/YamatAmain/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    sql中内连接和外连接的区别
    javascript优化--08模式(代码复用)01
    javascript优化--07模式(对象)02
    javascript优化--06模式(对象)01
    HTML-Audio/Video
    javascript优化--05模式(函数)
    javascript优化--04高质量编码
    javascript优化--03高质量编码
    javascript优化--02高质量编码
    Unicode编码
  • 原文地址:https://www.cnblogs.com/YamatAmain/p/3120128.html
Copyright © 2020-2023  润新知