比一比 WebService和WCF



   通过做项目,对WCF有了一个全新的认识。那么他和WebService又有什么区别,他俩哪个更好呢?应该是各有各的好处吧。

什么是WCF?

    .NET平台下的框架产品,由微软开发的一系列支持数据通信的应用程序框架,是Windows平台上开发分布式应用最佳的实践方式。
   简而言之,就是为构建面向服务的应用提供的分布式编程框架,使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。

    WCF的基本概念是以契约来定义双方沟通的协议,合约必须要以接口的方式来体现,实际的服务代码必须要由这些合约接口派生并实现。

WCF的体系架构:

    契约:契约属于一个服务公开接口的一部分吗,一个服务的契约,定义了服务端公开的方法,使用的传输协议,可访问的地址传输的消息格式等内容。

    服务运行:服务运行方面定义了服务在运行时的具体行为。

    消息:消息方面包含了消息的传输方式、消息的编码与解码。消息方面的内容基本属于服务边界以内的具体实现。具体的传递实现,必须符合在契约中定义的绑定协议。

    激活和宿主:一个WCF服务需要在一个可运行的程序中寄宿,常用的寄宿方式包括自寄宿、IIS寄宿、WAS、Windows服务,COM+组件等。

    ServiceContract:包括ServiceContract和OperationContract,ServiceContract用于类或者结构上,用于指示WCF此类或者结构能够被远程调用;OperationContract用于类中的方法上,用于指示WCF该方法可被远程调用。


  1. <span style="font-family:KaiTi_GB2312;font-size:18px;">[ServiceContract]  
  2.     public interface IBasicOrganizationService  
  3.     {  
  4.         #region QueryAllOrganization-机构信息查询-赵亚盟-2015年5月19日20:17:28  
  5.         [OperationContract]  
  6.         List<BasicOrganizationViewModel> QueryAllOrganization();  
  7.         #endregion  
  8.   #endregion  
  9.     }</span>  
<span style="font-family:KaiTi_GB2312;font-size:18px;">[ServiceContract]
    public interface IBasicOrganizationService
    {
        #region QueryAllOrganization-机构信息查询-赵亚盟-2015年5月19日20:17:28
        [OperationContract]
        List<BasicOrganizationViewModel> QueryAllOrganization();
        #endregion
  #endregion
    }</span>


     DataContract:分为DataContract和DataMember,DataContract用于类或者结构上,指示WCF此类或者结构能够被序列化或者传输,也可以使用[Seralizable]代替;DataMember只能用在类或者结构的属性或者字段上,指示WCF该属性或者字段能够被序列化传输。

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;">[Classes("职务")]  
  2.     [DataContract]  
  3.     public class  BasicJobViewModel  
  4.     {         
  5.         [Colum("职务代码", DbType = DbType.String)]  
  6.         [DataMember]  
  7.         [DisplayName("代码")]  
  8.         public string JobCode { getset; }  
  9.     }  
  10. </span>  
<span style="font-family:KaiTi_GB2312;font-size:18px;">[Classes("职务")]
    [DataContract]
    public class  BasicJobViewModel
    {       
        [Colum("职务代码", DbType = DbType.String)]
        [DataMember]
        [DisplayName("代码")]
        public string JobCode { get; set; }
    }
</span>


    FaultContract:错误契约,默认情况下,服务抛出的异常均以FaultException类型传递到客户端,通过它列出服务能够抛出的错误类型。

    MessageContract:消息契约,它能自定义消息格式,包括消息头,消息体,还能指示是否对消息内容进行加密和签名。


什么是WebService?

    平台独立的、低耦合的、自包含的、基于可编程的Web的应用程序,可使用开放的XML标准来描述、发布、协调和配置这些应用程序,用于开发分布式的互操作性应用程序。

    简而言之:通过访问和使用远程Web服务可以访问不同系统中的数据。在使用时,通过Web服务Web应用程序不仅可以共享数据,还可以调用其他应用程序生成的数据,而不用考虑其他应用程序是如何生成这些数据的。

    特点:开放性、跨平台性;返回数据而不是返回页面。

    总结:使用Web服务能够实现数据重用和软件重用,这为建立松散偶合型的分布式系统提供了方便,实现Web服务需要HTTP、SMTP、SOAP、WSDL和UDDI等协议的支持;建立WCF服务需要建立服务定义文件、服务接口文件和服务逻辑处理文件。在使用WCF服务时,需要首先添加服务引用,再应用到Web窗体中


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WebService API是一种基于SOAP协议的服务接口,它通常用于内部系统之间的通信。它可以作为内部子系统间的服务通信的一种选择,比如使用WCF/Webservice作为内部服务的通信方式。 与之相对的是Web API,它使用HTTP协议,并可以支持多种HTTP操作,如GET和POST等。Web API更轻量级,常用于基于HTTP请求的服务应用,比如移动服务端或需要提供第三方API服务的场景。 综上所述,WebService API和Web API都是用于实现服务接口的技术,但它们的协议和应用场景有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [浅谈web api和Webservice](https://blog.csdn.net/yuhu119/article/details/124093271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验](https://download.csdn.net/download/u011938827/87662947)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值