首页 新闻 会员 周边 捐助

WCF消息推送

0
悬赏园豆:40 [已解决问题] 解决于 2014-08-11 11:36

我想利用WCF的双工通讯实现消息推送,但是我在园子里看的是,都是把服务寄宿在winform服务端,winform程序一启动,把这个服务启动,然后获取所连接的客户端列表,然后实现推送。现在我想把这个服务寄宿到iis中,而不是winform中,winform不做宿主,只相当于一个推送的服务端。就是winform一启动之后,就能实现推送,服务寄宿在iis中。

WCF
慕容展云的主页 慕容展云 | 初学一级 | 园豆:122
提问于:2014-08-01 10:42
< >
分享
最佳答案
0

你的想法很好啊,只是很可惜没有看出你的问题在哪儿。

纠正一下,不是所有的博文都把WCF寄宿在Winform的,一般有时候只是为了DEMO简单起见。

你可以多看看ARTECH的文章,我没有记错的话,他好象很少把WCF寄宿在Winform里面。

收获园豆:30
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-08-01 10:48

winform程序启动之后,如何获取服务所连接的客户端列表。这个winform程序跟服务到底是什么关系。

慕容展云 | 园豆:122 (初学一级) | 2014-08-01 10:50

@慕容展云: 我现在就想把服务都寄宿到iis中,然后实现双工通讯。不知道您有何见解,如何实现这个功能。在实际的项目开发中,服务都是寄宿在哪?是IIS还是WAS?

慕容展云 | 园豆:122 (初学一级) | 2014-08-01 10:52

@慕容展云: 说实话ARTECH的博客,写的我看不太懂,我是初学者,感觉好多概念都不懂,您有没有这方面的入门书籍推荐下吗?

慕容展云 | 园豆:122 (初学一级) | 2014-08-01 10:54

@慕容展云: 

这个跟寄宿在哪儿没有关系。你需要用户列表,请自己在服务端实现一个类似List(User)的结构。

每个客户端进来先注册,退出就把User移除。类似如下

Login(username, password)

GetUserList

Logout(username)

这个跟WCF也没有关系,你用什么技术都要这样做的。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-08-01 10:56

@慕容展云: 

你看看Artech的WCF系列吧,WCF可以寄宿在IIS(这个是可以避免Firewall的配置问题),也可以寄宿在其他Host里面,各有优缺点吧。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-08-01 10:59

@慕容展云: 说实话,如果你是初学者,不明白你为什么要学WCF。

WCF这种东西对初学者一点用处都没有。

我是公司的领导也不会让初学者搞WCF的。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-08-01 11:01

@爱编程的大叔: 我还是学生,我也不是很想学习WCF,项目中要用到的。

慕容展云 | 园豆:122 (初学一级) | 2014-08-01 11:02

@慕容展云: 

Artech的系列其实基本也就是入门系列的。你为什么会看不懂呢,其实是因为思维上

你还没有办法理解为什么要这样那样做。

初学开发,你先能实现功能,别管技术好不好,漂亮不漂亮。

前期先COPY+PASTE,后面才想怎么样避免COPY+PASTE。

WCF这个技术你不要想太多,简单实现还是很容易的,相信你也实现出来了。

不要想着用他搞一个QQ出来,你做到一点就行,保证每一次修改可以正常运行。

再进行下一次修改。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-08-01 11:10

@爱编程的大叔: 大叔,这个功能您能帮我实现下吗?不要喷我,我真的写不出来了,不知道怎么弄。您说的你需要用户列表,请自己在服务端实现一个类似List(User)的结构。这个我是这样做的,我不明白的是这个winform程序是不是还要像客户端那样调用这个程序。我尝试调用了这个服务,也能获取到这个list,但是编程了object[]类型的,就没有办法调用回调了。

慕容展云 | 园豆:122 (初学一级) | 2014-08-01 11:16

@慕容展云: 

我不怎么喷人的,只是说话比较直接罢了。

1、问问题,你必须把一个大问题拆成小问题,别人才能帮上忙。

比如你问WCF慢,大家会告诉你不是。那是你电脑的问题,你得到电脑上去找问题,看是不是片看多了,中了木马或者病毒。

2、你要问list的问题,你就开一个问题,把代码PASTE出来,自然有大能帮你,注意别贴无关的代码。

如果你是有关WCF的都不懂,那肯定要建议你先看书。r

3、看书或者学习技术,要先到达一个程度,就是你可以将问题细分,不要把问题掺在一起,你把一个大问题拆解成为100个小问题,你会发现每个问题都可以有很简单的解决方案的。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-08-01 11:23

@爱编程的大叔: 非常感谢大叔的指点,我已经做出来了。希望以后您多指教。

慕容展云 | 园豆:122 (初学一级) | 2014-08-11 11:34
其他回答(3)
0

发布-订阅模式有三个组件:发布者,订阅者,发布-订阅总线。

订阅者好理解,就是你提到的客户端;

发布者也好理解,就是你提到的“winform不做宿主,只相当于一个推送的服务端”;

发布-订阅总线这可能不好理解,它相当于你提到的“就是winform一启动之后,就能实现推送,服务寄宿在iis中”中的最后几个字“服务寄宿在iis中”。

不论是否用 WCF,也不区分进程内还是进程外通信方式,订阅者向发布-订阅总线订阅主题,发布-订阅总线管理订阅者及其订阅的主题,发布者向发布-订阅总线发送主题内容,发布-订阅总线根据订阅者和订阅者订阅的主题将主题内容发送给发布者。

 

在发布-订阅模式中,一个很明显的特征就是发布者和订阅者之间是透明的,即发布者不知道有哪些订阅者,订阅者也不知道有哪些发布者。

收获园豆:5
Launcher | 园豆:45050 (高人七级) | 2014-08-01 13:19

您理解的要比我要深入的多,以后还望多向您请教!

支持(0) 反对(0) 慕容展云 | 园豆:122 (初学一级) | 2014-08-11 11:35
0

IIS作为wcf的宿主所能支持的协议是基于http的 二双工通信是基于tcp的所以 你这宿主不行的!

收获园豆:5
C#Wiser | 园豆:6 (初学一级) | 2014-08-02 23:21

基于http 的可以用wsdualhttp协议的,这个可以做的。不过还是非常感谢您的回答,谢谢!

支持(0) 反对(0) 慕容展云 | 园豆:122 (初学一级) | 2014-08-11 11:35
0

IIS有自动回收进程机制,造成内存数据丢失,做回调宿主建议用windows service。

1.IIS 经过扩展可以支持tcp协议,除tcp支持双向通过,还有 wsduaphttp使用此协议可以不用扩展iis

kaneli | 园豆:202 (菜鸟二级) | 2017-05-26 23:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册