• WCF服务寄宿到IIS


    一.WCF简介:

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。由 .NET Framework 3.0 开始引入。WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。WCF专门用于面向服务开发。

    二.创建简单的WCF服务应用程序

    1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。建立完成后如下图所示:

     生成的解决方案的项目里面有Service1.Svc,IService1.cs,Web.config三个文件。查看里面的代码:

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

    [ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。
    [OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。 
    [DataContract]一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送
    [DataMember](数据成员)只有标记为DataMember,在交换数据时,才能进行传送。

    将该项目的Service1.svc设为起始页面,F5运行调试。

    双击GetData()方法,输入value=1 》invoke》You entered :1说明服务测试成功。

    三.将WCF服务发布寄宿到IIS上

    右键项目,发布为文件系统。
    确定已经启用或关闭Windows功能里面安装了wcf服务和IIS
     
     
    打开IIS,添加站点,启动。设置身份为Everyone可以访问。可以发现里面有User.svc的和Sercice1.svc的WCF服务接口,点击进入>
     

    四.客户端调用WCF服务:

    在解决方案下面新建控制台应用程序,右键引用添加服务引用,http://10.0.0.217:20000/Service1.svc?wsdl

    命名空间可以进行修改.引用成功后发现多了两个命名空间命名的服务文件:ServiceReference1,ServiceReference2,这里是分别是Service1.svc,User.svc的服务引用。使用如下:
     class Program
        {
            static void Main(string[] args)
            {
                WcfTest.Demo1.ServiceReference1.Service1Client c = new ServiceReference1.Service1Client();
                Console.WriteLine(c.GetData(1));
    
                WcfTest.Demo1.ServiceReference2.UserClient u = new ServiceReference2.UserClient();
                Console.WriteLine(u.InsertUser("张三"));
            }
        }

    如此创建了一个简单WCF服务应用程序,寄宿到了IIS进程上,通过服务引用进行服务的调用。

  • 相关阅读:
    FFmpeg笔记-基本使用
    记一次下载大文件存在数据异常问题排查
    从零开始编写IntelliJ IDEA插件
    Guava LoadingCache不能缓存null值
    FFmpeg笔记--vcodec和-c:v,-acodec和-c:a的区别?
    说说maven依赖冲突,依赖调解,依赖传递和依赖范围
    记一次NoHttpResponseException问题排查
    JVM源码分析-类加载场景实例分析
    JVM源码分析-JVM源码编译与调试
    理解PHP的变量,值与引用的关系
  • 原文地址:https://www.cnblogs.com/heyangyi/p/8521293.html
Copyright © 2020-2023  润新知