zoukankan      html  css  js  c++  java
  • 使用C#创建WCF服务控制台应用程序

    本文属于原创,转载请注明出处,谢谢!

    一、开发环境

    操作系统:Windows 10

    开发环境:VS2015

    编程语言:C#

    IIS版本:10.0.0.0

    二、添加WCF服务、Internet Information Services(IIS) 

    1、进入“控制面板”,打开“程序和功能”,点击左上角的“启用或关闭Windows功能”后,在“.NET Framework 4.6 高级服务”中的子节点选中“WCF 服务”,如下图所示:

    2、再找到“Internet Information Services”,同样选中该节点,如下图所示:

    3、点击“确定”按钮以便安装这些服务与组件,等待完成安装即可。

    三、新建一个WCF服务库

    1、使用VS2015新建一个WCF服务库,并将项目名称改为“MyWCFService”,如下图所示:

    2、在解决方案资源管理器里将“IService1”接口、“Service1”类分别重命名为“IMyWCFService”与“MyWCFService”,如下图所示:

    VS2015将会分别创建“IService1”接口、“Service1”类,“IService1”接口含GetData、GetDataUsingDataContract方法,并使用“Service1”类实现了该接口,代码如下:

    “IService1”接口:

        // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IMyWCFService”。
        [ServiceContract]
        public interface IService1
        {
            [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; }
            }
        }

    “Service1”类:

        // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“Service1”。
        public class Service1 : IService1
        {
            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;
            }
        }

    3、将鼠标移到解决方案资源管理器中项目“MyWCFService”上并右击鼠标,弹出上下文菜单,在菜单中选中“发布”后,弹出下图所示的“发布 WCF服务”对话框,如下图所示:

    在目标位置选择“D:WCF”,其他按默认,点击“发布”按钮,即可在“D:WCF”文件夹里生成如下图所示的文件:

    四、新建一个WCF服务网站

    1、点击打开IIS,新建一个网站,网站名称设置为“MyWCFService”,物理地址选择“D:WCF”,端口从默认的80改为81,如下图所示:

    2、点击确定后,即新建一个WCF服务网站,我们可以在浏览器输入“http://localhost:81/MyWCFService.MyWCFService.svc”进行验证,如下图所示:

    五、新建一个控制台客户端测试WCF服务

    1、在原来的解决方案里新建一个项目名为“WCFTestClient”的控制台程序,如下图所示:

    2、鼠标右键点击项目“WCFTestClient”,在弹出的上下文菜单中选择“设为启动项目”,如下图所示:

    3、鼠标右键点击项目“WCFTestClient”子节点“引用”,在弹出的上下文菜单中选择“添加服务引用”,如下图所示:

    4、将弹出“添加服务引用”对话框,在“地址”输入刚刚建的WCF服务网站地址(http://localhost:81/MyWCFService.MyWCFService.svc),点击“转到”按钮之后,将会在“服务”列表里列出刚才建的服务,选择“IMyWCFService”后,将会在“操作”列表里列出GetData、GetDataUsingDataContract方法,如下图所示:

    5、将命名空间改为“MyWCFReference”后点击“确定”按钮之后,将会在项目“WCFTestClient”子节点增加“Service References”等,如下图所示:

    6、在Program类上方添加对WCF服务引用,并在Main主函数里输入以下代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using WCFTestClient.MyWCFReference;
    
    namespace WCFTestClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                MyWCFServiceClient client = new MyWCFServiceClient();
                Console.WriteLine(client.GetData(123456));
                CompositeType cType = new CompositeType() { StringValue = "Hello World!", BoolValue = true };
                Console.WriteLine(client.GetDataUsingDataContract(cType).StringValue);
            }
        }
    }

    六、运行客户端控制台程序

    运行“WCFTestClient”客户端控制台程序,如下图所示:

  • 相关阅读:
    python 数据结构与算法 day04 冒泡排序
    阿里代码扫描插件安装 (IDEA)
    Kafka
    女生赛训练 2
    2019 DISCS PrO High School Division
    计算机安全之密码安全 从 Hash 到 MD5
    CodeForces Round #559 Div.2
    CodeForces Round #558 Div.2
    CodeForces Round #560 Div.3
    NCD 2019 (AK)
  • 原文地址:https://www.cnblogs.com/cncc/p/7156300.html
Copyright © 2011-2022 走看看