1. 首页
  2. 程序生涯
  3. .NET

WCF中通过序列化传输内容来提高安全性以及访问速度

最近一直在忙项目,之前说过要把百度贴吧辅助工具的源代码发布出来也一直没有时间来在做。今天把在工作中遇到的一个小问题记录一下。
由于现在项目中使用的是WCF服务来进行通讯,很多时候在内网使用都没有注意。项目上线后客户端发布到了外网。这时问题出来了,客户端第一次打开时很卡很卡。这个问题不知道怎么解决,如果谁知道确切的原因请留言或者私下指导我一下。在此先谢谢了!而且在使用WCF服务时所有的内容都使用明文传输,这样难免留下了很多不安全因素。速度又慢安全性又低,在搜索了很多资料之后又的人说使用WCF它会将传输的DataTable序列化成比较庞大的XML所以传输速度慢。我不知道具体是不是真的,但还是做了一点修改,写了一个方法来序列化。我先将DataTable转换成数据流,再将数据流编成Base64的字符串进行传送。

/// <summary>
/// 将可序列化对象转成Base64String
/// </summary>
/// <param name="o">对象</param>
/// <returns>返回相关数组</returns>
public static string ObjectToBase64String(object o)
{
    MemoryStream ms = new MemoryStream();
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(ms, o);
    ms.Close();
    return Convert.ToBase64String(ms.ToArray());
}
/// <summary>
/// 将可序列化对象转成的Base64String还原为对象
/// </summary>
/// <param name="basestr">Base64String</param>
/// <returns>相关对象</returns>
public static object Base64StringToObject(string basestr)
{
    Byte[] blob = null;
    blob = System.Convert.FromBase64String(basestr);
    MemoryStream ms = new MemoryStream(blob, 0, blob.Length);
    BinaryFormatter bf = new BinaryFormatter();
    return bf.Deserialize(ms);
}

在使用的时候记得把Config文件的绑定上面修改

maxStringContentLength="2097152"[/code]
其实这个方法很多地方可以用到,虽然安全级别比较低,但还是避免了在传输时的明文内容,这不单单指序列化DataTable。

原创文章,作者:锋哥,如若转载,请注明出处:https://www.fangsi.net/648.html

发表评论

登录后才能评论

评论列表(2条)

  • 阿水
    阿水 2013年12月12日 19:22

    终于找到一个关于。net的独立技术博客了~~~而且看起来经验已经相当丰富了!最近在实习,也正在用WCF技术!已经收藏了这个博客了,希望可以学到更多东西

    • 胖子
      锋哥 回复 阿水 2013年12月13日 08:32

      是的,主打.NET啊。只是把自己工作上面遇到的问题记录一下。

联系我们

在线咨询:点击这里给我发消息

邮件:service@fangsi.net

工作时间:周一至周五,9:30-18:30,节假日休息