初识WCF之使用配置文件部署WCF应用程序

二月份的开头,小编依旧继续着项目开发之路,开始接触全新的知识,EF,WCF,MVC等,今天小编来简单的总结一下有关于WCF的基础知识,学习之前,小编自己给自己提了两个问题,WCF是什么?WCF能用来做什么?WCF具有哪些优点?带着这样的问题,小编开始进行了一番搜索,一下是小编整理的结果。

WCF是什么?

WCF(Windows Communication Foundation)是用于构建面向服务的应用程序的框架 ,是由微软发展的一组数据通信的应用程序开发接口。根据MSDN上的定义:WCF为.NetFramework提供了一个基础,使其能够编写代码,以在组件、应用程序、系统之间进行通信。WCF的设计遵循的是面向服务的原则。服务是指可以通过消息与之进行交互的一段代码。服务是被动的。它们等待传入消息之后才开始工作。客户端是发起者,客户端将消息发送给服务来请求工作。

WCF能用来做什么?

小编查阅了相关资料,形成了小编自己的对wcf能用来做什么的认识,也许不是很恰当,有不同意见的小伙伴可以相互交流讨论,说个小故事,long time ago,有一户人家,拥有一家小商店,靠卖些花卉过日子,日子不算富裕,但也是吃得饱,穿得暖,可是随着社会的飞速发展,竞争是如此激烈,为了生存,这家人不得不自己进货,把货堆到自己的房间内,如果顾客需要,他们有时还不得不给顾客送货,总而言之,他们将所有该干的活都干了,只为了能赚钱养家,这就是生活。再说我们的程序,一个web程序或者一个winform程序,简单模式的程序,我们通常都与那个花店的老板一样,把所有的功能都集中到这个程序里面,在简单的状况下,这很好。

花店生意越来越好,老板的资金慢慢雄厚了,她注意到了卖其他东西比花卉更赚钱,比如说家电、服装。于是,老板一口气又开了几家店。生意规模越来越大,钱也越赚越多,老板心花怒放。然而好景不长,亚洲金融风暴来袭,利润率急剧下降。老板忧心忡忡,既然外部开源不太可能,那就看看内部能不能节流了。老板考察一番,注意到,为了销售,每个店都配置了一个仓库,每个店都配置了一帮送货的人马,这,是不是太浪费了。于是,老板将所有的仓库撤销,成立了一个总仓库,不管是花卉,家店,服装,都可以存储到这个仓库。管理一个仓库的费用比管理N个仓库的费用显然是要少很多的。然后,每个店的送货人员都辞掉,另外成立一个运输公司,专门负责送货,不管是花卉还是家店亦或服装,装到纸箱后,她们都是一个样。经过这么一折腾,成本一下就降了下来,而且还便于管理了,真是一举两得,老板又绽放了笑容。再回到我们的程序上来,当程序涉及的范围越来越大时,也许就要考虑将服务分离出去。WCF是应对分布式开发的,就如花店老板,生意大了后,她就是个分布式的了,这边一家花卉店,那边一家服装店,他们之间有区别,卖的东西不同,也有共性,都是卖东西,不管是哪家店,他们都需要仓库,都需要送货。这时,你就可以单独成立公司,只提供这两种服务。如果写成程序,那么就如同你开发了一个运输的WCF,把这个服务放在服务器上,这样不管是谁,是Web程序也好,是Winform程序也好,只要接口对应,理解你的服务内容条款(服务契约),都可以要求你这个服务模块提供标准的服务。

    WCF的优点?

WCF是提供统一的,可用于建立安全、可靠的面向服务的应用的高效开发平台。WCF具有如下的优势:  

1、统一性

2、互操作性

3、安全与可信赖

4、兼容性

介绍完了wcf的一些基本知识以后,我们开始来实践一下,让理论知识在动手实践中牢牢掌握,小编简单来介绍一下如何使用配置文件部署WCF应用程序,在敲例子之前,先来简单介绍一个基本知识点服务三要素和配置服务概要。服务三要素,简单概括来说就是ABC,A--Adress在哪里,包含传输方式信息;B--Binding怎么实现,与地址的传输方式要匹配,C--Contract做什么,服务契约。好了接着,我们开始敲例子,打开VS建立项目,建立完成之后,如下图所示:

接着,我们来编写代码,首先我们来编写WCFServiceDemo中的接口,代码如下:

<span style="font-size:18px;"><span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.ServiceModel;
namespace WCFServiceDemo
{
    [ServiceContract]   //定义服务接口
    public interface IHelloService
    {
        [OperationContract]
        //返回当前服务器端的时间
        DateTime getDateTime();
        [OperationContract]
        //返回一组数据
        DataTable getUserInfo();
    }
}
</span></span>

WinformHello中的HelloService,代码如下所示:

<span style="font-size:18px;"><span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Threading.Tasks;
using WCFServiceDemo;

namespace WinformHello
{
    public class HelloService:WCFServiceDemo.IHelloService //实现接口
    {
        //获取服务端的系统时间
        public DateTime getDateTime()
        {
            return DateTime.Now;
        }

        //获取当前用户信息
        public System.Data.DataTable getUserInfo()
        {
            //创建连接对象
            string connstring = @"Data Source=.;Initial Catalog=newssystem;User ID=sa;pwd=123456";
            SqlConnection conn = new SqlConnection(connstring);
            SqlDataAdapter sda = new SqlDataAdapter("select * from category", conn);

            DataTable dt = new DataTable();
            sda.Fill(dt);//通过Fill方法将数据填充
            return dt;

        }
    }
}
</span></span>

接着就是我们的配置文件了,代码如下:

