【WCF 1】WCF框架宏观了解

2024-08-25 22:08
文章标签 框架 了解 wcf 宏观

本文主要是介绍【WCF 1】WCF框架宏观了解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导读:使用WCF框架爱开发项目也有很长一段时间了,最开始的时候,是理解的不深,所以不写博客进行总结。后来是项目赶,发现需要总结的有很多,一直没有把WCF排上日程,尤其是最近研究EF这一块,更是研究了一些ORM框架的东西,包括Hibernate工作原理等。最后,是因为自己都会了,觉得就先不总结了吧,反正都会。现在,正式总结WCF的第一篇博客,先宏观 介绍一下。

 

在基本概述中,主要是从书本、网络上查找的一些基本的定义

 

一、基本概述

【以下内容是从维基百科上搜索的WCF的定义】

Windows Communication Foundation (WCF) is a framework for building service-oriented applications. Using WCF, you can send data as asynchronous messages from one service endpoint to another. A service endpoint can be part of a continuously available service hosted by IIS, or it can be a service hosted in an application. An endpoint can be a client of a service that requests data from a service endpoint. The messages can be as simple as a single character or word sent as XML, or as complex as a stream of binary data.

WCF是一个用于构建面向服务的应用程序框架。使用WCF,你可以从一个服务器端发送一个异步数据信息到另一个服务器端。一个服务器端是IIS连续可用服务托管的一部分,或者说,它是一个应用程序中所承载的一部分。一个服务端点,也可以是一个从服务器端请求信息服务的客户端,这个信息可以是像XML文档一样简单的一个字母、一个单词,也可以是像流一样复杂的二进制数据。

 

【以下内容是从百度百科上摘抄的,作为自己的一个知识上的补充、明确。】

WCF是Windows平台上开发分布式应用的一个有效的实践方式:简单说来有以下几个部分:

1,网络服务的写物,即用什么网络协议开放客户端的接入;

2,业务服务的协议,即声明服务提供哪些业务;

3,数据库类型声明,记对客户端与服务器端通信的数据部分进行一致化;

4,传输安全性相关的定义。

 

二、契约介绍

契约一般是作为接口的形式出现,而服务一般是作为接口的实现出现。以下介绍,由VS2012新建一个WCF服务应用程序为例:

【ServiceContract】

在接口Iservice1前面加了[serviceContract],意思是将这个接口和它的实现类声明为服务契约,进行了声明之后,这个接口就可以暴露在客户端面前,也就是说:服务契约,是针对客户端而言,它的效用就是让这个接口对客户端可见。

【OperationContract】

让客户端看见这个接口,和让客户端看见这个方法是不一样的。如果说,想要接口里面的方法也对客户端可见,那么还需要声明方法的签名,在方法签名加上[OperationContract]。如果在方法签名不应用签名,则这个方法对客户端不可见。

 

总结:服务契约一共有两种:[ServiceContract]声明接口、类对客户端可见;[OperationContract]声明方法对客户端可见。

理解:对于这个服务契约的理解,可以结合做项目调试代码,一个服务端,可以对应多个客户端。比如说:角色管理的服务,角色管理的客户端可以调用,然后组织管理的客户端,也可以调用角色管理的服务。但是,我们很容易发现,在角色管理的客户端,是可以看到角色管理服务端的方法内容,而在组织管理的客户端是看不到代码的。(区分本地发布和IIS发布)但是,这种配置,是可以更改的。

 

【DataContract】

这个是一个数据契约,跟服务契约一样,声明数据契约,就可以将这个数据类型、结构对客户端可见。而在我们具体的项目中,我们是将这个数据契约分离,做成了我们的Model层和ViewModel层。当我们在客户端调用的时候,是引入的服务端Model或者ViewModel的数据。

 

【DataMember】

这个也和方法签名[OperationContract]一样,虽然将数据类型或者结构声明了契约服务,但是,类型里面的变量、参数是并不对客户端可见的。要想变量或者参数也对客户端可见,则必须声明[DataMember]。

 

总结:datamember只能在数据契约中使用,在方法中的变量是不能用datamember的,方法函数必须用servicecontract声明。

理解:虽然我们将数据进行分离到Model层(引入EF),但是,在那里面并不能控制字段的可见性。

 

三、理解WCF

对于WCF的理解,是和几个十期的师哥师姐沟通之后,才有了一个很大的突破。当时一个师哥跟我说过,WCF可以实现服务的重用,一个WCF服务可以对应多个客户端。刚开始也是不明白的,后来结合自己的学习经验,就对比了以下之前没有WCF的时候,所开发项目的情况:

垒鸡窝—三层—MVC—MVC+EF—MVC+SPring+EF+AOP,虽然一直在不断的提升,但是一直都是一个项目一个解决方案。当我们需要更改的时候,就得下载整个解决方案下来进行维护,然后进行发布打包。这样子其实很不合理,它为什么不合理,分析一下WCF引入之后的框架:WCF+MVC+EF+SPring

现在总体来说,客户端和服务端是分离的,简单说来,也就是业务逻辑和UI显示是分离的。

我们分离出去的服务,可以被多个客户端调用。接口复用、方法复用的更好了。在之前,就拿一个简单的SQLHelper类来说,当我们在机房收费开发的时候,写了一遍,在重构的时候,又写一遍,在新闻发布系统的时候,又写了一遍,每次用到的时候,就又复制粘贴了一遍。更别说其他模块的复用。

之前的复用,是在解决方案内的一个复用,现在WCF的服务复用,面向的范围更大,可以复用的范围更广。

 

 

 

天呐,我要去开会了,先写到这里,下一篇博客介绍一个简单的WCF实例。然后接着介绍配置文件结合spring框架的应用。。。。。。

 

 

这篇关于【WCF 1】WCF框架宏观了解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106784

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理,放在容器中,这个容器就叫Ioc这些对象统称为Bean 用对象的时候不用new,直接外部提供(bean) 当外部的对象有关系的时候,IOC给它俩绑好(DI) DI和IO

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简