• 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 处监听。

    列表 1.1 完全使用代码实现服务

    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();
            }
        }
    }


    =============

    转载自

    作者:DanielWise
    出处:http://www.cnblogs.com/danielWise/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
     

  • 相关阅读:
    oracle数据库
    Filter过滤器
    Json
    监听器
    Ajax
    2018年5月14日java
    EL表达式&JSTL
    JSP
    2018年5月9日JAVA-servlet02
    如何解决写脚手架过程中遇到请求github的项目接口中出现API rate limit exceeded for的问题。
  • 原文地址:https://www.cnblogs.com/llbofchina/p/2089211.html
Copyright © 2020-2023  润新知