Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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# 服务器服务和gui的良好体系结构是什么?_C#_.net_Architecture - Fatal编程技术网

C# 服务器服务和gui的良好体系结构是什么?

C# 服务器服务和gui的良好体系结构是什么?,c#,.net,architecture,C#,.net,Architecture,我正在开发一个应用程序,允许用户通过电子邮件在计算机上执行一些命令。服务器将监视(提取)一个或多个电子邮件帐户并启动通信会话。还涉及一些身份验证。我正在使用最新和最伟大的.net技术 我想将服务器公开为一项服务,但是我不能有一个GUI来允许用户配置密码和电子邮件帐户之类的东西。我怎样才能把这些分开 第二,这些命令是可插入的,应该提供自己的GUI。我如何合并这个?服务器进程应该能够使用命令功能,GUI进程应该允许定制 我使用了WCF,这是微软目前用于实现web服务和/或SOA的技术。您可以创建一个

我正在开发一个应用程序,允许用户通过电子邮件在计算机上执行一些命令。服务器将监视(提取)一个或多个电子邮件帐户并启动通信会话。还涉及一些身份验证。我正在使用最新和最伟大的.net技术

我想将服务器公开为一项服务,但是我不能有一个GUI来允许用户配置密码和电子邮件帐户之类的东西。我怎样才能把这些分开


第二,这些命令是可插入的,应该提供自己的GUI。我如何合并这个?服务器进程应该能够使用命令功能,GUI进程应该允许定制

我使用了WCF,这是微软目前用于实现web服务和/或SOA的技术。您可以创建一个桌面客户端或网页来调用WCF服务。WCF服务将是您的服务器组件,桌面客户端或网页将是您的用户前端。

这主要不是如何提供服务本身的问题。通信协议并不是主要问题——使用WCF,您可以通过协议的幽灵来公开应用程序方法。这只是一个应用程序配置的问题

这里的主要问题是如何实现GUI。如果您的应用程序是普通的windows服务,那么它就不能有内置的GUI。只是因为服务不应该有它。因此,您需要单独的GUI应用程序。选项:

  • GUI是独立的.NET应用程序,它以某种方式与您的服务进行通信。比如说通过WCF。在这种情况下,插件还应该由两部分实现:服务插件和GUI插件。我认为,这太复杂了,无法支持

  • 第1变体的修改。服务和GUI都打包在一个可执行文件中。它以什么模式启动(服务或独立)并监视邮件或显示GUI。由于这是一个应用程序,因此配置也相同。因此,您将有一个插件注册表。我假设,在GUI模式下,应用程序将搜索已启动的服务并对其进行配置。缺点-GUI只能在本地运行

  • 您制作了一种“可转移”的GUI——服务将GUI发送给简单的客户端,这就显示了它。在这种情况下,所有应用程序代码(服务和GUI)只有一个位置,但它部分在服务中执行,部分在客户端软件中执行。但您也需要这样的通用客户端软件

  • 再考虑一下变体3,我们会发现解决方案已经存在——它是web技术。将您的服务作为web站点的一部分实现是最简单的。GUI将是另一部分。如果您不熟悉HTML和Javascript,可以使用Silverlight实现GUI

  • 事实上,你可以在你的服务中托管ASP.NET。但我担心这会增加不必要的复杂性


  • 用户前端始终位于同一台计算机上。使用WCF有意义吗?我正在考虑通过.net远程IPC频道进行交流。@Bogdan:您可以在WCF中使用IPC,WCF取代并包括远程。优秀的视频系列,如果您点击足够多的页面,您可以为每次网络广播下载视频:谢谢,我将研究WCF。因为我已经知道.net远程处理,我不明白为什么我应该学习它的抽象。我会避免使用远程处理,因为它会带来很多附加问题:通信协议不是最好的协议,连接问题(如果不是来自本地网络),版本控制。WCF允许以后配置实际协议,因此更灵活。