博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wcf系列学习5天速成——第五天 服务托管
阅读量:7296 次
发布时间:2019-06-30

本文共 3902 字,大约阅读时间需要 13 分钟。

原文:

今天是系列的终结篇,当然要分享一下wcf的托管方面的知识。

 

wcf中托管服务一般有一下四种:

 

Console寄宿:             利于开发调试,但不是生产环境中的最佳实践。

winform寄宿:             方便与用户进行交互,用户想开就开,想关就关,但如果机器重启了,不得不自己手动开一下,危险+麻烦。

IIS寄宿:                    此寄宿在实战项目中得到了广泛的应用。

                                  好处有:随系统启动和停止。

                                             iis有大量的管理策略对其进行管理。

                                            即想利用wcf的功能,还想访问asp.net的功能。

Window Service 寄宿: 这个寄宿在实战中也是广泛运用的,同时也是随系统开启或者停止。

 

好了,前两种寄宿相信大家都会,在这里我就不介绍了,我主要介绍后两种寄宿。

 

IIS寄宿:  首先要知道寄宿于iis的3个条件:  应用程序域(相当于serviceHost)+svc文件+config的配置节

             

             很感谢vs模板,里面已经包含用于寄宿于iis的模板,ok,上图:

 下面的流程就是:

     点击确定 ——>  鼠标右击wcf服务项目——>点击“发布”——>在“发布方法”中选择“文件部署”——>在"目标位置”选择“保存位置”——>点击“发布”按钮

     

 

然后我们打开本地的IIS,新建网站,修改端口为1111,然后点击确定按钮,截图如下:

 

 

前面我们已经说过寄宿在iis中的三个条件,

               首先看“应用程序域”:默认新建的网站在应用程序域中的.net framework的版本是2.0,

               所以我们必须修改为4.0版本。

      截图如下:

     

 

            然后我们看一下"svc文件": iis寄宿有一个特点就是不用指定endpoint中的是address,因为svc文件的地址就是“endpoint”的地址,

    也就是说如果我想预览则需要在url中输入此文件地址。

            然后我们看一下” "里面的元数据,发现binding是“basicHttpBinding”,也就是说如果

   想改变这个低端的binding,就必须修改三个条件中的最后的一个。

         截图如下:

         

                       

       最后看一下“config文件”,模板给我们生成的文件代码如下:

     

1 
2
3 4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 24

     也就是说啥也没有,要把binding改成wsHttpBinding,增加终结点即可:

      

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
28 29

 

  最后就是客户端调用:

 

 

window server寄宿:

     要实现window server寄宿,也很感谢vs给我们提供了“window 服务”模板。

     步骤如下:  “文件”->“新建“—>“项目”->"wcf服务库"模板—>“点击确定”—>右键服务库项目添加“新建项”—>找到"window服务"—>"点击添加"。

                     为了方便我们将“WcfServiceLibrary1”改成Console应用程序,然后新建一个Main入口。

    

  然后我们点击上面的“单击此处切换到代码视图”按钮,进入到代码视图,

  然后我们就可以在里面的"OnStart"和“OnStop”方法中添加代码。

  

1 using System;  2 using System.Collections.Generic;  3 using System.ComponentModel;  4 using System.Data;  5 using System.Diagnostics;  6 using System.Linq;  7 using System.ServiceProcess;  8 using System.Text;  9 using System.ServiceModel; 10 11 namespace WcfServiceLibrary1 12 {
13 partial class Service2 : ServiceBase 14 {
15 public Service2() 16 {
17 InitializeComponent(); 18 } 19 20 ServiceHost host; 21 22 protected override void OnStart(string[] args) 23 {
24 // TODO: 在此处添加代码以启动服务。 25 host = new ServiceHost(typeof(Service1)); 26 27 host.Open(); 28 } 29 30 protected override void OnStop() 31 {
32 // TODO: 在此处添加代码以执行停止服务所需的关闭操作。 33 host.Close(); 34 } 35 } 36 }

 然后我们在“设计界面” 点击右键,找到”添加安装程序“,点击即可。

 

 

添加完成后会出现”servceProcessInstaller1"和“servcieInstaller1”的组件。

   右击“serviceProcessInstaller1”,打开属性窗口,修改Account为LocalSystem;

   

 

然后 右击“servcieInstaller1”组件,打开属性窗口

        修改ServcieName为:MYServiceHost,也就是定义我的服务名。

        修改StartType为:Automatic。

        

 

最后一步就是将exe注册到window server中:

1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.ServiceProcess;  6  7 namespace WcfServiceLibrary1  8 {
9 public class Program 10 {
11 public static void Main() 12 {
13 ServiceBase.Run(new Service2()); 14 } 15 } 16 }

好了,现在我们可以编译项目准备安装部署了,vs给我们提供了一个InstallUtil.exe工具,

                这个工具也就是真正的把我们的exe程序送到window server中。

 

打开cmd,要做的两件事情就是正确的找到“InstallUtil.exe“ 和我们的”WcfServiceLibrary1.exe“

 

ok,安装完成,现在做的就是测试工作。

看, 快看,我找到了我的window server 服务。

 

开启一下服务,然后预览一下wcf的address,看看是否真的启动了。

哈哈,真的可以了,window service 寄宿大功告成。

 

至此,wcf5天速成系列也就圆满结束了,最后感谢一下一直关注本系列的朋友。祝你们wcf学习更上一层楼。

 

转载地址:http://gawnm.baihongyu.com/

你可能感兴趣的文章
LeetCode - 9. Palindrome Number
查看>>
IOS的 new Date()格式化问题
查看>>
sharepoint webpart 获取文档库下的所有文件夹名
查看>>
java数据结构和算法--------第六章
查看>>
关于php如何连贯操作类方法(以数据库为例)
查看>>
25th SEP, 要好好的走下去
查看>>
BZOJ4822[Cqoi2017]老C的任务——树状数组(二维数点)
查看>>
BZOJ1299[LLH邀请赛]巧克力棒——Nim游戏+搜索
查看>>
未能为 SSL/TLS 安全通道建立信任的解决办法
查看>>
cmake是什么
查看>>
使用MASM10(变量的使用)- Win32汇编语言018
查看>>
【Docker学习笔记】----基于centos 7 的Docker安装
查看>>
Android笔记之OnLongClickListener
查看>>
Java客户端:调用EyeKey HTTP接口进行人脸对比
查看>>
SQL之分区函数
查看>>
创业公司如何实施敏捷开发
查看>>
Django使用AJAX调用自己写的API接口
查看>>
数据科学求职准备
查看>>
Wireshark抓包工具使用教程以及常用抓包规则
查看>>
fedora16下更改网卡名字
查看>>