• IIS 托管WCF服务学习手记 111220


    1.    什么是WCF

    WCF Windows通信基础(Windows Communication Foundation,WCF)是微软对一系列产业标准定义的实现,包括服务交互、类型转换、封送(Marshaling)以及各种协议的管理。

    地址:WCF的每个服务都具有唯一的地址(Addresses)。

    地址包含两个重要元素:服务位置与传输协议(Transport Protocal,或者是用于服务通信的传输样式(Transport Schema.服务位置包括目标机器名、站点或网络、通信端口、管道或队列,以及URL

    WCF 支持以下传输样式:HTTP TCP IPC(基于命名管理的内部进程通信)MSMQ

    地址通常采用如下格式:【基地址】/【可选的URI

    基地址(Base Address)通常的格式如下:【传输协议】://【机器名或域名】【:可选端口】

    示例:http://localhost:8001/MyService采用Http协议访问localhost机器并在8001端口等待用户的调用

    2.    契约

    WCF的所有服务都要公开为契约(Contract,契约是描述服务功能的标准方式。

    WCF定义了四种类型的契约

    2.1.    服务契约(Service Contract

    服务契约描述客户端能够执行的服务操作。

    2.2.    数据契约(Data Contract

    数据契约定义了与服务交互的数据类型。WCF为内建类型如intString 隐式地定义为契约;

    2.3.    错误契约(Fault Contract

    错误契约定义服务抛出的错误,以服务处理错误和传递错误到客户端的方式。

    2.4.    消息契约(Message Contract

    消息契约允许服务直接与消息交互,消息契约可以是类型化的,也可以是非类型化的。

    3.    托管

    每个WCF服务必须托管(Hosting)在Windows进程中,该进程被称为宿主进程(Host Process)。单个宿主进程可以托管多个服务,而相同服务类型也能够托管在多个宿主进程中。

    宿主可以由IIS提供、自托管方式实现。

    3.1.    IIS 托管

    通过HTTP协议,通过在IIS下创建虚拟目录。VS 开发时可以选择在新建”->”网站创建WCF 服务。

    整个Demo如下:

     

    Demo采用传统的三层设计,DAL 数据访问层、BLL业务逻辑层、Model 实体层,WebWcfDemo111219 表现层

    Model  实体层需要对方提供服务的数据需要定义数据契约

    Contract 是契约层,采用服务接口实现(可以通过抽象类实现)

    Services 是契约服务层,实现Contract接口,方法调用BLL,不会破坏原有的逻辑结构。

    WCFService Wcf服务站点 能进行WCF服务发布部署到IIS中。

    各层代码如下:

    Users.cs:

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

    namespace Model
    {
        [DataContract]
        public class Users
        {
            [DataMember]
            public Int32 Id { getset; }
            [DataMember]
            public String Name { getset; }
            [DataMember]
            public String Password { getset; }
            [DataMember]
            public Int32 Age { getset; }
            [DataMember]
            public Boolean Sex { getset; }
        }
    }

    IUsers.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
    using Model;

    namespace Contract
    {
        [ServiceContract(Name="IUsersService")]
        public interface IUsers
        {
            [OperationContract]
            Boolean Login(String userName, String password);
            [OperationContract]
            Boolean DelUserByID(int id);
            [OperationContract]
            List<Users> SelUsers();
            [OperationContract]
            Users ShowUserByName(String userName);
        }
    }

    UsersService.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Contract;
    using Model;
    using BLL;

    namespace Services
    {
        public class UsersService:IUsers
        {
            public Boolean Login(String userName, String password)
            {
                Users user=new Users{
                     Name=userName,
                     Password=password
                };
                return new UsersBll().AddUser(user);
            }
            public Boolean DelUserByID(int id)
            {
                return new UsersBll().DelUser(id);
            }

            public List<Users> SelUsers()
            {
                return new UsersBll().SelUser();
            }

            public Users ShowUserByName(String userName)
            {
                return new UsersBll().FindUserByName(userName);
            }
        }
    }

    Web.config 配置方面:通过编辑WCF配置方式进行编辑(如果右击没有显示可以通过SvcConfigEditor.exe获得)

     

    打开配置文件后,可以设置终结点的绑定方式

    基本绑定(Basic Binding

    BasicHttpBinding类提供。基本绑定能够将WCF服务公开为旧的ASMX WebE服务,使用旧的客户端能够与新的服务协作。

    TCP绑定

    NetTcpBinding类提供。TCP绑定使用TCP协议实现在Intranet中的跨机器通信。前提是,它要求客户端与服务都必须使用WCF

    IPC绑定

    NetNamedPipeBinding类提供。它使用命名管道为同一机器的通信进行传输。这种绑定方式最安全,因为它不能接收来自外部的调用。IPC绑定支持的特性与TCP绑定相似。

    Web服务(WS)绑定

    WSHttpBinding类提供。WS绑定使用HTTPHTTPS进行传输,为基于Internet的通信提供了诸如可靠性、事务性与安全性等特性。

    WS联邦绑定(Federated WS Binding

    WSFederationHttpBinding类提供。WS联邦绑定是一种特殊的WS绑定,提供对联邦安全的支持。

    WS双向绑定(Duplex WS Binding

    WSDualHttpBinding类提供。WS双向绑定与WS绑定相似,但它还支持服务到客户端面的双向通信。

     

    配置完成后可以通过F5调试运行得到如下界面:

     

    服务完成后,可以在Visual Studio 命令提示(2010)中通过 WcfTestClient +基地址的方式进行调试。

     

     

     

    调试通过后直接发布到IIS,发布WCF只要发布WCFService就可以了,如果WCFService存在调用数据库的方法,又没有在源代码直接写死连接。那么需要在Web.config写明。

    部署后得到的WCF是以IIS托管的,如下:

     

    附源代码: WebWcfDemo111219 下载

    原文地址:http://www.cnblogs.com/xoray007/archive/2011/12/20/2294964.html 
      

  • 相关阅读:
    美团这个项目是用来干啥的?
    基于C#的机器学习--面部和动态检测-图像过滤器
    基于C#的机器学习--颜色混合-自组织映射和弹性神经网络
    EF Core For Oracle11中Find FirstOrDefault等方法执行失败
    使用DataContractJsonSerializer发序列化对象时出现的异常
    数据库空值排序
    C#浅拷贝与深拷贝测试
    C#排序算法的实现---快速排序
    C#排序算法的实现---选择排序
    C#排序算法的实现---冒泡排序
  • 原文地址:https://www.cnblogs.com/xoray007/p/2294964.html
Copyright © 2020-2023  润新知