什么是服务器服务和gui的良好架构?

时间:2009-03-29 12:12:20

标签: c# .net architecture

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

我正在考虑将服务器公开为服务但是我没有GUI允许用户配置密码和电子邮件帐户等内容。我该如何分开这些?

其次,这些命令是可插入的,应该提供自己的GUI。我怎样才能加入这个?服务器进程应该能够使用命令功能,GUI进程应该允许自定义。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

这里的主要问题是你如何实现GUI。如果您的应用程序是正常的Windows服务,那么它就没有内置的GUI。仅仅因为服务不应该拥有它。所以你需要单独的GUI应用程序。选项:

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

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

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

  4. 关于变体3的更多思考,我们发现该解决方案已经存在 - 它是Web技术。将您的服务作为网站的一部分实施是最简单的。 GUI将是另一个部分。如果您不熟悉HTML和Javascript,可以使用Silverlight实现GUI。

  5. 实际上,您可以在服务中托管ASP.NET。 Here is the good explanation。但我担心这会增加不必要的复杂性