马马虎虎看了看BinaryWriter/BinaryReader,试了一下,知道有这么回事,有个印象,以后遇到在研究啦,玩了这么几天三层架构,顺便做个总结:
三层体系结构的概念
用户界面表示层(USL/UI) 业务逻辑层(BLL) 数据访问层(DAL)
各层的作用
1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的 形式)的操作层,,具体为业务逻辑层或表示层提供数据服务
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作, 对数据业务逻辑处理, 一句话总结就是制定游戏规则!
3.层:接受参数,面向用户。
为什么要分三层
我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级。它未必会提升性能,因为当子程序模块未执行结束时,主程序模块只能处于等待状态。这说明将应用程序划分层次,会带来其执行速度上的一些损失。但从团队开发效率角度上来讲却可以感受到大不相同的效果。
三层结构的具体优点如下:
1:提高程序的可维护性;三层架构层次分明,一旦运行出现问题,可以快速的判断是哪一层的问题,利于维护。
2:可以合理的开发:因为三层之间除了调用没有其他关联,只需要先把三层之间的接口定义好,则程序员可以并行开发,提高了开发的速度。
3:提高了系统的安全性:每层都有安全设置,即使表示层被攻破,下一层的安全还有保障。
4:提高了系统的扩展性:三层结构最大的好处是在扩展应用系统时,改动的部分不会影响到大局,比如要给这个系统增加oracle数据库的功能,只需要改动数据层就可以了,其他层保持不变。
三层结构的缺点如下:
“三层结构”开发模式的一个非常明显的缺点就是其执行速度不够快。当然这个“执行速度”是相对于非分层的应用程序来说的。 “三层结构”开发模式,不适用于对执行速度要求过于苛刻的系统,例如:在线订票,在线炒股等等……它比较擅长于商业规则容易变化的系统。
总之:无论哪一种开发模式或方法,都是有利有弊的。
Binary Code 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.IO; 5 6 namespace BinaryTest 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 FileStream fs= Write(@"D:\1.txt", "你好"); 13 string s = Read(@"D:\1.txt"); 14 Console.WriteLine(s); 15 Console.ReadKey(); 16 } 17 //写入文件 18 public static FileStream Write(string path,string addcontent) 19 { 20 using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate)) 21 { 22 fs.Seek(0, SeekOrigin.End); 23 //写入二进制流 24 BinaryWriter bw = new BinaryWriter(fs); 25 bw.Write(addcontent); 26 fs.Seek(0,SeekOrigin.Begin);//移到文件头 27 return fs; 28 } 29 } 30 //读文件 31 public static string Read(string path) 32 { 33 using (FileStream fs = new FileStream(path, FileMode.Open)) 34 { 35 BinaryReader binReader = new BinaryReader(fs); 36 StringBuilder sb = new StringBuilder(); 37 byte[] testArray = new byte[fs.Length]; 38 int count = binReader.Read(testArray,0,(int)fs.Length); 39 if (count != 0) 40 { 41 // Reset the position in the stream to zero. 42 binReader.BaseStream.Seek(0, SeekOrigin.Begin); 43 sb.AppendLine(binReader.ReadInt32().ToString()); 44 } 45 return sb.ToString(); 46 } 47 48 } 49 } 50 }