• 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!

  • 相关阅读:
    PHP 使用 GET 传递数组变量
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 二进制数数
    Java实现 蓝桥杯 算法训练 二进制数数
    Java实现 蓝桥杯 算法训练 二进制数数
  • 原文地址:https://www.cnblogs.com/sheldon-lou/p/4983939.html
Copyright © 2020-2023  润新知