和Google互补的搜索引擎Wolfram|Alpha
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
作者 Mark Figley 译者 戴垚 发布于 2007年11月26日 下午10时49分
有一些简单、基础性的工具是构建我们的软件基础设施的基础,当我发现那些能有效利用这些工具的解决方案的时候,对我来说总是件快事。与在现有复杂层次上再去创建另一个更多复杂层次不同,我们寻找使用软件架构栈中的核心构件来解决问题的方法。我认为像RESTful和POJO编程模型这类架构风格之所以能够与开发者产生如此多共鸣的原因就在于那种发现意外之财的幸福时刻。这里有一篇发表在developerWorks上的一篇短文,它向我们展示了如何为Ajax/REST架构减少网络流量和服务器处理,但是本文的可贵之处在于,他们有效利用了HTTP 304状态码,而不是推荐使用一些更加复杂的解决方案。这篇文章一开始就为Ajax/REST结构面临的一些挑战设定了上下文:
HTTP的一个简单事实是:HTTP是一个无状态的协议,它既是HTTP的最大优点也是其主要缺点。每一个对于HTTP服务器资源的请求都是幂等的,也就是说在每次调用相同的请求应该返回相同的结果。幂等是REST的中心思想:不管在什么时候发送相同的请求——也许编码了客户信息——都应该返回同样的数据。……[但] 如何理解“同样的数据”并不想看起来那么容易。同样的URI总是返回一样的数据只是一个粗糙的理解。毕竟,即使一个静态页面的内容也会改变(比如修正了一些拼写错误)。幂等背后的含义仅指相关的改变不应该对GET请求本身产生直接的影响。于是像这样一个总是变化的资源是一个完全合理的方法:http://myserver.example.com/latest_data/
这里的问题只不过是“最新数据(latest_data)”并不仅仅依赖于谁在什么时候以何种方式获取过。一个服务器可以完全是RESTful,并仍然反映“世界的现状”。
他们正在试图解决的问题有两个方面:减少网络流量和减少服务器对重复请求的处理。这当然不是一个新的问题。可以预料到他们解决服务器处理的方法:缓冲。RESTful架构的好处之一就是它可以被缓存。但这只解决了服务器处理的问题;即使数据没有任何改变,你还是不断的在网络上为每一个请求发送完整的数据集。而这正是HTTP 304状态码可以派上用场的地方:
事实上,“Not Modified”在HTTP协议中已经有合适的处理了,尽管这个正确的解决方案没有得到充分的使用。我们可以并需要做的是简单的返回一个HTTP 304状态码。然后由我们的Ajax代码来检查,如果发现了,就简单地根据服务器响应(缺乏)数据(译注:此处应指响应请求的状态码),不对客户应用状态进行更新。
他们还非常周到的提供了一些示例代码,包括在javascript里如何调用ajax方法并如何正确处理304状态码:
var r = new XMLHttpRequest();查看英文原文:Reducing Server Load and Network Traffic in REST/Ajax Architectures
r.onreadystatechange=function() {
if (r.readyState==4) {
if (r.status==200) { // "OK status"
displayData(r.responseText);
}
else if (r.status==304) {
// "Not Modified": No change to display
}
else {
alertProblem(r);
}
}
}
r.open("GET",'http://myserver.example.com/latest_data/',true)
r.send(null);
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。
罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。
Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。
中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。
HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。
6 条回复
关注此讨论 回复