【问题标题】:server side technology for business logic业务逻辑的服务器端技术
【发布时间】:2013-04-13 04:46:47
【问题描述】:
假设我想开发一个 Web 应用程序,该应用程序将拥有注册用户并将注册为 twitter 应用程序(允许用户授予它查看他们的时间线并代表他们发帖的权限)。该应用程序的唯一功能将是根据用户的设置和愿望从用户的时间线转发推文。
我了解该应用程序的网站将在客户端使用 HTML、CSS 和 JS 等常用技术。服务器端(用户定义应用程序应转推的推文类型)必须在 PHP/Python/Perl/... 基于 DB MySQL/Postgre/...
我不明白并且非常感谢您的帮助,真正的“业务逻辑”将在哪里编码?例如,我应该使用什么技术来编写服务器上的功能:每 5 分钟联系一次 Twitter 服务器,阅读我拥有的每个用户的时间线,检查是否有值得转发的推文(根据用户定义的内容) ),并向 Tweeter 发送必要的命令,以代表我的用户转发所选推文。
所有这些都将为用户离线发生,并且将是一个持续和循环的过程 - 但我应该使用什么技术来编码呢?
谢谢!
【问题讨论】:
标签:
server-side
web-deployment
business-logic
web-technologies
【解决方案1】:
我听说过this API for PHP。不过,它实际上是我听说过的唯一一个 PHP 版本。我知道那里有一些不错的 Python 库,但我不了解 Perl。
我实际上正在为 C# 开发一个新的 API(不适合您,因为您显然没有使用 Windows 服务器),并在开发一个提示几个问题的企业 Web 应用程序时开始构建它类似于你自己的。
这是你必须要做的:
- 在开始之前,您必须与 Twitter 的数据合作伙伴之一取得联系(我相信您可以联系 Twitter 以获取参考)
- 这样做的原因是您需要的请求比您想象的要多得多
- Twitter 用于记录 Twitter 速率上限的时间间隔为 900 秒(5 分钟)
- 如果您在每个速率限制中仅查询用户的时间线一次,则使用一般速率限制,您将您网站上的访问者数量限制为一次 300
- 这就是它变得棘手的地方 - 如果每个用户都发布一条推文(意味着您发送推文 - 不受速率限制 - 然后刷新时间线 - 速率受限 - 以便他们可以看到更新的推文),那么您现在已经降低了最大值在任何给定时间的活跃用户数达到 150
- 考虑公司自己的时间线(-1 位访客),加上打开浏览器的访客数量(现在您需要更多的逻辑,您必须将他们赶走,或者只是跟踪您赢得了谁的时间线' t 令人耳目一新),发布超过一条推文的用户数量(每条推文为 -1 位访问者)等。
-
故事的寓意:联系他们的数据合作伙伴,让自己获得无限的请求,或者至少有足够的数量来容纳您的访问者/用户数量(加上一些填充)
- 如果您遵守此建议,请跳过第 2 步和第 3 步,否则请跳过第 4 步
- (注意:第 2 步和第 3 步仅适用于速率上限实施)使用您想要的语言,创建一个在服务器上运行的服务并向 Twitter 发出查询
- 根据您提供的信息,我建议您使用 Python 来制作此服务
- 该服务将始终运行,并按照自己的时钟运行,以基于请求之间的 5 分钟间隔
- 您必须使用缓存或数据库系统来存储数据
- (注意:步骤 2 和 3 仅适用于速率上限实施)添加必要的代码以向您为数据创建的服务发出请求,并每 5 分钟执行一次这些请求
- 我建议用于向服务发出这些请求的时钟比用于服务的时钟慢一点,以解决数据传输缓慢等情况。
- 您还必须调用服务上的一些方法来从队列中添加/删除用户
- (注意:第 4 步仅适用于无限制请求实施)忘记服务,只需将请求代码直接包含在用户所在的页面中即可。
- 将根据用户访问网站的时间或上次刷新时间线的时间(如果发布推文)更新用户的时间线
- 对此实施的唯一警告是您必须为无限/更大的数据速率限制付费