• 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
            }
        }
    }
    

  • 相关阅读:
    基于差分隐私的安全机制
    基于散列和RSA的纵向联邦学习样本对齐实现方案
    富文本及编辑器的跨平台方案
    计算机字符编码的前世今生
    探究Presto SQL引擎(1)-巧用Antlr
    vivo 全球商城:优惠券系统架构设计与实践
    复杂多变场景下的Groovy脚本引擎实战
    分布式存储系统可靠性:系统量化估算
    手把手教你实现Android编译期注解
    灵活运用分布式锁解决数据重复插入问题
  • 原文地址:https://www.cnblogs.com/danielWise/p/2073999.html
Copyright © 2020-2023  润新知