比一比 WebService和WCF



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

什么是WCF?

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

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

WCF的体系架构:

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

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

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

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

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


<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该属性或者字段能够被序列化传输。

<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窗体中





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值