摘要:智能名片系统是一个可以对客户信息进行快速、高效管理的商务软件。设计并实现了基于ASP.net MVC和Entity Framework的智能名片后台管理系统, 重点阐述了该系统结构及主要功能实现.该系统具有较强的名片管理和分析统计等功能, 实现了移动和PC端的同步管理和服务共享。
关键词:ASP.net; MVC; ORM; database first; 名片;
Abstract:Smart Business Card system is a commercial software which can manage customer information with high efficiency.This paper designs and implements such a system based on ASP.net MVC and Entity Framework;it also elaborates on the structure and the implementation of its main functions.The system can manage business cards efficiently, and also has the function of data analyzing and counting, achieving synchronic management and service pooling in mobile and PC terminals.
Keyword:ASP.net; MVC; ORM; database first; business card;
快速、有效地管理好企业的客户信息, 成为企业管理中不可避免的重要问题。近年来, 电子名片系统的开发越来越引起关注, 进而进入名片系统的移动应用研究。在互联网高速发展和广泛应用的今天, 除了信息的存储, 更多的企业和商务人士更需要能够及时、有效地采集数据、记录活动、分享信息并且能够作出数据分析和统计。一个可以自动识别名片、上传至手机和服务器的智能名片系统就显得非常必要了。
本研究的智能名片系统包括了客户端的移动应用和用于后台管理的Web系统。用户通过客户端APP扫描名片, 实现信息自动录入、创建名片、分组管理、分享名片、记录活动等。
智能名片后台管理系统需要提供移动应用的服务器端控制程序, 接收移动设备发送的各种数据, 并将运行结果发送至移动端, 实现客户端电子名片、访问活动等管理功能。同时, 还需要一个后台管理的Web平台, 可以进行名片的管理, 名片夹的分类, 名片数据和客户访问活动的统计、分析, 对名片进行分享、使手机端和服务器进行同步更新等操作。
ASP.net MVC是Microsoft的Web应用程序框架, Entity Framework是Microsoft最新的对象关系映射解决方案, 较传统的ASP.net Web Form和ADO.net, 有低耦合、易维护、数据访问快速便捷等优点, 因此本文采用ASP.net MVC和Entity Framework开发该后台管理系统。
1、技术背景
1.1、ASP.net MVC
.net作为现今主流开发平台之一, 越来越多的被人们用来开发大型Web应用, 在开发过程中, 开发人员往往将大量的代码放在页面中实现。对于较大规模的Web应用, 这给程序的调试和维护带来很大的不便。如果在开发中应用MVC设计模式, 可以有效解决这个问题。
MVC是一种成熟优秀的开发模式, 它使应用程序的输入、处理和输出分开, 使用MVC的应用程序被分成三个核心部件:模型 (model) 、视图 (view) 、控制器 (control) 。MVC架构拥有清晰的开发架构与明确的对象分工, 降低了软件开发的复杂度, 使软件更加易于维护[1]。
ASP.net提供了一个实现MVC模式的环境, 使得开发人员能够通过在页面中设计用户界面来实现视图, 后台代码 (.CS) 实现控制器的功能, 模型一般对应系统的业务和数据访问部分。
1.2、ORM和Entity Framework
传统的Web应用数据库开发通常使用ADO.net技术, 不同的数据库在设计逻辑和语法上的差异, 导致开发数据访问的程序代码缺乏效率;.net MVC框架采用ORM开发技术后, 当设计的.net应用程序视图要读取关系数据库中的数据时, 只要针对ORM框架中的模型定义读取数据, 剩下的工作便可由ORM框架完成, .net应用程序便可完全隔离在关系数据库的操作之外, 专心处理对象的变化即可。
Microsoft Entity Framework是一个对象关系映射 (ORM) 工具, 它能将关系型数据转换成.net数据对象, 也可以将.net数据对象转换成关系型数据。采用Entity Framework开发技术, 可分为三种不同的开发模式, 分别是数据库优先开发模式 (database first) 、模型优先开发模式 (model first) 、代码优先开发模式 (code first) , 本文采用了database first模式进行数据库开发。
2、系统设计和实现
2.1、系统架构
ASP.net We b应用开发, 通常采用表示层、业务逻辑层和数据访问层三层架构[2]。本文结合.net MVC框架和Entity Framework的特点, 将系统分为三层。表示层由MVC框架的view和controller来实现对客户请求的响应和页面处理逻辑;数据访问层则由Entity Framework将数据库映射成应用程序实体, 并将数据库的访问封装在该实体中, 通过Linq实现对数据库的访问和交互。另外采用单独一个模块作为业务逻辑层, 实现数据访问层和表示层之间的连接。
2.2、功能设计
本系统主要包含名片管理、活动管理、数据统计分析、名片夹管理和用户设置五大模块, 如图1所示。通过该后台管理系统, 管理人员可以进行名片的管理, 名片夹的分类, 名片数据和客户访问活动的统计、分析, 对名片进行分享、使手机端和服务器进行同步更新等操作。此外, 本系统还要提供移动端应用的服务器端控制程序, 接收移动设备发送的数据和操作请求, 并将服务器上的运行结果发送至移动端, 实现移动端电子名片、访问活动等管理功能。
图1 系统功能结构图
2.3、表示层
系统的表示层主要通过ASP.net MVC的视图 (view) 和控制器 (controller) 来实现, 也包含了Model。
view的作用是向用户提供界面并接受用户的请求, 将请求传递给controller, controller负责处理所有跟页面相关的逻辑, 从Model中提取数据, 并回传到view中。本系统view视图采用Razor引擎, 包含了Jquery UI, Jquery validation等ajax技术, 语法简洁, 不包含处理业务逻辑的代码, 能够有效地适应需求的变更。系统界面如图2所示。
图2 系统界面
2.4、数据访问层
数据访问层是三层结构的底层, 直接与数据库进行交互, 并将关系数据库的数据表转化为对象模型, 然后提供给上层使用。
系统采用Entity Framework (EF) 的database first模式和Linq (language-integrated query) 实现数据库的访问, 隐藏底层数据存储的技术细节与差异, 使开发人员专注于业务逻辑的分析与开发, 提高系统的可维护性和可扩展性。
database first模式以已有的数据库为中心, 利用EF框架将数据库映射成应用程序实体 (Entity) , 并生成表、视图和存储过程等.net对象。系统采用Sql Server设计好数据库之后, 用EF生成对应的.net数据库实体如下, 同时数据库中的数据表也生成对应的.net模型。
有了数据库实体类, 就可以在代码中通过linq访问数据库了。Linq[3]即语言集成查询, 它可以像用SQL查询数据库数据那样, 从.net语言中查询数据。使用Linq可以大量减少查询或操作数据库或数据源中的数据的代码, 并在一定程度上避免SQL注入, 提供应用程序的安全性。相对于传统的ADO.net数据访问, 省去了程序员对于后台关系数据库的关注, 可以专心于处理对象。系统使用Linq进行数据处理部分代码如下:
2.5、业务逻辑层
业务逻辑层负责表示层和数据访问层之间的连接, 主要处理系统的业务逻辑, 它被controller调用, 并按业务内容来调用数据访问层里的基础操作, 如基本的数据库表的增删改查, 并将处理结果返回给调用者[4]。
对于系统中的各个功能模块, 在业务逻辑层都有相应的功能类。比如对于名片管理模块, 业务逻辑层有如下方法分别实现修改名片、删除名片、名片检索、分享名片以及取消分享等功能。
public static Exception Info Modify Business Card (Card card)
public static Exception Info Delete Card (int id)
public static Exception Info Share Card (int id, bool is Share)
public static Card Get Business Card By Id (int id)
public static User Card Info Get Card By User (string name, intpage Num, intpage Size, intsort Field, intuser Id, bool has Share)
public static Exception Info Add Card Share (List<int>user Ids, List<int>card Ids)
public static Exception Info Cancel Card Share (List<int>card Ids)
当用户在视图端发出操作请求的时候, controller会根据请求类型调用逻辑层相应的方法, 逻辑层则根据业务逻辑去访问数据层获取所需要的数据并进行进一步的处理, 将处理后的数据返回给controller, controller最终将数据绑定到视图上呈现给用户, 完成用户请求响应。
2.6、移动应用服务器API
服务器端API的设计需要考虑到通信协议、数据交换方式以及数据交换格式三个方面。
通常情况下移动APP和服务器端的通信协议采用最常用的http协议, 本系统中也采用http通信协议。http协议中数据交换方式有Get和Post两种, 出于安全性等方面考虑一般采用Post方式较多。
接口和客户端的数据交换格式, 本系统采用的是json格式。交换的数据包括两种, 一种是客户端请求服务器端接口时传递的一些参数, 一种是服务器端返回给客户端的数据。
在.net平台下, 有很多的选择来创建一个http服务, 像Web Service, WCF, Web API等。在后台管理系统的开发中只需要添加以上任意一种工程即可调用已有的业务逻辑代码。
本系统并没有创建以上任一种服务的工程, 而是通过在原有的后台管理系统MVC项目中添加一个controller来实现服务器端API的功能, 该controller的名字为Card Management Controller。比创建一个工程, 添加一个controller文件更加地简单、轻便, 而且访问也非常地方便。
ASP.net MVC应用程序中h t t p请求是通过路由方式进行访问的[5], 一般默认路由格式是"{controller}/{action}/{id}”, 即通过controller的名字和方法名加参数即可访问到指定的视图或方法。由于服务器API不需要返回界面只返回数据, 所以创建的controller里面action返回类型只是Json格式的数据而不是视图。以下是Card Management Controller中其中一个方法, 根据id查找名片。
客户端发起名片查找的请求时, 发出一个格式为Business Card By Id/id的http请求, 服务器端的Card Management Controller接收到请求后, 即会执行Get Business Card By Id方法, 通过调用业务逻辑层Data Factory中的Get Business Card By Id (id) 方法获得目标名片, 然后将名片信息转换成Json格式返回给客户端, 手机用户即可接收到名片数据, 整个过程简单明了。
ASP.net MVC的路由访问方式使得服务器端API的功能用一个简单轻便的controller文件即可实现, http请求格式简单, 服务器端响应快速, ASP.net MVC框架的优越性显而易见。
3、结论
ASP.net MVC框架改变了传统的ASP.net中视图与业务逻辑耦合的弊病, 它使应用程序的输入、处理和输出分开, 拥有清晰的开发架构与明确的对象分工, 降低了软件开发的复杂度, 使软件更加易于维护。系统将ASP.net MVC和Entity Framework相结合, 实现了名片管理系统的各种功能, 不管是对于数据访问的处理还是服务器接口的实现, 较传统的开发模式都简单和方便得多, 极大减少了开发人员的工作量。
参考文献
[1]黄保翕.ASP.net MVC4开发指南[M].北京:清华大学出版社, 2013.
[2]高扬.基于.net平台的三层架构软件框架的设计与实现[J].计算机技术与发展, 2011, 21 (2) :77-80.
[3]林勤花.基于.net的MVC+LINQ框架的应用[J].信息技术, 2013 (7) :167-168.
[4]吴盖浮.基于ASP.net MVC问卷调查的设计与实现[J].信息技术, 2014 (9) :135-138.
[5]方珂.基于ASP.net MVC框架的web应用开发研究[D].上海:华东师范大学, 2011.