我们都知道调用WCF直接在Service References中引用可以远程调用的WCF Url就行了。

但是我们想过没,在Development环境中可以这样做,但是QA、UAT、Production上我们怎么做呢?

WCF的通信方式主要有Http和Tcp,这次我们用Http。

好了,接下来老赵给你一个ideal,不算good。

1.新建一个WCF Service —‘BeautifulGirls.svc ',定义一个方法GetBeautifulGirlsDetails(string phoneNumber);

实现功能就是通过手机号获取‘美女’的详细信息。

2.在新建一个solution,引用wcf url,会自动生成一段References code和在web.config中添加一段serviceModel code,如下:

  <system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IBeautifulGirls" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:61909/BeautifulGirls.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IBeautifulGirls"
contract="BeautifulGirls.IBeautifulGirls" name="BasicHttpBinding_IBeautifulGirls" />
</client>
</system.serviceModel>

其中的原理我就不多说了,现在我们需要做的是将那段自动生成的References code放到一个class -BeautifulGirlsDefinition.cs中。

3.在appsetting中添加如下配置:

    <!-- Real name check -->
<add key="BeautifulGirls_EndPointName" value="BasicHttpBinding_IBeautifulGirls"/>
<add key="BeautifulGirlsUrl" env="Development" value="http://hddcwiweb.dev:61909/BeautifulGirls.svc"/>
<add key="BeautifulGirlsUrl" env="QA" value="http://hddcwiweb.qa:61909/BeautifulGirls.svc"/>
<add key="BeautifulGirlsUrl" env="UAT" value="http://hddcwiweb.uat:61909/BeautifulGirls.svc"/>
<add key="BeautifulGirlsUrl" env="Production" value="http://hddcwiweb.prod:61909/BeautifulGirls.svc""/>

4.读取配置文件中endpoint name和url。

 var url=GetConfigvalue("BeautifulGirlsUrl");
var endpoint=GetConfigvalue("BeautifulGirls_EndPointName");
BeautifulGirlsClient client=new BeautifulGirlsClient(endpoint,url);
string jsonstr=client.GetBeautifulGirlsDetails("");

其实这里就是利用了

WCFClient(string endpointConfigurationName, string remoteAddress) :
base(endpointConfigurationName, remoteAddress)

 这个扩展方法,把不同环境的url配置到appsetting中,灵活利用。Over!下班。。。 

赵本山 教你如何在实战项目中使用WCF的更多相关文章

  1. 教你如何在实战项目中使用WCF

    我们都知道调用WCF直接在Service References中引用可以远程调用的WCF Url就行了. 但是我们想过没,在Development环境中可以这样做,但是QA.UAT.Productio ...

  2. 个人项目中的WCF使用

    今天闲着无事,给大家分享一下我的一个项目中WCF的使用.我这项目使用的是Silverlight,至于其他类型的使用方法也是一样的. 1.建立一个Silverlight带Web项目的解决方案. 2.在w ...

  3. 项目中使用WCF替换asmx Web service总结

    以前项目解决方案中,用http协议的asmx Web service作服务器数据访问入口,在SoapHeader中写入用户名和加盐密码进行身份认证. http asmx服务是明文传输,传输过程中数据很 ...

  4. 实战项目中Java heap space错误的解决

    部标GPS通讯系统在上线之后,经过不断调试,终于稳定运行一段时间,后来又遇到了Java heap space错误异常!日志如下: 说明系统中有未释放的对象.如何找出这些未释放对象以及监控JVM堆内存, ...

  5. IE6滤镜在实战测试中能让父层里面的子元素产生阴影

    1.写法一: <div class="cornerbg">    <p class="title-file">------</p& ...

  6. ionic 项目中添加modal的步骤流程

    1.首先在templates文件夹下面定义一个新页面,xxx.html,template文件夹在空项目里面是没有的,需要手动添加一个,放在WWW文件夹下面. <ion-modal-view> ...

  7. 我是如何在公司项目中使用ESLint来提升代码质量的

    ESLint:你认识我吗 ESLint是一个语法规则和代码风格的检查工具. 和学习所有编程语言一样,想要入门ESLint,首先要去它的官网看看:https://eslint.org/. ESLint的 ...

  8. go语言实战教程:Redis实战项目应用

    项目Redis配置 在实战项目中使用Redis功能,首先需要进行Redis配置.本实战项目中,关与Redis的配置项包含:连接类型.地址.端口.公共前缀.以上配置项被定义包含在Iris框架的redis ...

  9. go语言实战教程:实战项目资源导入和项目框架搭建

    从本节内容开始,我们将利用我们所学习的Iris框架的相关知识,进行实战项目开发. 实战项目框架搭建 我们的实战项目是使用Iris框架开发一个关于本地服务平台的后台管理平台.平台中可以管理用户.商品.商 ...

随机推荐

  1. Viso设置背景

    文件 > 形状 > 其它Visio方案 > 背景

  2. TCMalloc

    一. 原理 tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配.释放内存造成的性能损耗,并且有效地控制内存碎片.glibc中的内存分配器是ptmalloc ...

  3. Android离线缓存

    android做到一定程度,需要考虑缓存的问题,不信可以掏出手机看看淘宝等一些app是否无网的情况下还可以浏览,不过大部分app并没有考虑到这些问题,解决Android的缓存有哪些方法呢 1.IO流读 ...

  4. 关于Vue.js 使用v-cloak后仍显示变量的解决方法

    v-cloak   这个指令是防止页面加载时出现 vuejs 的变量名而设计的,但有时候添加了这个指令仍会显示变量,这是怎么回事呢?. v-cloak 用法: HTML代码: <div v-cl ...

  5. 使SSH不用输入密码

    1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A上运 ...

  6. secache 详解

    介绍下secache缓存,它是属于文件缓存.简单来说,文件缓存就是把缓存数据存储到文件系统 (硬盘)中了,比 内存缓存要慢一些,但是也是有一点优点的. 1.磁盘容量大, 2保存到硬盘,说明 掉电后数据 ...

  7. C++ 头文件系列(unordered_map、unordered_set)

    简介 很明显,这两个头文件分别是map.set头文件对应的unordered版本. 所以它们有一个重要的性质就是: 乱序 如何乱序 这个unorder暗示着,这两个头文件中类的底层实现----Hash ...

  8. Vmware 中安装 Ubuntu Server (或者ubuntu 以文本界面登陆时) 分辨率无法全屏问题

    Vmware 中安装 Ubuntu Server/Ubuntu 分辨率,无法全屏问题 需要更改grub设置 在终端或者文本界面按下列步骤进行设置: 第一步: 输入命令 sudo vim /etc/de ...

  9. ubuntu 更新引导命令

    sudo update-grub 运行结果: Generating grub configuration file ...Warning: Setting GRUB_TIMEOUT to a non- ...

  10. HTML5 & CSS3 初学者指南(4) – Canvas使用

    介绍 传统的HTML主要用于文本的创建,可以通过<img>标签插入图像,动画的实现则需要第三方插件.在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力.HTML5的到来,带来了新 ...