【问题标题】:Hosting service oriented architecture托管面向服务的架构
【发布时间】:2011-03-11 02:15:23
【问题描述】:

在一次采访中,在 soa 上提出了一个问题。请看下文。

我需要开发一个应用程序,该应用程序应根据客户端的要求托管为 Windows 服务、Web 服务、桌面应用程序或 Web。你如何设计和方法

我说过,WCF 在某种程度上试图达到同样的效果。但他问如果 WCF 不存在怎么办。我会尝试在业务逻辑之上公开服务层,以便任何人都可以使用它。我知道这并不令人满意。

或者我是否需要使用任何托管 api 才能做到这一点。但是它们可以在不更改任何代码的情况下进行配置吗?

请分享你的看法?

【问题讨论】:

  • @Sanjeev :我正在寻找有关此主题的更多可能答案,因为它是一个有争议的话题。这就是延迟的原因

标签: .net wcf hosting soa


【解决方案1】:

我仍然会坚持你的回答,特别是如果我正在接受采访,请按照以下方式。这取决于面试官如何推动对话,但我想遵循思考过程会起作用。

假设WCF不存在,那么我必须自己构建一个可以解决问题的mini-WCF,如何? WCF 提供什么?

  1. 它为通道、托管、身份验证等提供了一堆工厂。这意味着 WCF 是一种用于编写服务的域特定语言。
  2. 它在代码(您的代码)和进行身份验证、日志记录、序列化所需的管道之间提供一定程度的隔离。

因此,对于给定的业务领域,如果我构建上述一组服务(可能不像 WCF 那样健壮、可靠或可配置)但解决了业务问题,我可能会将您的代码托管在所有可能的托管环境中。对于每个环境,我可能必须实现一些基本的管道,例如激活、通道启用,这样我也可以支持任何未来的托管场景。

如果托管问题和我支持的协议类型有限,无论是否使用 WCF,成本差异都不会很大。因为编写服务业务逻辑、数据访问、应用程序接口的成本是一样的,只是去掉了管道。

再想一想,我可以问面试官remoting 有空吗?如果那里已经有这么多的 WCF 管道可用。

再次回到正轨,假设我们没有任何当前的技术堆栈,那么它证明为公司投资自定义堆栈的成本是合理的,因为它有机会创建如此强大的平台并创建标准在空白处。

我不确定面试官想问什么,我也问过类似的问题,看看这个人是否可以通过构建业务案例来推动技术发展,而不会真正陷入限制。

【讨论】:

    【解决方案2】:

    其中一些技术与其他技术完全不同。您不能编写既是好的 Windows 服务又是 GUI 应用程序的东西。根据定义,Windows 服务没有 GUI。您需要向客户解释他们正在浪费金钱试图同时做一些事情。

    举个具体的例子:同一辆车不可能既是好扫雪机又是好赛车。您可以制作两者兼而有之的东西,但它要么在这两种工作上都很差,要么非常昂贵。

    【讨论】:

    • 郑重声明,您所说的汽车很可能在这两个方面都很差,而且非常昂贵:)
    • 这是一个有效的问题,同一辆车不可能既是好雪犁又是好赛车。但是相同的变速箱、轮胎或汽车座椅可以用于各种类型的汽车,这就是这里所要求的。需要从不同的托管模型调用(无论出于何种原因托管)相同的代码/服务。
    【解决方案3】:

    演示 -> 服务 -> 业务 -> 数据访问 -> 数据

    该服务允许配置业务、数据访问和数据,而不管演示文稿是如何构建的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-12
      • 2021-06-20
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      相关资源
      最近更新 更多