WCF基础教程——vs2013创建wcf应用程序

引言

近期在项目中见到了师哥们常常谈到的WCF这方面的知识。当时在写程序的时候也没有理解wcf究竟是个什么东西?

以及我们为什么在项目中会採用这种框架来实现,仅仅是依照师哥他们写好的代码编写同样格式的代码。随着代码敲

的越来越多就慢慢的懂得了如何实现client和服务端的连同,可是wcf真正的执行机制还是一点也不懂,近期在听师

哥们讲课的时候有解说了一些关于WCF的知识,自己感觉应该好好理解这方面的知识了,而且这个东西在项目中是非

经常见的,以下就结合我实现的一个小Demo来和大家分享一下。

当中一些最主要的概念。大家能够參考百度百科关于wcf的介绍。在这里给大家两张图对照一下,能非常好的体现出

wcf的用途:

基于ASP.net的应用程序与面向服务开发

在基于Asp.net 的应用程序开发中,我们由客户机的浏览器訪问应用程序server,然后通过应用程序server中的数据

库连接去连接数据库server,读取或是操作数据,有时候可能会多一个文件server。大家能够观察到,基本上全部的

应用都放在了一台server上,但对于一个,因为业务上的须要(如:与外部系统交互),一台server非常难支持全部的

应用。以下来看这样一张图

客户机使用浏览器訪问serverA,serverA为了业务须要与其它各种应用部署在serverB、C、D....再通过WCF技术互相

通信,相互訪问...然而面向服务的优点不只在此。他还提供了不同语言不同操作系统的可交互性..

以下我们就開始创建一个client和服务端分离的wcf应用程序:

1、创建我们的wcf的服务端——在新建项目的时候选择WCF服务应用程序

2、从图中我们能够看出,在我们建立好的解决方式中有默认的两个service.svc和Iservice.cs文件。我们能够将

这两个文件删除。然后加入我们自己的wcf服务。步骤如图:

3、在解决方式里面我们能够看见,当我们加入了一个User.svc后。vs会自己主动生成WCF借口IUser.cs,这是我们须要

