【发布时间】:2013-07-21 06:48:22
【问题描述】:
我有一个场景需要我将一个大型邮件列表(> 100 万客户)导出到外部电子邮件系统。我拥有两个应用程序的源代码和控制权。
我需要一种将数据从一个系统传输到另一个系统的机制:
- 稳健
- 快
- 安全
到目前为止,我已经设置了一个标准的 MVC 控制器方法来响应请求(通过 https),执行一些自定义安全检查,然后从数据库中提取数据。
当从数据库中检索数据时,控制器方法会迭代结果,并以纯文本格式写入响应,每 100 条左右的记录刷新一次响应。接收方读取响应的每一行并执行存储和处理逻辑。
我选择了这种方法,因为它不需要将用户数据持久化到永久文件中,并且以任何语言构建的客户端都能够实现接收器逻辑,而无需依赖任何专有技术(例如 WCF)。
我知道我可以在 .NET 中使用其他传输机制,但考虑到上面列出的要求,没有一个具有整体优势。
了解哪些技术可能比我的请求/响应解决方案更好?
【问题讨论】:
-
为什么不用共享数据库?
-
“我知道我可以与 .NET 一起使用的其他传输机制” - 请说出它们的名称以及您认为它们不够用的原因。例如,WCF 可以通过 SOAP 1.1、1.2 和 REST 公开服务,几乎可以使用任何语言。除此之外,我认为您的要求还不够SMART。定义“不健壮”,因为任何互联网络解决方案都依赖于 TCP。定义“快速”,因为它取决于您要传输的数据类型以及序列化程度。定义“安全”,你想要消息安全、传输安全、身份验证吗?您是否考虑过使用证书应用 TLS?
-
如果您有 100 万客户,那么归结为一个文件有多大?您还计划支持分页还是从头到尾迭代?除非不可能,否则我个人只会共享数据库,但我会在后端构建一个进程,该进程能够比 MVC 应用程序恢复得更好。有时 Windows 服务更适合这项工作。
-
@Sergio 共享数据库在这里不是一个选项,系统位于不同的网络上,并且安全限制阻止将数据库服务器打开到 WAN。
-
@CodeCaster - 是的 TLS 将通过 SSL 证书使用,因此不需要传输级安全性,消息级安全性。我知道 WCF 服务可以提供 SOAP 响应等,但是由于响应是从纯文本格式处理的,所以我没有看到使用 WCF 的优势,除非有我不知道的隐式可靠性改进。我刚刚使用了纯文本响应,因为在序列化方面不需要更复杂的
标签: c# asp.net-mvc data-transfer