一步一个脚印学习WCF系列之WCF概要—客户端与服务(三)
阅读目录
一: 用户所使用的客户端和用户所需要的服务如何交互呢?
一: 用户所使用的客户端和用户所需要的服务如何交互呢?
用户所使用的客户端和用户所需要的服务如何交互呢?其实就是指一个消息传递的流程,我们在这里就来探讨一下,看下面这个Service,如图一,为了能够给客户提供服务的话,这个Service必然要被执行,它被执行的时候必然要放到主机里面,也就是必然要放到服务的主机里面,也就是ServiceHost里面来进行执行的,如图二,所以这个Service是安插到ServiceHost里面的,这个Serveice和ServiceHost是在一个主机进程当中的,大家看图三多了两个Endpoint,我们把它之为端点也叫终结点,这个端点的主要作用是用于来提供Service向外发布的接口,如图四,比如:现在有一个客户要来访问这个Service的话,是通过Endpoint来进行访问的,我们把这张图比作一个公司,边界虚框比作公司的大楼,Service比作公司里面一个一个不同的工作人员来对外提供服务的,Endpoint比作公司的前台主要接待从外部进来的访问并且把这些访问提交给公司里面的工作人员来进行处理,比如:张三是电信公司的拉宽带的,我家掉网了,我来到电信公司,找到前台,让前台美女联系张三,然后张三给我提供修好我家宽带的服务
图一 图二 图三
图四
大家看图五出现了客户进程,客户进程里面出现了ClientApp也就是客户端的应用程序,客户端的应用程序有它自己的逻辑来进行相应的工作,在这个客户的应用程序当中现在有一个Proxy代理,这个Proxy代理实现由客户进程到主机进程之间的通信,也就是说通信是由Proxy代理来完成的,但是实际上Proxy代理并不直接与主机进程的Endpoint来进行通信,直接与主机进程的Endpoint来进行通信的是在客户端Proxy代理里面的Endpoint来进行通信的,如图六,在WCF这种环境中的话消息的直接通信是在两端的Endpoint,当消息由一端的端点发出,由另外一端的端点来接收到,再把这个消息提交给Service来进行处理,比如:现在我们客户想向Service发一个消息或者想完成一些特定的功能,首先把做这些事情的需求提交给Proxy代理,然后在由Proxy代理进行封装提交给客户进程的Endpoint,再有客户进程的Endpoint发送给主机进程的Endpoint,然后主机进程的Endpoint在把消息提交给Service,由Service这一段进行处理,最后在反方面发送回来,由Proxy代理来开包,最后提交回到客户的应用程序当中,如图七,这就是整个一个消息传递的流程
![](https://images.cnblogs.com/cnblogs_com/menglin2010/ClientApp-1.jpg)
![](https://images.cnblogs.com/cnblogs_com/menglin2010/ClientApp-2.jpg)
![](https://images.cnblogs.com/cnblogs_com/menglin2010/ClientApp-5.jpg)