<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<system.serviceModel>
		<services>
			<service name="WinformHello.HelloService" behaviorConfiguration="TestBehavior">
				<host>
					<baseAddresses>
						<add baseAddress="http://localhost:8080/Hello"/>
			        </baseAddresses>
				</host>
				<endpoint address="" binding="basicHttpBinding" contract="WCFServiceDemo.IHelloService"></endpoint>

			</service>
		</services>

		<behaviors>
			<serviceBehaviors>
				<behavior name="TestBehavior">
					<serviceMetadata httpGetEnabled="true"/>
				</behavior>
			</serviceBehaviors>
	    </behaviors>
	</system.serviceModel>
</configuration></span></span>

运行效果如下:

注意,在运行这个程序的过程中有可能会出错,这个时候只需要,右击vs的快捷方式,以管理员方式运行即可,重新运行程序即可,成功加载。

小编寄语:该博文,小编主要简单的介绍了一下有关于wcf的一些基础知识,首先解决了三个基本问题,wcf是什么?用来干什么以及wcf的优点,最后使用配置文件部署了一个wcf的应用程序,由于wcf集合了几乎.NET Framework 所提供的通信方法,因此学习曲线比较陡峭,开发人员必须要针对各个部份的内涵做深入的了解,才能够操控 WCF
来开发应用程序。通信双方的沟通方式,由合约来订定。通信双方所遵循的通信方法,由协议绑定来订定。通信期间的安全性,由双方约定的安全性层次来决定。项目进行中,未完待续......

时间: 2024-08-08 01:10:37

初识WCF之使用配置文件部署WCF应用程序的相关文章

wcf之三(通过文件部署服务)

Wcf之三(通过配置文件部署服务) 简介: 上一节主要讲解了接口契约式编程,这与我们的wcf编程有什么联系呀?理解好前一节在后面学习中更容易理解.因为wcf就是契约式编程,服务器.客户端.服务器和客户端之间的契约. Wcf服务契约 服务契约描述了暴露给外部的类型(接口或类).服务所支持的操作.使用的消息交换模式和消息的格式.每个WCF服务必须实现至少一个服务契约.使用服务契约必须要引用命名空间System.ServiceModel . 服务三要素 规定服务的三要素使服务与客户端联系更加方便.1.

zzIIS站点中部署WCF项目 - C#

WCF IIS配置 IIS站点中部署WCF项目 - C# 分类: WCF2012-12-19 22:30 2929人阅读 评论(0) 收藏 举报 ArtechWCF IIS站点部署 [csharp] view plaincopy .................全书之写印,实系初稿...执笔木坐,草草而止..个中甘苦,只自知之....── 引 Artech .<<WCF全面解析>>................. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

IIS Internal Server Error &amp;IIS8中部署WCF服务出错:HTTP 错误 404.3 - Not Found

Http error      503. The service is unavailable. Due to appliction pool is stop and start it can resolve it Server Error Internet Information Services 7.5 Error Summary HTTP Error 500.19 - Internal Server Error The requested page cannot be accessed b

IIS8.0 部署WCF Services

今天在Win 8的IIS上部署WCF Services,访问SVC文件时出现找不到处理程序的错误,以前遇到这个问题时都是尝试通过注册asp.net的方式处理一下,但是在Win8下这招不灵了,出现如下提示: 在Windows功能中已经安装了asp.net4.5 要想正确使用WCF 服务,还需要启用.NET Framework的WCF服务,这个默认是不启用的. IIS8.0 部署WCF Services,布布扣,bubuko.com

IIS部署WCF

IIS部署WCF [转载自——http://www.cnblogs.com/starksoft/p/4992059.html] 1 部署IIS 1.1 安装WAS IIS原本是不支持非HTTP协议的服务,为了让IIS支持net.tcp,必须先安装WAS(Windows Process Activation Service),即windows进程激活服务. 打开控制面板--程序和功能--打开或关闭windows功能,安装WAS,如图: 安装完毕后在Services窗口中可以到到如下服务:Windo

wcf部署到IIS上,安装iis和wcf组件方法,并提供wcf文件

本人电脑环境: windows8.1专业版+iis8.5+.net4.5(最高) 考虑到很多人要的只是部署的方法,懒得写WCF程序,此处提供一个程序. wcf测试程序 [1-4步,安装IIS和组件:第5步,部署wcf文件和访问文件] 安装IIS这一步网上的教程也不少,控制面板--程序--程序和功能--启用或关闭windows功能. 如图: [ps:有些项目并不是必填项,需要更简洁安装,可以百度其他教程] 由于是部署WCF,这两个功能也得安装,如图: 找到:控制面板--系统和安全--管理工具--I

WCF学习之旅—WCF服务部署到应用程序(十)

五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下图. (2)添加 System.ServiceModel.dll 的引用. (3)添加 WCF 服务类库(WcfServiceLib)的项目引用. (4)创建宿主程序,代码如下: using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Serv

WCF学习系列二---【WCF Interview Questions – Part 2 翻译系列】

http://www.topwcftutorials.net/2012/09/wcf-faqs-part2.html WCF Interview Questions – Part 2 This WCF tutorial is part-2 in series of WCF Interview Questions. Other parts in this series can be found here. 这是WCF问答系列教程中的第二部分,其他部分可以在下面的链接中找到: WCF Service

WCF学习系列一【WCF Interview Questions-Part 1 翻译系列】

http://www.topwcftutorials.net/2012/08/wcf-faqs-part1.html WCF Interview Questions – Part 1 This WCF Tutorial is a collection of most frequently asked interview questions about Windows Communication Foundation (WCF) covering the beginner to professio