2012-02-12 93 views
2

我今天早上正在为一个宠物项目设置一个新工具,并意识到每种SaaS工具都有一个特定的模式:发件人代理。SaaS代理模式

即我有我的web应用程序,但它不能与数据库层进行交谈(当然也不应该),所以有一个运行在门控网络内的代理发布到webapp。

但有我失踪

编辑一个更好的办法:让我定义我的条件更好的例子。 ServerDensity是我们使用的监控工具。对于我想要监控的每个专业设备,我编写一个发件人代理(即通过HTTP发布SD更新的插件脚本),因为SD无法直接与我的数据库进行通信。

我意识到这个问题可以归结为RPC问题。

回答

2

让我先解决您提出的前提:“......每一个SaaS工具都遵循一种特定模式:发件人代理”。我希望你能把我引用到本声明的来源。根据我的SaaS经验,我从来没有听说过这种模式。

那么,诚实地说,“发件人代理”听起来像“业务组件”或“服务器内核”一样广泛和模糊。

我有我的web应用程序,但它不能跟数据库层(也不应该 当然不是,)

你不是在比较苹果和苹果在这里。 Webapp是,数据库是一个层。 Webapp层必须与数据库层交谈。 Webapp可能有不同的,并且webapp中的持久层将与数据库层进行通信。

...所以有一个代理运行在我的门控网络中,发布 到webapp。

这使得它听起来像webapp是一个没有生命的雕像,而一个经纪人是一个雕塑家谁是在它周围跑来跑去,并投掷大块的粘土上。 Webapp正在接收来自客户端的请求,查询持久层(可能是缓存)并发回响应。无论您使用哪种代理,都会将数据发布到持久性或排队存储,而不是Web应用程序本身。

在层与层阅读起来,它会帮助你更好地理解web应用和SaaS模式:What's the difference between "Layers" and "Tiers"?

更新

谢谢你的澄清,这显著变化问题。你在做什么听起来很合理。您在特定系统的限制范围内工作,并且必须满足插件合同。如果合同规定必须是HTTP POST,那么这就是你必须做的。

关于如何做到这一点,有几十种方法。下面是几个:

  • 的药剂推事件服务器事件发生时
  • 的情况下,代理商可以把太多的压力在服务器上,代理(S)推动事件的队列。队列,然后由专门的排空和节流,将读取你的数据库,推动事件的服务器进程
  • 调度进程(守护进程)以一定的间隔读取数据库和更新推到服务器
+0

这可能不是官方的“四人帮”模式,但它存在于“战壕”中。如果你愿意的话,也许可以作为一种调停者/观察者。请参阅我上面编辑的示例,了解我实际上在问什么。 – 2012-02-13 16:49:20