Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用WCF Web服务的传统服务器_C#_Wcf - Fatal编程技术网

C#使用WCF Web服务的传统服务器

C#使用WCF Web服务的传统服务器,c#,wcf,C#,Wcf,我正在创建一个客户端应用程序,从雅虎下载和显示市场数据!对于一个大学项目,但这也会向手机发送通知(目前使用的是谷歌云消息)。到目前为止,它是一个WPF客户机,“服务器”是一个类库——到目前为止还可以工作。我想知道的是,您是否可以将此服务器与WCF服务混合使用—我计划使用WCF服务来注册设备,以及接受和解析命令 因此,我会在我的服务器对象上调用.Start(),它会一直在后台运行,而WCF REST服务会在它旁边运行——或者我最好在服务器上运行一个线程,可以接受输入。。。很抱歉,这让人困惑,但我只

我正在创建一个客户端应用程序,从雅虎下载和显示市场数据!对于一个大学项目,但这也会向手机发送通知(目前使用的是谷歌云消息)。到目前为止,它是一个WPF客户机,“服务器”是一个类库——到目前为止还可以工作。我想知道的是,您是否可以将此服务器与WCF服务混合使用—我计划使用WCF服务来注册设备,以及接受和解析命令

因此,我会在我的服务器对象上调用
.Start()
,它会一直在后台运行,而WCF REST服务会在它旁边运行——或者我最好在服务器上运行一个线程,可以接受输入。。。很抱歉,这让人困惑,但我只是想知道它是否可以,或者以前是否做过,或者是否有任何建议。:)

只是为了更好地解释一下


客户端前端和“服务器”运行在同一台机器上——我称之为服务器,因为它不仅更新前端,而且同时发送GCM通知。我想知道是否可以添加一个WCF服务来简化向数据库添加设备的操作(“服务器”从数据库读取设备注册ID列表,并向这些设备发送通知)如果您的服务器上有一个通知服务,并且有多个WPF客户端应用程序连接到该服务,那么通过允许android应用程序通过REST或类似的方式查看详细信息,WCF服务将非常有用。如果您只有一个应用程序在同一台服务器上运行,那么不确定它是否值得开销


通常的模式是在IIS中承载WCF服务,这样它总是在收到第一个请求时启动。WCF非常灵活,因此您可以在Windows服务、控制台应用程序等中托管。

我将探讨如何将类库包装到Windows服务中(这基本上是一个连续运行的进程,可以停止/启动/暂停),并将您的WCF服务作为用于客户端通信的web服务


WCF客户端服务与Windows服务的通信方式取决于您-您是否将数据存储在共享数据库中,是否将其保存在内存中,以及是否有另一个WCF层在两者之间通信,等等。共享数据库将是最简单的,特别是如果您希望将数据持久化以供其他应用程序/服务使用。

显然,您可以混合使用几乎任何类型的服务/库。。。您的目标是通过REST服务或其他方式在进程之间进行通信吗?现在还不清楚到底需要什么比基本的WPF应用程序更复杂。是的,它的结构现在我有了WPF应用程序,选择了“启动服务器”,服务器是从mainWindowViewModel启动的。当服务器获得更新时,它会触发一个事件,该事件将数据从类库发送到ViewModel,ViewModel会依次处理数据、更新显示等。除了数据库中的用户设置和配置之外,实际上不会保留任何数据—数据存储在类库中的词典中。并保存在内存中,在其转储结束时基于此,您最好在关闭WPF应用程序时将字典序列化到磁盘,并在启动它时重新加载字典。这将解决你眼前的问题。对于生产系统,我将在Windows服务中创建WCF服务(或在asp.net应用中创建WCF服务,以便在IIS中托管),然后修改WPF应用以使用WCF服务方法,方法与Android设备相同。