zoukankan      html  css  js  c++  java
  • 软件创新实践——聊天软件

      上学期的软件创新实践作业,简单的网络的编程(tcp/ip)和多线程,试着回忆得记录下来,因为花了比较多的时间,对我来说也是收获颇丰。

      使用VS2012+SqlServer2008,c#,我将在这次作业中所得大致归为以下几类:

       、数据库方面我采用了对我而言较新的DataBaseFirst + Entity Framework,二者都是大二暑假在亚尔迪公司实习时接触到的新知识,和asp.net MVC一样,全新的概念给我很大的冲击和学习热情,因此想借此机会好好熟悉下。

        DataBaseFirst + Entity Framework 大致可以参考 http://hi.baidu.com/wyg_bd/item/0be876f402abdabe30c1995c  

        EF将数据库对象抽象成为c#里的类,修改数据的操作也变成了简单的对象方法的调用,如sql的查询语句在EF里可以这样写:

          var check_user = data.listUsers.Where(p => p.Uid == loginResult.getUid).FirstOrDefault();

            这里的 var 编译器根据返回值类型自动定义check_user的数据类型,对编译器来说增加负担,所以不被建议。

         并且美中不足的是听说EF在大型系统中的效率不高,我相信EF会被开发的更加成熟而不是被淘汰。

      二、一起客户端的数据请求都经过了服务端的中转,包括数据库访问。和用java写的同学交流了一下,他们用了java自己封装的一个类,可以用socket直接发送类,我也希望自己用c#也能做到,查阅资料,整了半天也成功了,大致如下:

        

      //序列化二进制代码
      public static byte[] Serialize(Obj obj)
      {
        IFormatter formatter = new BinaryFormatter();
        MemoryStream ms = new MemoryStream();
        byte[] b;
        formatter.Serialize(ms, obj);
        ms.Position = 0;
        b = new byte[ms.Length];
        ms.Read(b, 0, b.Length);
        ms.Close();
        return b;
      }

      //反序列化二进制代码
      public static Obj Deserialize(byte[] byteArray)
      {
        IFormatter formatter = new BinaryFormatter();
        //formatter.Binder = new UBinder();
        MemoryStream ms = new MemoryStream();
        ms.Write(byteArray, 0, byteArray.Length);
        ms.Position = 0;
        Obj obj = formatter.Deserialize(ms) as Obj;
        return obj;
      }

        序列化是将传入的obj(数据包的类)这个对象在内存中的二进制流存在byte数组中,再使用socket发送转化后的二进制数组byte,接收后再强转成我写的数据包类。

        这其中遇到的问题是服务端和客户端不在同一个项目里,数据包类的环境不同,反序列化出错,解决办法是新建第三个项目,重新定义了数据包类,导出为dll文件,再导入服务端和客户端的项目里,代替原来的数据包类。

        接下来的工作顺利的很多,但是工作量略大,每天写到半夜一两点,作业还是晚交了两天。其实最郁闷的是因为之前参加过老师的项目,直接给了优,连检查都没有。

      

  • 相关阅读:
    动态列 Excel 导出
    Smart Thread Pool (智能线程池)
    Nuget Server 搭建
    hadoop 分布式集群安装
    DRF 基本功能梳理 demo
    docker 相关梳理
    Python 开发面试梳理
    结合 element-ui 对 Vue 相关知识点整理 (router,axios,Vuex )
    VUE 相关工具 vue-cli/webpack/vue-router
    Vue 基础语法相关特性
  • 原文地址:https://www.cnblogs.com/chbjaycn/p/3590815.html
Copyright © 2011-2022 走看看