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。
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!
WCF 入门(23,24)的更多相关文章
- 【WCF】无废话WCF入门教程
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- 无废话WCF入门教程一[什么是WCF]
http://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html wcf技术交流,同学习共进步,欢迎加群: 群号:3981831 ...
- WCF入门教程一[什么是WCF]
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- WCF入门教程[WCF基本应用]
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- WCF入门教程系列一
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]
WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...
- 【转】WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- 【转】WCF入门教程一[什么是WCF]
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- 【ASP.NET 基础】WCF入门教程一(什么是WCF)?
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- WCF入门
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
随机推荐
- [嵌入式开发板]iTOP-4412以模块的方式编译驱动
本文转自迅为:http://www.topeetboard.com 大家好,本章节我们将向大家讲解如何在 linux 下实现以模块的方式加载内核驱动.我们以内核里面蜂鸣器的 驱动为例来讲解. 1)首先 ...
- [转]IOS上路_01-Win7+VMWare9+MacOSX10.8+XCode4.6.3
本文转自:http://my.oschina.net/vigiles/blog/141689 目录[-] 1. 资源准备: 1)实体机: 2)VMWare9: 3)VM for MacOS 补丁: 4 ...
- POJ 1364 King --差分约束第一题
题意:求给定的一组不等式是否有解,不等式要么是:SUM(Xi) (a<=i<=b) > k (1) 要么是 SUM(Xi) (a<=i<=b) < k (2) 分析 ...
- 数据结构Java实现04----循环链表、仿真链表
单向循环链表 双向循环链表 仿真链表 一.单向循环链表: 1.概念: 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形 ...
- Unity 2D Sprite Lighting
2D游戏中也可以使用灯光?这真是一个好消息,接下来,我将为大家写一下教程 操作步骤 1.创建一个Materilas,修改Shader为 2.创建一个Sprite(使用黑色的图片) 3.创建一个Poin ...
- C# using 三种使用方式 C#中托管与非托管 C#托管资源和非托管资源区别
1.using指令.using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到. ...
- 转: 最值得阅读学习的 10 个 C 语言开源项目代码
from: http://www.iteye.com/news/29665 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同 ...
- Pro Git(中文版)
Pro Git(中文版) 返回 Git @ OSC 目录 1.起步 1.1 关于版本控制 1.2 Git 简史 1.3 Git 基础 1.4 安装 Git 1.5 初次运行 Git 前的配置 1.6 ...
- Nginx采用https加密访问后出现的问题
线上的一个网站运行了一段时间,应领导要求,将其访问方式更改为https加密方式.更改为https后,网站访问正常,但网站注册功能不能正常使用了! 经过排查,是nginx配置里结合php部分漏洞了一个参 ...
- gridpanel分组汇总
[ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总 2015-05-31 86 本文地址:http://blog.csdn.net/sushengmi ...