JSON RESTful Client-Server(一)

来源:互联网 发布:酷狗铃声制作专家 mac 编辑:程序博客网 时间:2024/05/01 02:35


在描述这个框架的客户端-服务器设计之前,我们可能要详知一些所基于标准:

JSON作为其内部数据存储和传输格式;

RESful-作为其Client-Server体系结构。

10.1. JSON

10.1.1.为什么使用JSON ?

正如我们刚刚所说,这个框架的内部使用JSON格式。根据定义,JavaScript对象表示法(JSON)是一种标准,开放和计算机的轻量级数据交换格式。
JSON的基本类型,从http://en.wikipedia.org/wiki/JSON获取
TypeDescriptionNumberDouble precision floating-point format in JavaScript, generally depends on implementation. There is no specific integer typeStringDouble-quoted Unicode, with backslash escapingBooleantrue or falseArrayAn ordered sequence of values, comma-separated and enclosed in square brackets; the values do not need to be of the same typeObjectAn unordered collection of key:value pairs with the ':' character separating the key and the value, comma-separated and enclosed in curly braces; the keys must be strings and should be distinct from each othernullEmpty/undefined value

Non-significant white space may be added freely around the "structural characters" (i.e. brackets "{ } [ ]", colons ":" and commas ",").

下面的例子显示了JSON表示的对象,描述了一个人。
对象有字符串字段用于名和姓,一个数字字段用于年龄,一个对象代表了人的地址以及一个电话号码【对象数组】。

{    "firstName": "John",    "lastName": "Smith",    "age": 25,    "address": {        "streetAddress": "21 2nd Street",        "city": "New York",        "state": "NY",        "postalCode": 10021    },    "phoneNumbers": [        {            "type": "home",            "number": "212 555-1234"        },        {            "type": "fax",            "number": "646 555-4567"        };    ]}

使用此布局,而不是其他如XML或任何专有格式,具备几个特性::

  • 像XML一样,它是一种基于文本的、人类可读的格式表示简单的数据结构和关联数组(称为对象);
  • 更容易读(人类和机器),更快地实现,相比XML在大多数使用上要小得多;
  • 这是一个非常有效的格式数据缓存;;
  • 其布局可以被重写成0结尾的utf-8编码的字符串,几乎没有浪费的空间:此功能用于快速将JSON文本转为Table的结果,没有内存分配和数据复制;;
  • 支持的JavaScript语言,使它在任何AJAX(例如Web 2.0)或HTML5移动应用中能成为完美的序列化格式;
  • JSON格式很简单,它定义了一个短小、简洁RFC文档;
  • JSON和SQLite3的默认文本编码方式是utf-8,它允许完整的Unicode字符集存储和通信;
  • 自从.NET框架3.5后,它便被作为 ASP.NET AJAX服务中创建Windows Communication Foundation(WCF)的默认数据格式。这是微软官方“就绪”;
  • 对于二进制BLOB传输,我们只是将二进制数据以Base64编码;请注意,默认情况下,BLOB字段不与JSON对象的其他字段一起传输,见下(唯一例外是动态数组字段,连同其他字段传输)。

JSON序列化确实会被用于我们的主要ORM当中,用于TSQLRecord publish 属性的处理,同时也用于基于接口的SOA体系结构的框架,以便内容的传播。

在实践中,JSON已被确认非常容易工作并稳定。没有用于传输二进制格式,但是可以用于框架其他层级,例如作为一个可能的文件格式in用于驻内存的 TObjectList数据库引擎(我们的SynLZ压缩-见Virtual Tables magic).


0 0
原创粉丝点击