目前接触了一个对压缩文件进行操作项目。现项目接近最终评审。想结合这一个多月对此项目的理解与亲身参与,进行一个梳理回顾。
项目简介:这个一个云项目的子模块功能。其具体要求的效果是,在客户的压缩包中,存储了不同内容与格式的JSON文件,分别对应其不同的业务功能,一个JSON文件代表一个模版。现需要编写可以对压缩包内模版进行操作的程序。用户通过调用我们的程序,可以简单快捷的完成操作。
场景模拟:医院的业务系统中,医生需要录入病人的信息,通过页面的数据录入,点击屏幕上添加功能键,既完成患者信息的JSON录入。同理可以查询,修改,和删除。在医院系统手机客户端上,用户需要买一些药品,通过在相关页面对药品的选取。可以提交到服务器中,保存在药品JSON中,医生通过在管理系统的查询,可以完成订单。
1.我想了解,Json文件是如何被提取到模版中的。
首先文件需要解压 需要寻找Extract Compress Serialize类似的方法函数进行操作。其次需要映射,文件解压以后,需要把文件映射到对应好的模版类中,进行Mapto操作。
2.如何对原文件进行操作,新增,修改,或者删除
对原文件的修改,其根本是要借助模版类对其进行修改。通过前两步,把原文件映射到模版类,然后通过相关的逻辑操作,实现增删改查操作。
3.请说的具体点,什么样的逻辑操作,可以实现增删改查操作。
业务逻辑通常被放在统一的某个包中,包中定义划分不同的接口。就这个系统而言,需要划分出增删改查四种接口。就是ADD(新增),DELETE(删除),
UPTATE(更新)和QUERY(查询)。在四个接口中,分别具体操作模版类。实现增删改查。
4.修改好的模版类,是否需要压缩到原有的文件中
当然!模版类只是一种临时文件,需要把模版类中的内容写入到原文件中,才能完成对原文件的操作。其具体实现,需要借助一个工具类(如list),
把模版类中的属性,写入到原文件中。再进行压缩。相对于客户而言,一个压缩包文件就产生了外表没有改变,但是里面的内容就发生了变化的效果。
5.项目分为三个dll文件,有common,process和creator。其中Engine类和Provider类具体有什么作用
①项目分为三个不同的dll包,这设计到对项目整个架构的设计。其中Common包代表一写通用的类与工具。如与不同JSON文件一一对应的模版类就放
在这里,还有异常的捕捉、文件的压缩与解压缩,原文件到模版类的映射,路径的获取等等。通用功能的类都放在这个包里。
②第二个dll文件是process包,代表对整个的处理功能,其中Engine类和Provider类是此包中两个核心的功能。Engine类如它的名字一样:引擎。
它是这个软件的核心,整合了打开、关闭,压缩,解压,写入这些功能函数类,通过Engine类,我们可以很方便的去操作一个压缩文件。而不用去
了解其细节。Provider类代表提供者,也是对现有模版类的整合。Provider类可以获取到压缩包中所有JSON文件的属性,提供给我们。通过对Provider
提供的返回值,我们从中去获取具体需要操作的JSON文件。进行调整。
③第三个dll文件是creator包。意思是创造者。上述中我们所提到到增删改查的接口。都定义在这里。于此同时,为了提高软件的耦合性。我们在
增删改查操作的上层。又增加了一层Service接口,用意是对外界客户来说,我们提供了一种帮助他们的服务。然后服务中有不同的操作。
6.如果重构一个简单的项目。需要完成哪些必要的功能。
1.首先定义好一定业务功能的JSON文件,并压缩成解压包。
2.在common包中,编写好与JSON文件对应的模版类。
3.对process包进行移植。直接使用现有方法。压缩,解压,打开,关闭,写入。
4.creator包中,进行增删改查。为提高拓展性。使用枚举类对应,与Activator.CreateInstance方法,进行自适配的生成子类实例。