zoukankan      html  css  js  c++  java
  • WCF 第十三章 可编程站点 使用WebGet和WebInvoke

    服务可以使用WebHttpBinding以及WebGet或者WebInvoke属性来暴露。这些属性每一个都确定HTTP动作、消息格式以及需要暴露给一个操作的消息体形式。我们将检查这些属性的每一个并给出使用每个的原因。

    WebGet

    WebGet属性使用GET动词暴露操作。GET相对于其他HTTP动作有重要的优势。首先,通过在一个浏览器地址栏中输入服务URI可以直接地访问终结点。参数可以作为查询字符串或者编码字符串在URI中发送。其次,客户端以及其他下游系统比如代理服务器可以很容易地基于缓存策略来为服务缓存资源。由于缓存能力,WebGet属性应该只用来做收集用。

      列表13.6 显示了使用WebGet和WebInvoke属性定义的一个服务。WebGet属性用来收集客户信息。WebInvoke属性被用于那些修改数据的添加或者删除客户信息的操作。最后,在WebGet和WebInvoke属性上定义UriTemplate属性来使用URI定义一个自定义资源。

    列表13.6 CustomerService

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    
    namespace EssentialWCF
    {
        [ServiceContract]
        public class CustomerService
        {
            [OperationContract]
            [WebGet(UriTemplate = "/customer/{id}")]
            public Customer GetCustomer(int id)
            {
                Customer customer = null;
                //Get customer from database
                return customer;
            }
    
            [OperationContract]
            [WebInvoke(Method="PUT", UriTemplate="/customer/{id}")]
            public void PutCustomer(int id, Customer customer)
            {
                //Put customer in database
            }
    
            [OperationContract]
            [WebInvoke(Method="Delete", UriTemplate="/customer/{id}")]
            public void DeleteCustomer(int id)
            {
                //Put customer in database
            }
        }
    }
    

  • 相关阅读:
    python的垃圾回收机制
    生成器
    装饰器
    模块与包
    MES实施会有哪些情况?为你介绍两种常见的类型
    中国智慧工厂未来发展及趋势几何?这里给你讲个清楚
    未来智能工厂是什么样?这五种产业必不可少
    制造企业非常头疼的插单问题,本文给你这些实用建议,第7点最具价值
    MES选型很困惑?避开这三个禁忌!
    如何适应应用场景?高级排程系统的功能如此强大!
  • 原文地址:https://www.cnblogs.com/danielWise/p/2073999.html
Copyright © 2011-2022 走看看