• WCF基础 (续 使用代码生成WCF服务)


    完成一个WCF服务,你要完成一个.NET 类然后使用System.ServiceModel 属性来修饰这个类。System.ServiceModel 命名空间与.NET 3.0 一起安装而且包含了大多数WCF实现。当代码编译时,CLR(公共语言运行库)解释这些属性,使用运行时代码取代它们。对于.NET来说属性并不是新事物; 在.NET 1.0 时它们已经存在了。WCF,就像.NET 1.0,1.1和2.0 中的ASMX,当写服务时使用属性来提高我们的生产力。

       列表1.1 中显示了寄宿在控制台应用程序的WCF服务的完整代码。在这个例子中,我们做了以下工作。

          定义契约。写一个.NET 类做一些有用的工作然后使用WCF属性修饰它。[ServiceContract]属性标识一个类为契约。在标准WSDL(网络服务描述语言)里,[ServiceContract]定义portType. [OperationContract]属性定义可以在类中通过服务接口反射调用的方法。同时定义了这些类的方法中使用的来往消息。WSDL描述,[OperationContract]定义了操作和消息。在1.1到1.3列表中使用一个仅有一个叫GetPrice方法的名为StockService 的类。

          注意

        这本书中的例子使用非常简单的接口,通常接收返回一个单独的字符串或数字。实际应用中,你的服务操作很可能接收返回复杂的类型。线上通信将会更“臃肿”而不是“健谈”,降低了网络传输和回复能力。这需要在每次调用时传输更多信息,需要复杂的输入和返回值类型。

          定义一个终结点。在终结点定义中,我们将通过使用ServiceHost.AddServiceEndpoint 方法确定一个地址,绑定和契约.地址是空的,意味着终结点的地址和基地址或者服务的相同。绑定类型是basicHttpBinding,与使用WS-I BP 1.1 协议构建的XML Web Services 兼容,可以互操作。WS-I 或Web Services, 是几大主要的系统厂商合作的结果,包括微软,IBM,BEA,Oracle以及其他一些组织,定义了共同协议层次。WS-I 不是定义了标准;它提供了指导以及工具去确认软件是否符合现存标准,比如HTTP 和XML.

           在一个进程中寄宿服务以便于它可以监听新来的请求。在1.1到1.3列表中使用ServiceHost 类在控制台应用程序中寄宿服务。服务在http://localhost:8000/EssentialWCF 处监听。

    using System;
    using System.ServiceModel;

    namespace EssentialWCF
    {
        [ServiceContract]
        public interface IStockService
        {
            [OperationContract]
            double GetPrice(string ticker);
        }

        public class StockService : IStockService
        {
            public double GetPrice(string ticker)
            {
                return 94.85;
            }
        }

        public class service
        {
            public static void Main()
            {
                ServiceHost serviceHost = new ServiceHost(typeof(StockService),
                    new Uri("http://localhost:8000/EssentialWCF"));
                serviceHost.AddServiceEndpoint(
                    typeof(IStockService),
                    new BasicHttpBinding(),
                    "");
                serviceHost.Open();

                Console.WriteLine("Press <Enter> to terminate.\r\n");  
                Console.ReadLine();
                serviceHost.Close();
            }
        }
    }


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Make_it_easy/archive/2010/09/16/5888137.aspx

  • 相关阅读:
    如何优雅地使用 Stack Overflow
    Quartz总结
    slf4j-api、slf4j-log4j12以及log4j之间什么关系?
    eclipse 安装 spring boot suite 插件遇到的问题
    Java项目结构总结
    netstat 与 telnet
    微服务架构中的安全认证与鉴权
    git 常用命令
    session 、cookie、token的区别
    List和Set区别
  • 原文地址:https://www.cnblogs.com/mane/p/2059032.html
Copyright © 2020-2023  润新知