博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件创新实践——聊天软件
阅读量:5051 次
发布时间:2019-06-12

本文共 1645 字,大约阅读时间需要 5 分钟。

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

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

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

    DataBaseFirst + Entity Framework 大致可以参考   

    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文件,再导入服务端和客户端的项目里,代替原来的数据包类。

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

  

转载于:https://www.cnblogs.com/chbjaycn/p/3590815.html

你可能感兴趣的文章
关于Redis处理高并发
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
asp.net core 系列 16 Web主机 IWebHostBuilder
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>
bzoj1230 开关灯 线段树
查看>>
LinearLayout
查看>>
学习python:day1
查看>>
css3动画属性
查看>>
第九次团队作业-测试报告与用户使用手册
查看>>