WCF是微软官方推出的一个基于服务的整合框架,它整合了以前的Web Service、MSMQ、Remoting等通信技术,通过灵活的配置,让服务编程更加容易、可扩展。这篇文章主要目的就是带领大家从开发到测试到部署到调用WCF服务应用,让大家对其有个整体上的了解。
一、建立一个WCF应用程序
我们给这个WCF应用程序起名为WeatherWcfService,并添加天气预报的WebService引用。
我们选择http://www.webxml.com.cn/zh_cn/weather_icon.aspx 这个地址的Web服务作为我们的天气预报的Web服务的提供者。
复制Endpoint中的url地址。
如图所示,添加服务引用。
将web服务的url粘贴到地址栏,点击转到按钮,等待服务加载后点击确定按钮。
通过该项目的Web.config配置文件可以看到多了以下配置。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="WeatherWSSoap" />
</basicHttpBinding>
<customBinding>
<binding name="WeatherWSSoap12">
<textMessageEncoding messageVersion="Soap12" />
<httpTransport />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"
binding="basicHttpBinding" bindingConfiguration="WeatherWSSoap"
contract="ServiceReference1.WeatherWSSoap" name="WeatherWSSoap" />
<endpoint address="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"
binding="customBinding" bindingConfiguration="WeatherWSSoap12"
contract="ServiceReference1.WeatherWSSoap" name="WeatherWSSoap12" />
</client>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
可以看到,WCF把服务的一些要素配置在config文件里,比如这里面有两个终结点(endpoint)以及各自的三要素(地址:address;绑定:binding;契约:contract)。
二、编写WCF服务端代码
根据提供天气预报Web服务的网站的文档说明,我们可以通过GetWeather方法获得天气预报信息。
首先在IService1.cs文件的IService1接口中添加契约。
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: 在此添加您的服务操作
[OperationContract]
string[] GetWeather(string cityName);
}
然后在Service1.svc文件中实现新添加的接口。
public string[] GetWeather(string cityName)
{
using (ChannelFactory<ServiceReference1.WeatherWSSoap> channelFactory = new ChannelFactory<ServiceReference1.WeatherWSSoap>("WeatherWSSoap"))
{
ServiceReference1.WeatherWSSoap service = channelFactory.CreateChannel();
using (service as IDisposable)
{
return service.getWeather(cityName, string.Empty);
}
}
}
这样一个提供天气预报的WCF服务就写好了,我们用测试工具测试一下。
三、WCF服务测试
微软官方为我们准备好了一个测试WCF服务的客户端工具,我们点击项目的svc文件,运行项目(Ctrl+F5),WCF测试工具会自动加载。
你也可以直接到VS的安装目录找到这个测试工具,比如我的目录为:D:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
双击GetWeather()方法,填入测试值,点击调用按钮即可。
会看到我们已经收到了想要的天气预报数据。
四、发布WCF服务到IIS
由于我使用的是IIS8.0版本。在用VS2012发布WCF项目到指定目录后,并不能直接浏览svc(服务),需要在IIS里面进行一些设置。
1、添加设置MIME类型
2、添加设置处理程序映射
配置好之后,在浏览器浏览一下这个WCF服务。我的URL为:http://192.168.0.2/wcf/Service1.svc,如果能正常打开,说明WCF服务已经在IIS寄宿成功。
五、编写调用这个WCF客户端代码
首先建立一个控制台项目。
其次添加服务的引用。跟上面WCF添加WebService服务引用一样,这里还是先添加服务引用,地址为:http://192.168.0.2/wcf/Service1.svc(这是我本地发布到IIS的WCF服务地址)。
然后我们在Main函数填入如下代码:
using (ChannelFactory<ServiceReference1.IService1> channelFactory = new ChannelFactory<ServiceReference1.IService1>("BasicHttpBinding_IService1"))
{
ServiceReference1.IService1 service = channelFactory.CreateChannel();
using (service as IDisposable)
{
string [] values = service.GetWeather("北京");
foreach (var item in values)
{
Console.WriteLine(item);
}
}
}
可以看到,我们通过客户端调用WCF服务,获得了互联网提供的WebService天气预报的服务。
读者可以自行进一步处理以上获得的数据,在Web或者App(IOS、Android、Windows Phone等)中提供一个天气预报查询的应用。天气预报的图标可以自行到网站上面下载。
分享到:
相关推荐
WCF SOA 面向服务编程
《WCF Service编程》专门阐述了某些设计决策背后的基本原理,对于那些文档稀缺、少人理解的SOA开发要点也着墨颇多。开发者和架构师们从本书中将不仅学到如何进行WCF编程,还能了解相关的设计指导原则、最佳实践和...
WCF4高级编程Professional.WCF.4.rar
WCF是Microsoft推出的在Windows操作系统下开发面向服务应用程序的统一平台,是革命性的技术平台。作为微软授予的“软件英杰”,本书作者Juval Lwy曾经参与了WCF的战略性设计,并与WCF的开发团队一同合作,因此本书...
WCF( Windows Communication Foundation ) 是 Microsoft 为构建面向服务的应用程序而提供的统一编程模型。借助这一模型,开发人员可以构建既能跨平台与现有投资集成又能与现有投资交互的安全、可靠和事务处理的...
WCF服务编程(第三版) SOA .NET C#
《WCF服务编程》随书源码,找了好久才找到的,分享下
深入探索wcf的每个主题,使你如虎添翼从而设计出可维护的,可扩展的,可重用的SOA应用程序
WCF是在微软Windows下开发面向服务应用程序(SOA)的统一平台,而《WCF编程(第2版)》则是介绍该项技术的权威指南和畅销书籍。《WCF编程(第2版)》被誉为WCF的最佳开发指南,提供了深入的技术剖析,而非死板的文档化描述...
课程简介:Windows Communication Foundation (WCF)是微软公司为构建面向服务的应用程序(SOA)所提供的消息平台。该平台随着Windows Vista操作系统,并且作为.NET Framework 3.0的一部分发布。WCF统一了组件与服务...
[奥莱理] WCF 服务编程 第1版 (英文版) [奥莱理] Programming WCF Services 1st Edition (E-Book) ☆ 图书概要:☆ Written by Microsoft software legend Juval Lowy, Programming WCF Services is the ...
对于WCF编程,我们不仅要知其然,更要知其所以然。本书正是基于这样的目的,它不仅能够帮助你掌握WCF,还能够让你成为一位优秀的软件工程师。 参考链接:http://www.oreilly.com.cn/book.php?bn=978-7-111-27890-0
1、让学员熟练掌握WCF的核心概念及相关编程技能,对WCF技术有一个全面的、深入的、系统的了解; 2、让学员对SOA架构设计的思想和方式具有初步的认识, 对后期我们将要学习的SOA架构有一个宏观的了解; 3、让...
WCF是微软为了搭建SOA 平台的杰作。 大家都知道WEB 服务、REMOTING 技术,他们各有所长,WEB 服务安全性欠佳, REMOTING 受端口的限制,不能跨平台,因此在特定的场合下很难发挥他们作用。 什么是WCF?字面上理解:...
[奥莱理] WCF 服务编程 第1版 (英文版) [奥莱理] Programming WCF Services 1st Edition ============================================================ [奥莱理] WCF 服务编程 第2版 (英文版) [奥莱理] ...
C# 3.0与.NET 3.5高级编程 SOA和WCF基础介绍.pdf
WCF从理论到实践,详细讲解了WCF的开发过程。