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


    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绑定。

    lync2013添加自定义菜单

    lync2013添加自定义菜单

     

    在lync2013的原生态界面上添加一个菜单,下面是添加后的效果。

    image

    当然,可以在菜单列表上添加菜单,也可以在联系人的右键菜单上添加菜单,主要是通过修改注册表的方式来添加的,

    下面是注册表文件,将下列注册表文件导入PC后自定义菜单就会起效。

    机器系统环境为64位win7,

    复制代码
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Lync\SessionManager\Apps\{0C7E138E-C6FD-48EA-9191-46FFA98EA902}]
    "Name"="云课堂"
    "Path"="F:\\工作文件\\17.Lync开发\\5.Demo\\Args\\Args\\bin\\Debug\\Args.exe  userId=%user-id%"
    "ApplicationType"=dword:00000000
    "ToolTip"="tooltip text"
    "Smallicon"="F:\\工作文件\\18.云课堂\\OutFile\\UI\\Icon32\\AnimationD.png"
    "ExtensibleMenu"="MainWindowActions"
    复制代码

    如图:

    image

    如果是win8的话,应该是导入下列注册表文件。

    复制代码
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Lync\SessionManager\Apps\{0C7E138E-C6FD-48EA-9191-46FFA98EA902}]
    "Name"="云课堂"
    "Path"="F:\\工作文件\\17.Lync开发\\5.Demo\\Args\\Args\\bin\\Debug\\Args.exe  userId=%user-id%"
    "ApplicationType"=dword:00000000
    "ToolTip"="tooltip text"
    "Smallicon"="F:\\工作文件\\18.云课堂\\OutFile\\UI\\Icon32\\AnimationD.png"
    "ExtensibleMenu"="MainWindowActions"
    复制代码

    win7与win8实际上就是注册表位置不同而已。

    下面介绍一下各个键值的含义

    Name:指的是自定义菜单的名称。

    Path: 指的是菜单打开的程序的路径;如果要打开的是一个网页的话,请把path值修改为网页的URL地址,例如:“http://www.baidu.com”

    ApplicationType:指的是自定义菜单打开的程序类型,如果设置为0的话,指的是打开的是桌面程序;设置为1的话,指的是打开的是web程序;一般与Path对应设置:为0时,path的值为桌面程序的物理路径;为1时,path的值为web程序的Url地址。

    Smallicon:为自定义菜单的图标文件路径。

    ExtensibleMenu:为自定义菜单显示的位置,在上述注册文件这个值为“MainWindowActions”,指的是在主面板的菜单列表中显示。还有其他的值分别为MainWindowRightClick;ConversationWindowActions;ConversationWindowRightClick;ContactCardMenu,如果未定义 ExtensibleMenu,则使用 MainWindowRightClick 和 ConversationWindowActions 的默认值。

    参考的资料:http://technet.microsoft.com/zh-cn/library/gg412788.aspx

    注意,这个微软的官方资料并不十分准确(2013年6月5日),它设置的注册表位置为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Lync\CustomCommands ,测试过后发现没有效果,实际上是应该设置HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Lync\SessionManager\Apps这个位置(win7 64位)或 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Lync\SessionManager\Apps这个位置(win8)。

    我的lync2013的版本是

    image

    是Office2013套件中的lync,打过了lync的一个补丁,地址http://support.microsoft.com/kb/2812461

    经过测试,lync Basic 2013打过上述补丁的话,也是可以正常显示的。

     
     

  • 相关阅读:
    MLE
    AHOI/HNOI2018道路
    AHOI/HNOI2018排列
    推式子
    AHOI/HNOI2018游戏
    ! BJOI2018治疗之雨
    BJOI2018链上二次求和
    BJOI2018双人猜数游戏
    ! BJOI2018染色
    BJOI2018二进制
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3120758.html
Copyright © 2020-2023  润新知