分类
学习笔记

JSON 序列化

本文介绍C#实现JSON序列化与反序列化的两种方法:使用Newtonsoft类和使用DataContractJsonSerializer类,并提供示例代码供参考。

方法一:Newtonsoft

开源:http://www.newtonsoft.com/

安装:
1.解压下载文件,得到Newtonsoft.Json.dll
2.在项目中添加引用..

序列化示例:

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string output = JsonConvert.SerializeObject(product);

反序列化示例:

string json = @"[  1,  2,  3,  null]";
List<int> numbers = JsonConvert.DeserializeObject<List<int>>(json);

方法二:DataContractJsonSerializer

引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化

此示例使用 Person 数据协定演示序列化和反序列化。

[DataContract]
class Person
{   [DataMember]
 internal string name;
     [DataMember]
 internal int age;
}

若要将 Person 类型的实例序列化为 JSON,首先创建 DataContractJsonSerializer 并使用 WriteObject 方法将 JSON 数据编写成流。

Person p = new Person();
//Set up Person object... 
MemoryStream stream1 = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
ser.WriteObject(stream1, p);

内存流包含有效的 JSON 数据。

{“age”:42,”name”:”John”}

 

此示例演示从 JSON 数据反序列化为对象。然后并调用 ReadObject

问题:我在使用中发现引用DataContractJsonSerializer进行反序列化时,有时候string类型如果中文过大等时,会产生异常。尚未找到解决方法。记录之。异常示例,运用方法一暂时能解决。错误

string

“区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区”;

分类
学习笔记

国外优秀的免费CDN服务

          CDN的全称是Content Delivery Network,即内容分发网络。CDN是一种新型网络构建方式,它是为能在传统的IP网发布宽带丰富媒体而特别优化的网络覆盖层;而从广义的角度,CDN代表了一种基于质量与秩序的网络服务模式。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

CDN主要特点

1、本地Cache加速 提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高以上性质站点的稳定性

2、镜像服务 消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量。

3、远程加速 远程访问用户根据DNS负载均衡技术 智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度

4、带宽优化 自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。

5、集群抗攻击 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种D.D.o.S攻击对网站的影响,同时保证较好的服务质量 。

本小博,曾经和如今试用了以下国外免费CDN,发现都还不错。推荐服务器放置在国外的朋友试用下,其他优点还很多,有待共同发现。

1、CloudFlare:

CloudFlare可能是国内网友接触最比较早的免费CDN服务了,如果你的网站访问用户是全世界的,那么 CloudFlare一定适合你,如果你的网站程序是Wordpress的,官方还专门为WP用户提供了一个官方插件(插件搜索CloudFlare),可以一次性设置完成,并且可以在后台直接查看CDN流量, 使用CloudFlare必须使用CloudFlare的DNS,并且CloudFlare的一部分IP已国内和谐了。

CloudFlare官方主页:https://www.cloudflare.com/

经过本人试用半年来,该服务非常不错,偶尔国内某些地区会出现掉线情况,并且具有拦截攻击IP等辅助功能,附加服务也很强大,推荐玩家尝试用下。

2、Incapsula:

Incapsula这是个美国的免费CDN,号称具有“global network”。最近incapsula在技术上进行了大规模更新,其CDN访问规则也进行了彻底改变:之前北美、欧洲用户对其访问,得到的是使用了anycast技术的ip,包含有美国、英国两个线路;亚洲用户访问的则是Amazon EC2的新加坡节点;以色列单独有个海法的节点。但现在,incapsula的cdn节点分布有了较大的变化:欧洲用户单独访问位于阿姆斯特丹的节点;北美用户则是位于亚特兰大的节点;亚洲用户是位于东京的节点;以色列海法、新加坡的节点被撤销。

目前本博客使用的是Incapsula提供的CDN服务,DNS解析由dnspod提供。

Incapsula官方主页:http://incapsula.com/

分类
相册

非物质文化遗产——长安侯官寨牛老爷社火

“长安侯官寨牛老爷社火”如今已经属于非物质文化遗产啦,今日有幸亲自去当了观众,全村社火闹新春,观众数万人,很是壮观。

牛老爷出游。“牛老爷”是平民官,一脚踩官靴,一脚踏草鞋,今天他最大!据说去年出游时,村里抓到一小偷,直接扭送老爷官府,当场被打板子,社火结束后直接扭送派出所。

IMG_0032

跑马开道

IMG_0005

IMG_0275IMG_0167


 

 

分类
学习笔记

WCF REST service 400 Bad Request

WCF REST service 返回是400 错误。

默认超过65K传输时产生异常。解决Webcofig中webHttpEndpoint配置maxReceivedMessageSize 等。

<!-- 
            Configure the WCF REST service base address via the global.asax.cs file and the default endpoint 
            via the attributes on the <standardEndpoint> element below
        -->
        <standardEndpoint name="" maxBufferSize="2147483647"  maxReceivedMessageSize="2147483647" maxBufferPoolSize="0" helpEnabled="true" automaticFormatSelectionEnabled="true" faultExceptionEnabled="true">
          <readerQuotas maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"  maxDepth ="2147483647" />
        </standardEndpoint>

以上放置在webHttpEndpoint节点下。

VS2010中有配置编辑器,可以用来编辑WCF中的webconfig

参考文章:

http://stackoverflow.com/questions/6599355/wcf-rest-service-400-bad-request

http://msdn.microsoft.com/zh-cn/ff657121

分类
相册

伤不起的科学家

《伤不起的科学家》通用电气CTC,歌词改编的不错,唱的也不错,一群爱因斯坦们跳的更不错。请注意黄头发帅哥,面部表情相当丰富!