日期:2014-05-17  浏览次数:20774 次

WCF,请教一个问题

一个解决方案中,包括一个WCF服务库和一个WPF项目,WPF添加了WCF服务,并作为启动项目,点击窗体中的一个按钮,在里面调用WCF服务,最后调用成功。

我想问的是,不是说的WCF服务需要寄宿在一个进程中,才能生效的吗?这个示例中,哪里有寄宿啊?客户端不就是那个WPF项目吗?


------解决方案--------------------
wpf的进程就是它的寄宿进程。
------解决方案--------------------
因为你使用了visual studio,WCF的host工作被自动完成了,在WPF中添加了wcf服务,那么WPF就是所谓的客户端了,不负责寄宿,而是负责调用。

微软的东西就是越来越让人觉得“神奇”,因为它做了很多自动化工作。
------解决方案--------------------
从你引用的图来看,宿主是VS提供的,好象叫WcfHost.exe吧,确切名称自己查一下吧。
这个宿主应该是在调试时,由VS自动启动的。
所以在正式发布时,需要你自己为service指定一个宿主。
------解决方案--------------------
引用:
Quote: 引用:

wpf的进程就是它的寄宿进程。

WPF的进程就是寄宿进程?可是WPF是客户端程序啊,如果此时的WCF服务在远程服务器上,....有什么不一样吗?

十分抱歉,是我自以为是了,我说错了,WCF的寄宿程序是visual studio自己启动的一个进程。
不知楼主是否如此操作的:
1、新建WCF服务库程序WcfServiceLibrary1;
2、然后点击F5(或者Debug),启动该程序,这是Visual Studio会有提示:


3、然后拷贝服务地址,然后像你所说那样添加引用。
这时你的WCF服务的寄宿进程就是随WCF测试客户端一起启动的,名为:WcfSvcHost.exe的进程。

即上图被红色圈住的进程,下面那个就是WCF测试客户端的进程了。
所以WCF服务一定需要寄宿在某个进程上,而你启动WCF服务程序的时候,Visual Studio会自动给你创建一个这样的服务。
希望帮到你。
------解决方案--------------------
你这个localhost 一串的路径,明显是把wcf的服务端 用网站服务器承载了呀,客户端 就像调用webservice一样的调用,这不是很清楚吗?
------解决方案--------------------
既然你在添加服务引用的时候,能够正常显示服务,那就表示你的服务已经在这之前host起来的。这个跟你的WPF程序启动不启动没有关系。关键是不知道在添加服务引用之前你是如何操作的,IIS寄宿或者你有单独的进程host服务,但是你没注意。
------解决方案--------------------
可以自我寄宿和寄宿IIS中,但是楼主,你既然要用wcf为什么就不好好查资呢,这属于设计范畴了。
------解决方案--------------------
对哪个project F5?从你意思看,应该是还有其他project的,但是从最开始的整个solution的截图看,没看到其他的project,关键就是看你之前F5的那个project
------解决方案--------------------
那你启动的那个WCF程序就是host服务的操作了啊。
------解决方案--------------------
引用:
Quote: 引用:

希望帮到你。

那如果今后我有WCF服务放在远程服务器上的,是不是必定得写个寄宿程序呢?这个寄宿程序是放在哪里的呢?


使用asp.net来部署,或者window server部署(控制台程序部署,等等),这些都是部署。就好像你写一个类库来计算四则计算,然后把这个类库部署在不同程序上。实际上,都可以部署wcf。

不过话说回来,我更愿意自己写一个最简单最轻量的http消息服务功能,使用 json 方式,服务于所有web请求。而不是什么wcf。
------解决方案--------------------
添加WCF类库时,vs自动绑定内置宿主进程启动的,你点击鼠标右键查看该类库属性即可发现,它和一般类库不一样,带自启动功能的,由vs提供支持。
------解决方案--------------------
引用:
Quote: 引用: