• WCF 入门(23,24)


    前言

    重新找了工作,过去的事情就过去好了。有些不一样的经历也不是说一定就是坏事。

    第24集 在控制台应用程序中自托管WCF服务 Self hosting a wcf service in console application

    第23集比较简短,总共2分钟不到的样子,介绍了WCF托管的几种方式,其实就是如何把这个服务架起来,可以让外部调用。总共有4中。

    方式 描述
    self-hosting(自托管) 用控制台或者winform的应用程序来托管
    windows 服务 用windows 服务的方式
    IIS 可以用IIS服务来托管服务,只支持http 协议的Binding
    Windows Activation Service(WAS) 用带WAS的IIS 7 来托管服务,支持所有的Binding

    24集先讲一下第一种,self-hosting

    所谓的self-hosting就是把服务交给 .net的托管代码程序(比如console application,winform application,WPF application)来host的方式。有点拗口,反正只要看服务是架在哪里的就行了。

    self-hosting 的方式有几个优点:

    1. 容易架设。配合VS,只要编辑一下app.config就可以很容易跑起来。

    2. 容易调试。没有必要去附加什么其他的进程(比如iis 的w3wp)。

    3. 支持所有的传输协议。

    4. 生命周期可控。通过调用Open() 和 Close()方法可以很方便的控制服务的状态。

    有优点就一定有缺点:

    1. 只有在service host running了之后才能调用service。

    2. 不能像iis被动激活。

    3. 要自己写一些代码来控制。

    下面来实践一下。

    其实也已经这么多集了,大致也都明白了,这集的方式稍微有点不同,用了一下vs自带的WCF config编辑器,而不是以前纯粹手写的xml代码。

    1. 新建一个空的解决方案,添加一个类库,删除自动生成.cs 文件,再添加一个wcf项目,取名HelloService。

    QQ截图20151121115327

    2. 自动的,该项目会添加一个接口文件,一个类文件,一个app.config文件。 config文件暂时先不管。

    QQ截图20151121115716

    3. 简单的修改一下IHelloService。

        [ServiceContract]
        public interface IHelloService
        {
            [OperationContract]
            string GetMessage(string name);
        }

    然后是接口实现部分。

        public class HelloService : IHelloService
        {
            public string GetMessage(string name)
            {
                return "Hello " + name;
            }
        }

    然后编译一下,让他生成dll,后面会用到。

    4. 接下去给该解决方案添加一个console application。并且设置为启动项。

    QQ截图20151121120150

    5. 添加对上面HelloService的引用。再添加一个app.config文件。

    到这一步之后以前的做法就copy 第2步生成的config文件内容,paste到这里面,然后稍微手动修改一下。再删掉原来项目中的config文件。这次不一样。

    6. 右击host下面的App.config,有个编辑WCF配置的选项。

    QQ截图20151121120642

    7. 首先要来配置一个service所需要的ABC三个属性。

    QQ截图20151121121051

    选中servcies,点击Create a New Service,然后Browse,定位到第3步生成的dll。

    8. Next。我们就一个Contract,所以继续Next。

    QQ截图20151121121303

    9. 选择需要的Binding。

    QQ截图20151121121407 

    10.  第一个比较简单,第二个看意思高级一点,什么分布式啊, 可靠性啊,双向通信什么的。反正我也不懂。。。

    QQ截图20151121121626

    11. 继续Next。写地址了。

    QQ截图20151121121817

    这里支持相对地址或者绝对地址。这里用一下相对地址,因为后面我们还要配一下BaseAddress。留个空吧。 继续Next,就可以Finish了。

    12. 添加BaseAddress

    QQ截图20151121134226

    13. 启用一下serviceMetadata让客户端能自己生成代理类。

    QQ截图20151121155902

    14. 添加完之后双击这个serviceMetadata,设置HttpGetEnabled = true

    QQ截图20151121155934

    15. 然后把这个behavior和我们的service 关联起来。

    QQ截图20151121160159

    保存一下就可以关闭了。

    然后check一下host下面的App.config 文件内容。基本上该有的都有了。

    然后是写个测试的application,winform或者console都可以,没有问题。

    这次讲解了一下4个host WCF service的方式的第一种 self-host,以及他的优缺点。

    Thank you!

  • 相关阅读:
    编译安装mysql-5.6.36
    MYSQL数据库基础篇
    MYSQL数据库初学者必看
    Centos7下安装与卸载Jdk1.8
    Linux与Window之间的上传与下载
    MySQL主从搭建
    zabbix通过插件percona进行监控MySQL
    suse系统关闭防火墙
    编译安装zabbix3.0
    centos7安装tomcat
  • 原文地址:https://www.cnblogs.com/sheldon-lou/p/4983939.html
Copyright © 2020-2023  润新知