1

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

  1. 可以使用 WCF(没有经常使用它)与发送者和接收者(都公开 Web 服务)通信吗?
  2. 如何确保保证交付?
  3. 如何确保 Internet 上消息的安全性?
  4. 处理并发问题的最佳实践是什么?
  5. 错误处理的最佳实践是什么?
  6. 如何确保数据的可靠性(数据在途中不被篡改)
  7. 如何确保将数据接收回发件人?
  8. 我需要注意哪些限制?

我需要使用自定义 .NET 解决方案在 MS 平台上实现这一点。我被告知不要使用像 BizTalk 这样的任何中间件。接收器是一个 SDFC 实例,如果这很重要的话。

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

4

1 回答 1

2

协调交换的 Windows 服务听起来不错。是的,WCF 可以处理传统的 Web 服务。

如何确保保证交付?

为了确保交付,您可以使用TransactionScope来处理和之间的数据传递, Receiver <=> Intermediate LayerIntermediate Layer <=> Sender我不会尝试将它们一起做。

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

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

考虑场景:

  • 您如何管理失败的交付?
  • 如果收件人(或发件人)在一段时间内不可用(以及那是多长时间?),会发生什么情况;例如:您是否需要通过电子邮件“升级”给操作员?

如何确保 Internet 上消息的安全性?

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

处理并发问题的最佳实践是什么?

嗯可能是一个单独的问题。你应该能够很容易地找到这方面的信息。我们正在获取多少数据?什么样的频率?您打算拥有多少个 Windows 服务实例 - 如果一个就足够了,为什么并发会成为问题?

错误处理的最佳实践是什么?

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

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

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

包括它(发送收据)作为交易的一部分。

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

于 2011-07-28T04:00:23.453 回答