在IUser.cs定义WCF方法ShowName,在User.svc.cs对该接口的方法进行实现。代码例如以下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace DemoServiceWCF
{
    // 注意: 使用“重构”菜单上的“重命名”命令,能够同一时候更改代码和配置文件里的接口名“IUser”。
    [ServiceContract]
    public interface IUser
    {
        [OperationContract]
        string ShowName(string name);
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace DemoServiceWCF
{
    // 注意: 使用“重构”菜单上的“重命名”命令,能够同一时候更改代码、svc 和配置文件里的类名“User”。
    // 注意: 为了启动 WCF 測试client以測试此服务,请在解决方式资源管理器中选择 User  .svc 或 User  .svc.cs,然后開始调试。
    public class User : IUser
    {
        public string ShowName(string name)
        {
            string wcfName = string.Format("WCF服务,显示姓名:{0}", name);
            return wcfName;

        }
    }
}

大家在wcf接口中看到与平时我们不同的就是它多了两个标签。其余的和我们正常的学习的接口是一样的,加入这

两个标签是依赖System.ServiceModel的引用。

[ServiceContract],来说明接口是一个WCF的接口。假设不加的话,将不能被外部调用。

[OperationContract],来说明该方法是一个WCF接口的方法。不加的话同上。

事实上简单来说这两个标签就是区分普通接口和普通方法的一个标示。就像我们提高班的第十期和第十一期还有十二期

一样,比如如今十期有一个叫张三的同学,十一期也有一个叫张三的同学,这样我们找人的时候必须得有这个不同的

期号来区分。

4、以下来看一下执行的效果,将User.svc设为起始页后执行。

这样我们的wcf服务端基本上就能够用了。剩下的就是将这个服务端公布然后部署到IIS上,就能够供client使用

了,在这我就不给大家具体解释如何在IIS上公布wcf,我们就使用一个简单的办法就是直接预览user.svc,如图:

事实上WCF的应用场景能够大概能够这样简单的描写叙述一下:我们设计的场景是在生产中常常应用的场景。把WCF程序寄

宿在IIS之上。如果场景例如以下:Aserver和Bserver。

我们把我们刚刚建立的WCF程序“部署”在Bserver上(本教程的

A,Bserver都放是我自己的一台机器),我们的目标是在Aserver的应用程序来訪问Bserver的WCF程序,实现server端

的应用程序通讯。

以下来看我们client的创建

1、首先我在client创建了一个web应用程序;

2、以下我们须要加入一个服务引用如图,填写好地址后点击转到button,然后点击确定

引用完毕后,我们在解决方式中会发现多出一个文件:

3、页面中的代码例如以下

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

<!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">
     <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
     <asp:Button ID="btnSubmit" runat="server" Text="測试WCF服务" OnClick="btnClick" />
     </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 DemoClientWCF.ServiceReference;

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

        }

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

4、以下给大家解释几个比較重要的代码

1、using DemoClientWCF.ServiceReference;这个引用中 DemoClientWCF为我们client的命名空间。

ServiceReference为我们在加入服务引用的时候。须要我们记住的那个名称。

2 UserClient user = new UserClient();UserClient就是我们在加入引用的时候生成的服务端User类的client代理

类,一般client的代理类名称都会是***Client。当中User就是我们服务端加入的那个wcf服务(user.svc)的名称。

到这我们就完毕了一个非常easy的WCF的小Demo,同一时候完毕了由Aserver的应用小Bserver中WCF提供的方法的调用。

小结

这个小Demo算是我们学习WCF的最基础的入门,在我看来对于刚入门的读者们来说应该是非常easy接受的,也算是完毕

了一个基础的教程。随着对wcf的更深入的学习,我会继续更新此类博客来和大家交流,假设此博客有什么不懂的地

方能够留言交流。

时间: 2024-08-26 04:40:49

WCF基础教程——vs2013创建wcf应用程序的相关文章

纯手写wcf代码,wcf入门,wcf基础教程

<pre name="code" class="cpp">/* 中颖EEPROM,使用比较方便,但有个注意点,就是每次无论你写入 什么数据或者在哪个地址写数据,都需要将对 对应的块擦除,擦 除后才能写入成功. */ #define SSPWriteFlag 0x5A #define SSPEraseFlag 0xA5 //数据区 扇形区1 #define ADDR_START1 (uint16)0x100 //数据存储区起始地址 #define ADDR

大数据基础教程:创建RDD的二种方式

大数据基础教程:创建RDD的二种方式 1.从集合中创建RDD val conf = new SparkConf().setAppName("Test").setMaster("local")      val sc = new SparkContext(conf)      //这两个方法都有第二参数是一个默认值2  分片数量(partition的数量)      //scala集合通过makeRDD创建RDD,底层实现也是parallelize      val 

SpringMVC基础入门,创建一个HelloWorld程序

ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!--configure the setting of springmvcDispatcherServlet and configure the ma

OpenVAS漏洞扫描基础教程之创建用户组与创建角色

OpenVAS漏洞扫描基础教程之创建用户组与创建角色 OpenVAS创建用户组 用户组就是指许多个用户的组合.在网络中,各个访问网络的用户的权限可能各不相同.所以,可以通过将具体相同权限的用户划为一组.这样就不需要单独为某个用户设置权限了,只需要设置组的权限即可.下面将介绍创建用户组的方法.具体操作步骤如下所示: (1)在OpenVAS服务的主界面依次单击Administration|Groups命令,即可打开用户组界面,如图1.16所示.   图1.16  组界面 (2)从该界面可以看到,目前

OpenVAS漏洞扫描基础教程之创建用户

OpenVAS漏洞扫描基础教程之创建用户 OpenVAS管理服务 默认情况下,OpenVAS服务仅创建了一个名为admin的用户,而且是管理员用户(拥有最高的权限).如果想要其它客户端登陆的话,不可能都以管理员身份访问,否则导致服务器出现混乱,而且不方便管理.所以,为了方便管理OpenVAS服务,用户可以根据需求创建不同级别的用户和组.下面将分别介绍创建用户.组及修改用户角色的方法. OpenVAS创建用户 (1)在OpenVAS服务的主界面(如图1.6所示)依次单击Administration

WCF入门教程2——创建第一个WCF程序

本节目标 定义服务契约 创建宿主程序 创建客户端程序访问服务 定义服务契约 ServiceContract特性:该特性可被用来作用于子类或者借口之上,并允许重复声明. OperationContract:只有定义了该特性的方法才会被放入服务之中. 1.新建服务程序 新建项目--类库,这里我们先不直接新建一个WCF服务,而是新建一个类库,命名为HelloService 添加引用 删除Class1.cs,然后新建一个接口IHelloService.cs: using System; using Sy

CocoStudio基础教程(1)创建UI并载入到程序中

1.概述 CocoStudio的使用无疑是cocos2d-x 3.0的重要组成部分,接下来我们用它来创建一组UI,并将其读入到程序中显示出来.先上效果图: 2.导出 在导出之前,最好先创建一个新的工程.运行我们的脚本文件,给新工程起名为:HelloStudio.编译运行,保证它没问题. 回到CocoStudio中,点选 文件 –> 导出项目 .在导出资源的位置,选择“导出使用大图”.同时将目录改为我们项目文件的Resource目录. 4.加载到程序中 bool HelloWorld::init(

VS2013创建Web应用程序MVC出现错误:系统找不到指定文件(异常来自 HRSULT:0x80070002)

查到博客园VS2013新建Web Application时报错Exception from HRESULT: 0x80070002 原来此异常是由于没有正确安装 NuGet Package Manager所导致的. 到下载页面http://visualstudiogallery.msdn.microsoft.com/4ec1526c-4a8c-4a84-b702-b21a8f5293ca进行下载,之后装上它就好了.

php基础教程——2创建模板、处理表单

一.创建模板: 将页面中经常出现的部分复制到一个html或php文件中,在原页面中用require()/include()函数引入. 例子: 源html: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv=&q