【问题标题】:What is a good architecture for a server service and gui?服务器服务和 gui 的良好架构是什么?
【发布时间】:2009-04-01 02:38:22
【问题描述】:

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

我正在考虑将服务器公开为一项服务,但我无法使用 GUI 来允许用户配置密码和电子邮件帐户等内容。我怎样才能把这些分开?

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

【问题讨论】:

    标签: c# .net architecture


    【解决方案1】:

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

    【讨论】:

    • 用户前端总是在同一台机器上。使用 WCF 有意义吗?我正在考虑通过 .net 远程 IPC 通道进行通信。
    • 精彩系列视频,如果您点击足够多的页面,您可以下载每个网络直播的视频:dasblonde.net/2007/06/24/WCFWebcastSeries.aspx
    • 谢谢,我会研究 WCF。由于我已经知道 .net 远程处理,所以我不明白为什么要为它学习抽象。
    • 我会避免使用远程处理,因为它会带来许多附加问题:通信协议不是最好的,如果不是来自本地网络,连接会出现问题,版本控制。 WCF 允许稍后配置实际协议,因此更加灵活。
    • 微软已经解决并避免了许多存在于类似预先存在的技术中的问题我可以理解,有时只使用你所知道的很好,因为如果实施不正确,承担新的风险会带来风险你正在学习它。这取决于你的情况。
    【解决方案2】:

    主要不是如何做服务本身的问题。通信协议不是主要问题——使用 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。但我担心它会增加不必要的复杂性

    【讨论】: