• 【5】.net WCF 简单实例


    1.创建WCF项目

    2.系统自动生成IWcfService

        // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
        [ServiceContract]
        public interface IWcfService
        {
    
            [OperationContract]
            string GetData(int value);
    
            [OperationContract]
            CompositeType GetDataUsingDataContract(CompositeType composite);
    
            // TODO: 在此添加您的服务操作
        }
    
    
        // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
        [DataContract]
        public class CompositeType
        {
            bool boolValue = true;
            string stringValue = "Hello ";
    
            [DataMember]
            public bool BoolValue
            {
                get { return boolValue; }
                set { boolValue = value; }
            }
    
            [DataMember]
            public string StringValue
            {
                get { return stringValue; }
                set { stringValue = value; }
            }
        }

    (1)服务契约:ServiceContract(服务)和OperationContract  (方法)

    (2)数据契约:DataContract(类)和DataMember(属性) 用于类和结构上

    (3)消息契约:MessageContract 用于soap消息

    3.WCF服务类

        public class WcfService : IWcfService
        {
            public string GetData(int value)
            {
                return string.Format("You entered: {0}", value);
            }
    
            public CompositeType GetDataUsingDataContract(CompositeType composite)
            {
                if (composite == null)
                {
                    throw new ArgumentNullException("composite");
                }
                if (composite.BoolValue)
                {
                    composite.StringValue += "Suffix";
                }
                return composite;
            }
        }

    4.服务配置文件

      <system.serviceModel>
        <!--配置绑定节点Start-->
        <bindings>
          <basicHttpBinding>
            <binding name="basicHttpBinding0" maxReceivedMessageSize="2147483647">
              <readerQuotas maxStringContentLength="2147483647"/>
              <security mode="None" />
            </binding>
          </basicHttpBinding>
          <netTcpBinding>
            <binding name="netTcpBinding0" maxReceivedMessageSize="2147483647">
              <readerQuotas maxStringContentLength="2147483647"/>
              <security mode="None" />
            </binding>
          </netTcpBinding>
          <wsHttpBinding></wsHttpBinding>
        </bindings>
        <!--配置绑定节点End-->
        
        <!--配置服务节点Start-->
        <services>
          <!--配置某一服务,在这里可以指定服务名称-->
          <service name="WcfServiceTest.WcfService">
            <endpoint address="aaa" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding0"
              name="BasicHttpBinding_WcfService" contract="WcfServiceTest.IWcfService">
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
            <endpoint address="" binding="netTcpBinding" bindingConfiguration="netTcpBinding0"
              name="NetTcpBinding_WcfService" contract="WcfServiceTest.IWcfService">
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
          </service>
        </services>
        <!--配置服务节点End-->
    
        <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>

    5.iis部署WCF服务

    6.添加客户端项目并添加服务引用

    7.Main程序中添加wcf服务并调用方法

        class Program
        {
            static void Main(string[] args)
            {
                var client = new WcfService.WcfServiceClient();
                try
                {
                    var str = client.GetData(2046);
                    Console.WriteLine(string.Format("内容:{0}", str));
                    client.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("出现异常!");
                    client.Abort();
                }
                Console.ReadLine();
            }
        }

    8.客户端配置文件

        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="BasicHttpBinding_WcfService" />
                </basicHttpBinding>
                <netTcpBinding>
                    <binding name="NetTcpBinding_WcfService">
                        <security mode="None" />
                    </binding>
                </netTcpBinding>
            </bindings>
            <client>
                <!--<endpoint address="http://localhost/WcfServiceTest/WcfService.svc"
                    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_WcfService"
                    contract="WcfService.IWcfService" name="BasicHttpBinding_WcfService" />-->
                <endpoint address="net.tcp://localhost/WcfServiceTest/WcfService.svc"
                    binding="netTcpBinding" bindingConfiguration="NetTcpBinding_WcfService"
                    contract="WcfService.IWcfService" name="NetTcpBinding_WcfService">
                    <identity>
                        <dns value="localhost" />
                    </identity>
                </endpoint>
            </client>
        </system.serviceModel>
  • 相关阅读:
    C#根据长度创建数组
    PLC读取数据高低位交换,批量保存到list集合,方便调用。
    C#读取图片流保存到文件,再读取流文件,把图片再显示出来
    C#从SQL server数据库中读取l图片和存入图片[转]
    C# 数据库查询表字段,写入到combox
    C# MSSQL数据库查询SQL语句拼接
    C# winform只允许程序运行一个
    C# 定时关机代码
    C#用委托来动态显示日期和时间
    使用margin负值实现压住相邻边距
  • 原文地址:https://www.cnblogs.com/pengdylan/p/6430969.html
Copyright © 2020-2023  润新知