我想利用WCF的双工通讯实现消息推送,但是我在园子里看的是,都是把服务寄宿在winform服务端,winform程序一启动,把这个服务启动,然后获取所连接的客户端列表,然后实现推送。现在我想把这个服务寄宿到iis中,而不是winform中,winform不做宿主,只相当于一个推送的服务端。就是winform一启动之后,就能实现推送,服务寄宿在iis中。
你的想法很好啊,只是很可惜没有看出你的问题在哪儿。
纠正一下,不是所有的博文都把WCF寄宿在Winform的,一般有时候只是为了DEMO简单起见。
你可以多看看ARTECH的文章,我没有记错的话,他好象很少把WCF寄宿在Winform里面。
winform程序启动之后,如何获取服务所连接的客户端列表。这个winform程序跟服务到底是什么关系。
@慕容展云: 我现在就想把服务都寄宿到iis中,然后实现双工通讯。不知道您有何见解,如何实现这个功能。在实际的项目开发中,服务都是寄宿在哪?是IIS还是WAS?
@慕容展云: 说实话ARTECH的博客,写的我看不太懂,我是初学者,感觉好多概念都不懂,您有没有这方面的入门书籍推荐下吗?
@慕容展云:
这个跟寄宿在哪儿没有关系。你需要用户列表,请自己在服务端实现一个类似List(User)的结构。
每个客户端进来先注册,退出就把User移除。类似如下
Login(username, password)
GetUserList
Logout(username)
这个跟WCF也没有关系,你用什么技术都要这样做的。
@慕容展云:
你看看Artech的WCF系列吧,WCF可以寄宿在IIS(这个是可以避免Firewall的配置问题),也可以寄宿在其他Host里面,各有优缺点吧。
@慕容展云: 说实话,如果你是初学者,不明白你为什么要学WCF。
WCF这种东西对初学者一点用处都没有。
我是公司的领导也不会让初学者搞WCF的。
@爱编程的大叔: 我还是学生,我也不是很想学习WCF,项目中要用到的。
@慕容展云:
Artech的系列其实基本也就是入门系列的。你为什么会看不懂呢,其实是因为思维上
你还没有办法理解为什么要这样那样做。
初学开发,你先能实现功能,别管技术好不好,漂亮不漂亮。
前期先COPY+PASTE,后面才想怎么样避免COPY+PASTE。
WCF这个技术你不要想太多,简单实现还是很容易的,相信你也实现出来了。
不要想着用他搞一个QQ出来,你做到一点就行,保证每一次修改可以正常运行。
再进行下一次修改。
@爱编程的大叔: 大叔,这个功能您能帮我实现下吗?不要喷我,我真的写不出来了,不知道怎么弄。您说的你需要用户列表,请自己在服务端实现一个类似List(User)的结构。这个我是这样做的,我不明白的是这个winform程序是不是还要像客户端那样调用这个程序。我尝试调用了这个服务,也能获取到这个list,但是编程了object[]类型的,就没有办法调用回调了。
@慕容展云:
我不怎么喷人的,只是说话比较直接罢了。
1、问问题,你必须把一个大问题拆成小问题,别人才能帮上忙。
比如你问WCF慢,大家会告诉你不是。那是你电脑的问题,你得到电脑上去找问题,看是不是片看多了,中了木马或者病毒。
2、你要问list的问题,你就开一个问题,把代码PASTE出来,自然有大能帮你,注意别贴无关的代码。
如果你是有关WCF的都不懂,那肯定要建议你先看书。r
3、看书或者学习技术,要先到达一个程度,就是你可以将问题细分,不要把问题掺在一起,你把一个大问题拆解成为100个小问题,你会发现每个问题都可以有很简单的解决方案的。
@爱编程的大叔: 非常感谢大叔的指点,我已经做出来了。希望以后您多指教。
发布-订阅模式有三个组件:发布者,订阅者,发布-订阅总线。
订阅者好理解,就是你提到的客户端;
发布者也好理解,就是你提到的“winform不做宿主,只相当于一个推送的服务端”;
发布-订阅总线这可能不好理解,它相当于你提到的“就是winform一启动之后,就能实现推送,服务寄宿在iis中”中的最后几个字“服务寄宿在iis中”。
不论是否用 WCF,也不区分进程内还是进程外通信方式,订阅者向发布-订阅总线订阅主题,发布-订阅总线管理订阅者及其订阅的主题,发布者向发布-订阅总线发送主题内容,发布-订阅总线根据订阅者和订阅者订阅的主题将主题内容发送给发布者。
在发布-订阅模式中,一个很明显的特征就是发布者和订阅者之间是透明的,即发布者不知道有哪些订阅者,订阅者也不知道有哪些发布者。
您理解的要比我要深入的多,以后还望多向您请教!
IIS作为wcf的宿主所能支持的协议是基于http的 二双工通信是基于tcp的所以 你这宿主不行的!
基于http 的可以用wsdualhttp协议的,这个可以做的。不过还是非常感谢您的回答,谢谢!
IIS有自动回收进程机制,造成内存数据丢失,做回调宿主建议用windows service。
1.IIS 经过扩展可以支持tcp协议,除tcp支持双向通过,还有 wsduaphttp使用此协议可以不用扩展iis