WCF初步认识

最近学习了一个新的知识点,那就是WCF。

一.SOA架构介绍

在认识WCF之前,我们先来了解一下SOA,全称是面向服务架构(Service Oriented Architecture),是一种组件架构模型。面向服务可能我们都还不太熟悉,但是组件我们都是知道的,我理解的组件就是对数据或方法的简单封装,如果系统有需要直接拿来用可以了,不用再花费功夫去重新编写,SOA就是基于这样的思想,它可以根据需求对松散耦合的组件进行分布式部署、组合和使用。

二.WCF初步认识

了解完了SOA,再来看WCF,它的全称是:Windows Communication Foundation,可以翻译为Windows通讯开发平台,是微软公司推出的符合SOA思想的技术框架。它的功能很丰富,我们记住一点就可以了,那就是WCF统一了微软公司之前推出的分布式技术,使分布式变得简单。

三.WCF的体系架构

服务端部分:

刚开始接触到上面四个概念时,感觉分官方,不好理解,下面通过一个例子介绍一下上面的基础概念。

1.在VS上建立一个空白的解决方案,然后新建一个项目,类型为:WCF服务应用程序。建好后如下图显示:

2.删除自带的IService1.cs和Service1,添加服务文件User.svc,这是系统会自动WCF接口文件IUser.cs.然后在IUser中定义WCF方法,在User.svc对接口方法进行实现。这样第一个WCF服务程序就建好了。

namespace WcfService
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IUser”。
    [ServiceContract]//说明接口是一个WCF接口
    public interface IUser
    {
        [OperationContract]//说明该方法是一个WCF方法

        //定义ShowName方法
        string ShowName(string name);
    }
}
    public class User : IUser
    {
        //对接口方法进行实现
        public string ShowName(string name)
        {
            string wcfName = string.Format("WCF服务,显示姓名:{0}",name);
            return wcfName;
        }
    }

解释:

·契约:我们定义的IUser接口就是契约的一个体现了,它属于公共服务接口的一部分,它描述了IUser这个方法的功能和作用,让我们知道这个方法是"干什么"的。

·服务运行时:除了IUser接口外,我们还可以为User类定义很多其他行为,来描述这个类运行时的具体行为,服务运行时在一定程度上描述了服务是"怎么干"的。

·消息:WCF程序和外部交互的数据信息。

·寄宿:如果把WCF比作一个应用软件的话,那么宿主就相当于系统软件(比如操作系统),应用软件必须在操作系统的基础上才能够使用.寄宿就是WCF程序的部署方式,一个WCF服务需要在一个可运行的程序中寄宿,我们可以把宿主理解为WCF运行的容器,比较常见的是IIS。

3.服务端建好后,在IIS上发布一下,和普通的程序法不一样,这里就不再赘述了。图中的http://localhost:3090/User.svc?wsdl即为我们要引用的服务地址。

    客户端部分:

我们这里以Web应用程序为例,创建ASP.NET Web应用程序的项目。命名为:WCFClient,并添加UserTest.aspx如下图所示:

4.添加在第②步中部署的服务的引用,命名空间为WcfService,然后转到,找到服务引用后,单击确定。我们再次查看解决方案,里面多了Service References的文件夹。

5.配置UserTest.aspx的方法,使其可以使用服务端的方法。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WcfClient.aspx.cs" Inherits="WCFClient.WcfClient" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
    <asp:Button ID="btnSubmit" runat="server" Text="测试WCF服务" OnClick="btnSubmit_Click" />
    </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WCFClient.WcfService;//导入WCF服务的名称空间

namespace WCFClient
{
    public partial class WcfClient : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            UserClient user = new UserClient();
            string result = user.ShowName(this.txtName.Text);
            Response.Write(result);
        }
    }
}

上面中的UserClient类是在添加引用的时候生成的服务端User类的客户端代理类,一般客户端代理类名称都会是**Client。下面看下运行的效果吧:

总结:刚接触WCF感觉有些无从下手,在网上找到一些相关资料后动手敲了个例子,还是感觉实践的效果要好些,关在那里看理论是无论如何也搞不明白的。期待以后的进一步学习。

时间: 2024-08-10 14:46:25

WCF初步认识的相关文章

WCF初步学习

一.理解面向服务(Service-Oriented-Architecture) 是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构.SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来. SOA指出当前系统应该足够灵活,从而允许在不打乱当前成功运行的体系结构和基础结构的前提下,改动已有的体系结构. SOA原则: 边界清晰 服务自治 兼容性基于策略 共享模式(schma)和契约 二.什么

一、WCF学习之旅-创建第一个服务

WCF基本介绍:http://baike.baidu.com/link?url=TGjLYt3HS4dt4-hIiGRknLy6udRsZ52QxJz9cmRKlR4NXbP9rCZDsKn2fDfGeBEfyQL9XlTMy_aW4Zno3HEkKa WCF有三种通信模式:单向.请求-响应.双工.这些通信模式留待后面再继续学习和讲解. 今天要学习的是创建一个测试的demo,所谓的hello world入门级程序.OK,let's start! 1.创建解决方案和项目 打开vs2015,文件>新

ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步

一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新的区域,可以让我们的项目不至于太复杂而导致管理混乱.有了区域后,每个模块的页面都放入相应的区域内进行管理很方便.例如:上图中有两个模块,一个是Admin模块,另一个是Product模块,所有关于这两个模块的控制器.Model以及视图都放入各自的模块内.可以从上图中看出,区域的功能类似一个小的MVC项

校园视频管理系统----EF+WCF+MVC实现SOA架构

元旦开始做视频管理系统,从需求调研,设计原型图到实体设计到现在的搭建框架,收获了很多,在团队合作中学习,交流,实践.这次的合作开发应用了一种新的框架----EF+WCF+MVC灵活的实现经典三层架构.初步学习,先简单介绍一下,如下图 左侧红色部分是三层架构,右侧是结合MVC+WCF+EF框架实现SOA. SOA:面向服务架构(Service Oriented Architecture),它属于一种组件架构模型,W3C的定义:一组公开发表接口,并且提供查询的组件,具有4个特性,每个服务具有明确的边

系统上线后WCF服务最近经常死掉的原因分析总结

前言 最近系统上线完修改完各种bug之后,功能上还算是比较稳定,由于最近用户数的增加,不知为何经常出现无法登录.页面出现错误等异常,后来发现是由于WCF服务时不时的就死掉了.后来就开始分析问题.得到的初步解决方案如下: 1.在Web端调用WCF服务使用后,未释放未关闭导致新的链接无法访问 2.增加默认的连接数,系统默认的链接数比较小 3.提供同一个WCF服务的不同实例 1.在Web端调用WCF服务使用后,未释放未关闭导致新的链接无法访问 首先保证客户端每次建立的连接在使用完成后进行关闭.那么请不

js调用wcf 的SOA

jquery 调用wcf 的SOA架构,将三层架构运用到SOA的架构中来 经过前面3天的学习,我想大家应该对SOA的架构有了初步的了解,其实 SOA与三层架构并不冲突,而是三层架构的升级版. 来看下传统的三层架构! 一共可以分为4个层: 模型层(可有可无),客户端,服务端,公共层. 我们在原有的三层架构的基础上,我们增加一个服务中转层! 然后客户端 通过 调用 服务中转,然后在调用  服务层,因为客户端可以有多个,可以是安卓,可以是IOS, 可以是电脑,可以是linux, 因为这个不管是什么样的

转载——Java与WCF交互(二):WCF客户端调用Java Web Service

在上篇< Java与WCF交互(一):Java客户端调用WCF服务>中,我介绍了自己如何使用axis2生成java客户端的悲惨经历.有同学问起使用什么协议,经初步验证,发现只有wsHttpBinding可行,而NetTcpBinding不可行,具体原因待查.昨晚回去重新测试WCF客户端调用Java Web Service,并将过程公布如下: 其实本不需要做web service,只是原来公开的经典的Web service像(http://soapinterop.java.sun.com/rou

[老老实实学WCF] 第四篇 初探通信--ChannelFactory

原文:[老老实实学WCF] 第四篇 初探通信--ChannelFactory 老老实实学WCF 第四篇 初探通信--ChannelFactory 通过前几篇的学习,我们简单了解了WCF的服务端-客户端模型,可以建立一个简单的WCF通信程序,并且可以把我们的服务寄宿在IIS中了.我们不禁感叹WCF模型的简单,寥寥数行代码和配置,就可以把通信建立起来.然而,仔细品味一下,这里面仍有许多疑点:服务器是如何建起服务的?我们在客户端调用一个操作后发生了什么?元数据到底是什么东西?等等.我们现在对WCF的理

我们一起学习WCF 第一篇初识WCF(附源码供对照学习)

前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wcf所遇到的困难以及解决方案一点点记下来,可能还有很多不足之处那我们一起共同学习.在学习之前我们有必要初步的看下百度百科对wcf的解释,让我们心中有这一个概念,然后建立项目,然后再次看概念,然后在去更深层的建立项目,然后再去理解这样反复的去做我相信可以做好wcf.那么下面我就会从初识wcf,wcf消息