我想设计一个防弹、容错、数据库驱动的 Web 应用程序,并且想知道如何构建它。
该系统将有一个 asp.net 用户界面、web 服务中间层和 SQL2005 后端。UI 和服务将使用 JSON 调用进行通信。
我想知道如何确保事务被提交,如果没有任何错误冒泡并被记录下来。理想情况下,每隔 5 分钟重试几次操作,就像电子邮件应用程序一样。
我正计划在 SQL 中使用 try catch 块,并且想知道 SQL 存储过程和调用它们的服务之间的接口(或合同,如果你愿意的话)会是什么样子。该接口将扮演 2 个角色,一个是为 proc 传递参数以运行并返回预期结果。接下来是proc返回错误信息。也许像错误号和错误消息之类的东西。
我的难题是如何智能地构建它,以便服务期望并相应地响应从 proc 返回的数据和错误信息,并相应地处理每一个信息?
是否有一个框架,因为它看起来很样板?
当然!就像关键任务应用程序中大多数有趣的问题一样,这实际上是 IBM 在 1970 年代解决的,但 IT 行业总是追逐最闪亮的新事物,对过去伟大的工程师并不尊重。我指的当然是面向消息的中间件,或者正如当时所知的那样,TPF。这个原理实际上非常简单,并且已经被银行、航空公司、电信公司等一再证明。
基本操作是将消息放入队列,以及从队列中取出消息。因此,当您的应用程序需要做一些工作时,它会将其打包为一条消息并将其放入下一个服务的队列中。然后,TPM 将该消息从队列中取出并尝试对其进行处理。如果失败,则消息简单地返回到队列中以再次尝试,如果它继续失败,则被分流到处理失败的队列。消息总线还处理路由、负载平衡和所有这些好东西。您可以购买现成的这些功能:MQSeries和Tibco Rendezvous是“重要的”功能,但周围还有很多其他功能,其中许多与JMS兼容因此您不会受制于一个供应商(当然,如果您使用 JMS,那么您也受制于最低公分母)。您将消息总线指定为超可靠和容错的,然后您只需将服务挂在它的背面,并将您的应用程序放在前面。SOA 是另一个用新的流行语重新加热旧想法的例子......