前言

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

第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。

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

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。并且设置为启动项。

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

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

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

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

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

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

9. 选择需要的Binding。

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

11. 继续Next。写地址了。

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

12. 添加BaseAddress

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

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

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

保存一下就可以关闭了。

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

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

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

Thank you!

转载于:https://www.cnblogs.com/sheldon-lou/p/4983939.html

WCF 入门(23,24)相关推荐

  1. [WCF编程]1.WCF入门示例

    一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...

  2. SAP PM入门系列24 - IK07 Display Measuring Points

    SAP PM入门系列24 - IK07 Display Measuring Points SAP PM的基础报表里,对于计量点(Measuring Points)这个技术对象,也提供了标准的查询报表. ...

  3. WCF 入门之旅(4): 怎样用客户端调用WCF服务

    WCF 入门之旅(4): 怎样用客户端调用WCF服务 前面的demo已经能够跑起来,现在开始考虑用客户端来测试所写的应用了,首先用个普通的应用程序来调用所写的wcf服务吧.其实最后运行wcf服务后的页 ...

  4. (23/24) webpack实战技巧:如何在webpack环境中使用Json

    (23/24) webpack实战技巧:如何在webpack环境中使用Json 在webpack1或者webpack2版本中,若想在webpack环境中加载Json文件,则需要加载一个json-loa ...

  5. WCF入门的了解准备工作

    了解WCF, 及WCF入门需要掌握哪里基本概念? 1.准备工作 >1.1 . XML >1.2 . Web Service >1.3 . 远程处理 (RPC) >1.4.  消 ...

  6. 韩顺平循序渐进学java 第21.22.23.24讲 集合

    21.1 引出问题 一个问题? 前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决? 请做一个公司职员薪水管理系统,要求完成如下功能: ...

  7. ardruino控制继电器_Arduino基础入门篇24—继电器控制

    继电器是一种电子控制器件,是用较小的电流去控制较大电流的一种"自动开关",通常应用于自动控制电路中起着自动调节.安全保护.转换电路等作用. 本篇介绍继电器的使用,通过串口发送命令来 ...

  8. 22.23.24.25.盒须图(boxplot)、棉棒图(Stem Plot; Lollipop plot)、极坐标图、雷达图(Radar Chart)

    22.盒须图(boxplot) 23.棉棒图(Stem Plot; Lollipop plot) 24.极坐标图 25.雷达图(Radar Chart) 22.盒须图(boxplot) 盒须图(也称为 ...

  9. 2017年3月6日 星期一 --出埃及记 Exodus 23:24

    2017年3月6日 星期一 --出埃及记 Exodus 23:24 Do not bow down before their gods or worship them or follow their ...

  10. C#-异步编程及WCF入门

    异步编程 异步代码在等待I/O请求响应的同时,可通过生成更多的线程,处理更多的请求 异步代码在等待I/O请求的同时,可生成UI交互线程,并通过将耗时的工作转移到其他CPU内核的方式,让UI的响应速度更 ...

最新文章

  1. 2022-2028年中国丝印硅胶行业市场深度分析及投资前景趋势报告
  2. Hyperledger Grid:一个用于分布式供应链解决方案的框架
  3. NAR:浙大陈云/马忠华团队揭示病原真菌组蛋白H3K27甲基化识别新机制
  4. R语言使用edit函数在Rsudio中生成数据编辑器(在windows中生成编辑器)、在编辑器中输出需要的数据生成最终的dataframe
  5. 学习笔记 ACCESS 延迟注入
  6. 项目经理怎么在两周内熟悉一个项目的业务?
  7. 抽象类和接口-手机小案例
  8. Java开发经典面试题分享,建议收藏
  9. docker centos node nginx
  10. 递归算法详细分析- C
  11. 自动化运维环境搭建过程
  12. pivottablejs|在Jupyter 中尽情使用数据透视表!
  13. jsp或java中前后台传值乱码解决
  14. 【温故而知新-Javascript】使用canvas元素(第一部分)
  15. oracle+生成+sql语句,Oracle使用SQL语句生成日历的实现方法
  16. spark 安装与使用 educoder
  17. 一行代码实现微信电脑多开
  18. Android 加壳App Demo
  19. kettle用命令行执行ktr和kjb
  20. MOSFET管应用总结

热门文章

  1. 快速排序的时间复杂度分析
  2. 任务切换的方法——《x86汇编语言:从实模式到保护模式》读书笔记37
  3. 四、Netty 实现心跳机制与断线重连
  4. 如何用Python写一个Package
  5. 日常生活 -- 嵌入式面试
  6. UNIX再学习 -- 静态库与共享库
  7. android Spinner点击事件处理
  8. Android PC投屏简单尝试- 自定义协议章(Socket+Bitmap)
  9. 【David Silver强化学习公开课】-7:Policy Gradient
  10. seo 伪原创_SEO干货——文章到底如何伪原创?