WCF学习(3) 用Windows服务发布WCF服务
来源:互联网 发布:jar包日志 linux 输出 编辑:程序博客网 时间:2024/06/08 04:05
WCF学习(3) 用Windows服务寄宿WCF服务
WCF服务要变为活动状态,必须承载于创建它并控制它的上下文和生存期的运行时环境中。WCF 提供了统一编程模型,用于生成面向服务的应用程序。 此编程模型保持一致且独立于部署服务的运行时环境。目前为止承载WCF服务的方式有:
托管应用程序中的自承载
WCF 服务可以承载于任何托管应用程序中。两个常见做法:在控制台应用程序内运行的 WCF 服务;以及丰富客户端应用程序,如基于 Windows Presentation Foundation (WPF) 或 Windows 窗体 (WinForms) 的应用程序
托管 Windows 服务
注册 WCF 服务作为托管 Windows 服务承载于其中的应用程序域 (AppDomain),以便服务的进程生存期由 Windows 服务的服务控制管理器 (SCM) 控制
Internet 信息服务 (IIS)
IIS 宿主选项与 ASP.NET 集成在一起,并使用这些技术提供的功能,如进程回收、空闲关闭、进程状况监视和基于消息的激活
Windows 进程激活服务 (WAS)
Windows 进程激活服务 (WAS) 是在 Windows Server 2008 上也可用的 Windows Vista 的新进程激活机制。 它保留了熟悉的 IIS 6.0 进程模型(应用程序池和基于消息的进程激活)和承载功能(如快速失败保护、运行状况监视和回收),但是它从激活体系结构中移除了对 HTTP 的依赖。IIS 7.0 使用 WAS 通过 HTTP 完成基于消息的激活。 其他 WCF 组件也插入了 WAS,以通过 WCF 支持的其他协议(如 TCP、MSMQ 和命名管道)提供基于消息的激活。 这样,使用通信协议的应用程序就可以使用 IIS 功能(如进程回收、快速失败保护)和仅对基于 HTTP 的应用程序可用的通用配置系统
宿主环境比较
用Windows服务承载WCF服务实例
Demo结构
Windows服务实现步骤
可以通过VS直接添加Windows服务项目,集成了以下三个步骤,如下图
- 从 ServiceBase 服务协定接口继承,将该服务同时实现为 Windows 服务和 WCF 服务。
- 然后创建 ServiceHost,在被重写的 OnStart(String[]) 方法内打开它并在被重写的 OnStop() 方法内关闭它。
- 还必须实现从 Installer 继承的安装程序类,以允许 Installutil.exe 工具将程序安装为 Windows 服务。
服务安装
直接用命令行
批处理命令
@echo offset /p var=是否要安装WCF服务(Y/N):if "%var%" == "y" (goto uninstall) else (goto batexit):installcopy C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe InstallUtil.exe /Ycall InstallUtil.exe WindowsService.execall sc start "WCFService"pause:batexitexit
服务安装
@echo offset /p var=是否要卸载 WCF服务(Y/N):if "%var%" == "y" (goto uninstall) else (goto batexit):uninstallcall sc stop "WCFService"call sc delete "WCFService"pause:batexitexit
服务卸载
服务安装成功之后
Windows服务
元数据
总结
windows服务发布成功之后,创建客户端去调服务遇到了问题,直接返回:调用目标发生异常,检查服务端代码,用自寄宿的方式调用没有问题,猜测是服务启动有问题,利用附加到进程的方式,将代码附加到所发布的Windows服务上,调试发现客户端访问WCF过程遇到问题:缺少某个依赖项目,仔细检查发现是WCF服务的一些配置和依赖项也要引用添加到Windows服务的目录下,修改成功之后,调用正常返回结果
参考
1. 如何在托管 Windows 服务中承载 WCF 服务
2. 如何承载WCF服务
- WCF学习(3) 用Windows服务发布WCF服务
- Windows服务发布WCF服务
- 使用Windows服务发布WCF服务
- 使用Windows服务发布WCF服务
- WCF 一步一步发布WCF服务到Windows 服务
- WCF学习-构建WCF服务(3)
- wcf 注册windows服务
- Windows服务寄宿WCF服务
- WCF系列:使用IIS发布WCF服务
- WCF 一步一步 发布 WCF服务 到 IIS
- 使用IIS发布WCF服务
- 使用IIS发布WCF服务
- 使用IIS发布WCF服务
- IIS发布WCF服务[转载]
- WCF---服务发布的步骤
- WCF服务创建与发布
- 发布wcf服务元数据
- WCF开发实战系列四:使用Windows服务发布WCF服务
- 在Windows搭建基于selenium+python的自动化测试环境
- 线性表(顺序表与链表)的实现
- 从CSV文件中读取数据,使用逗号','分割问题
- 接口
- 从资产端直接下手,精准把控车贷标的!
- WCF学习(3) 用Windows服务发布WCF服务
- awk内置函数(split/substr/length/gsub)
- Django源码分析2:本地运行runserver分析
- Linux 2>&1 >&- 这种的含义
- SDUT-1274-->面向对象程序设计上机练习十二(运算符重载)
- Xtend调用Scilab
- Android自定义view-玩转字体变色
- javax.swing类库找不到
- 我们压缩了一批深度学习进阶“传送门”给小白