进阶之路—WCF的布置以及调用控制台篇

上一篇文章,我讲解了 WCF 服务布置在 IIS 上面并被简单实用的例子,这一篇文章,我就来说一说 WCF 的强大之处—多宿主制。

在说 WCF 之前,我们下来聊一聊当下项目中使用较多的 SOA 方式都有什么,并讨论一下他们的优缺点。

Web Service:可以说是比较古老的方式,但是即使在当下这个技术层出不穷的时代,仍然保留着一席之地,这说明 Web Service 还是有一定的可取之处的,其缺点固然很直接,那就是 Web Service 走的 Soap 协议,其生成的文件十分庞大,举图说明:

很好理解吧

这也是Web Service令人发指的地方,特别是在当前移动互联火爆的年代,生成一个 Soap 格式的文件需要的流量要多很多,所以这也是其逐渐走向没落的主要原因,但是我们不能否认他的优点,那就是学习成本低,简单易用,上手快,这对一些小型公司来讲无疑是具有致命的吸引力的。

WCF:这种技术是在 .net 3.0 时代出现的,可以说是标志性的,其功能强大,不仅可以支持多种协议( http、tcp... ),还可以托管在多种应用程序上,而且相对来说更安全,对用户权限验证方面的功能做的更好,但是,功能越强大,学习成本越高,很多人不怎么喜欢 WCF 这种技术,因为它的配置文件会让很多程序样抓狂(我也是这样)。但是不得不说 WCF 的功能是真的强大。

WebAPI:简单的来讲,WebAPI 这项技术是现如今比较火爆的了,优点就在于与手机端的交互,其生成的是 json 格式的文件,体积小,轻便(有人做过测试,同样的字符串用不同的格式返回所占的体积大小各不相同,最大的是 Soap 格式的,其次是 Xml ,最小的是二进制的,json 比二进制稍微大一点),这样会为手机端用户剩下不少流量。只支持 http 协议,发送的请求也是 http 请求。也可以支持多宿主托管。

从上面的分析我们不难看出,在功能方面来讲 WCF 可以说是最强大的,但是学习周期和成本来说比较高,所以很多公司对其嗤之以鼻,但是还是不能妨碍其功能强大的特点。接下来我们就来讲一下 WCF 是如何在控制台程序上面发布服务并被调用的。

还是之前的那个程序:接下来我导入一些别人写好的例子(原谅我是个懒比,这例子代码太多了,还有配置文件,我本来也是想手写的,但是很累,所以真的不怪那么多人不喜欢 WCF 配置文件是真的烦)


导入的类库以及控制台程序

看结构目录很好理解, Hosting 是控制台程序, Interface 是接口文件 ,Model 是一个模型, Service 里边封装了一些远程调用的方法即 IIS 篇中的 .svc 文件。接下来我们来看一看难点:

难点

上图是我们配置之后的固定格式,说实话,这些代码是什么意思真的不好理解,看的我是云里雾里的,,但既然是固定写法,,我们暂时先不去深究,喜欢研究的同学可以私下研究研究。既然称之为难点,对于新手来讲,即使是固定写法,在你不了解的情况下,想要写出来也是很难的,所以我们可以使用另一种方法:

WCF服务配置编辑器

可以使用这种可视化界面来编辑 WCF 的配置文件,然后自动填充到配置文件中去

自动填充的配置文件

之后,后台代码就会变成:

简化之后的代码

是不是有一种拨开云雾见青天的爽快感。从上图的代码中我们可以发现,实际之前的一大堆代码最后就是简化成了两句代码,也就是说之前的那一堆代码很多都是可以写到配置文件里边的,这样学习起来也不算特别困难。

我们可以试一下,以管理员的身份运行程序,这一点是必须要记住的,建议各位在打开 vs2017 的时候就以管理员的身份运行,这样也方便一些。

控制台输出界面

接下来我们用另一个测试类调用一下,看看是否能成功调用到部署在控制台程序上边的服务。

成功找到部署在控制台的服务

需要注意的是想要找到部署在控制台的服务跟找到部署在 IIS 的服务是一样的,需要打开部署的程序的,也就是让控制台程序运行,不然会出现主机连接不积极的报错。至于地址就是在配置文件里边的 address 节点。

引用之后就很简单了,跟部署在 IIS 的操作基本都是一样的,

远程调用一个方法

从上图中我们看到,远程调用方法已经可以使用了,从结果上来讲我们已经成功了,但是我们观看一下被调用的代码发现了另一个问题

被远程调用的方法

在这个方法所生成的实体中我们看到是有 Id=13 这一条的,但是我们在远程获取到的结果中却没有看到 Id 这一属性,这就要说到我们在 Model 中定义属性的时候所添加的另一个特性契约了。

Model中的实体类

我们发现,Id属性的 [ DataMember ] 特性被注释之后,就无法从远程获取到了这个属性,包括我之前说过的 [ OperationContract ]特性,前者是某属性如果不被标识[ DataMember ]特性就不会被远程获取,后者是某方法如果不被标识[ OperationContract ]特性就不会被远程获取,这样大大的提高了安全性。

以上就是 WCF 部署在控制台上的简单调用,,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335