您的位置:首页 > 其它

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

2013-06-06 11:19 417 查看

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

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

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

Interface的定义:





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





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

方法的实现如下:





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

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





参数说明:

AspNetCompatibilityEnabled:AppDomain(应用程序域)如果开启ASP.NET的兼容模式,则为true.

HelpEnabled:如果 WCF帮助页启用 则true

对于配置文件的管理,我个人倾向于把Config文件夹统一放到一个根目录,然后在服务器mklink.不明白的google。


然后在Global.asax中添加:




嗯,只是一个路由映射而已。

然后在配置文件中添加映射的配置:




如想对每个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下输出:





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

lync2013添加自定义菜单

lync2013添加自定义菜单

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





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

下面是注册表文件,将下列注册表文件导入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"


如图:





如果是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的版本是





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

经过测试,lync Basic 2013打过上述补丁的话,也是可以正常显示的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: