设计用于在两个系统之间交换数据的体系结构

时间:2011-07-27 21:18:17

标签: web-services architecture data-exchange

我的任务是创建一个需要在两个独立系统之间交换数据(通过HTTP)的中间层(例如,Receiver< => Intermediate Layer(IL)< => Sender)。 Receiver和Sender都通过Web服务公开一组API。每次在Sender系统中发生事务时,IL应该知道它(我正在考虑创建一个不断ping发件人的Windows服务),按摩数据,然后将其传递给Receiver。 IL可以将数据临时存储在SQL数据库中,直到将其传输到Receiver。我有以下问题 -

  1. 是否可以使用WCF(未经常使用它)与发件人和接收者(两者都公开网络服务)进行对话?
  2. 如何确保交付有保证?
  3. 如何通过互联网确保邮件的安全性?
  4. 处理并发问题的最佳做法是什么?
  5. 错误处理的最佳做法是什么?
  6. 如何确保数据的可靠性(数据不会在此过程中被篡改)
  7. 如何确保将数据接收回发件人?
  8. 我需要注意哪些限制?
  9. 我需要使用自定义.NET解决方案在MS平台上实现此功能。有人告诉我不要使用像BizTalk这样的中间件。如果重要的话,接收器是SDFC实例。

    非常感谢任何指针。谢谢。

1 个答案:

答案 0 :(得分:2)

管理交换机的Windows服务听起来很不错。 是的WCF可以处理传统的Web服务。

  

如何确保交付有保障?

为确保投放,您可以使用TransactionScope来处理数据之间的传递 Receiver <=> Intermediate LayerIntermediate Layer <=> Sender,但我不会尝试一起做。

您可能需要考虑某种排队机制来将数据发送到接收方;我想我更多的是考虑逻辑队列而不是实际的排队组件。工作流框架也可以是一种选择。

确保您有良好的记录/审核;确保它坚如磐石,拥有正确的信息并且易于阅读。假设您编写服务,它将在没有监督的情况下执行,因此操作/支持方面要求更高。

考虑场景:

  • 您如何管理交付失败?
  • 如果接收方(或发送方)在一段时间内是不可用的(这需要多长时间?)会发生什么?例如:您是否需要通过电子邮件“升级”给运营商?
  

如何通过互联网确保邮件的安全性?

HTTPS。假设其他现有客户端调用Web服务,他们如何确保安全性? (我在考虑加密)。

  

处理并发问题的最佳做法是什么?

嗯可能是一个单独的问题。您应该能够轻松地找到相关信息。我们采取了多少数据?什么样的频率?您想要使用多少Windows服务实例 - 如果一个足够,为什么并发会成为一个问题?

  

错误处理的最佳做法是什么?

与并发相同,但我可以提供一些指示:

  • 使用已建立的日志框架,我非常喜欢MS EntLibs,但还有其他(重新使用当前使用的任何内容可能会更有意义 - 如果有的话)。
  • 请记住执行无人值守,因此请确保信息完整,清晰且明确。我很想记录更多,并在达到舒适程度后将其拨下来。
  • 使用顶级处理程序确保没有任何东西丢失;但是,不要害怕深入了解您仍然可以获得有用上下文的应用程序(例如发送/接收的数据的元数据)。
  

如何确保将数据接收回发件人?

将其包括在内(发送收据)作为交易的一部分。

从另一个角度来看 - 看看CodePlex for ESB类型库,您可能会发现一些有用的东西:http://www.codeplex.com/site/search?query=ESB&ac=8 例如ESBasic,它似乎是一个可以重用的类库。