硬盘里依旧存在的本科毕业设计
本科毕业设计的系统操作文档部分= =。
和专科毕业设计一样, 全部代码自己写完。
这个东西由于毕业以后还没有架设, 于是在校内寻找能够接手的同学, 但是几次都因东西涉及对于本科生过于深奥而遗憾地遭到拒绝。
全文PDF下载:
| 杭州电子科技大学 计算机学院 计算机科学与技术专业 |
| 校园就业招聘系统 |
| 毕业设计软件使用说明 |
| 裘中杰 |
| 2009/6/5 |
| 您可能需要具有计算机专业知识才能够读懂该文档 |
1 安装及使用
1.1 架构选择
QzjCareer系统可运行在多种网络拓扑方式以及多种系统架构,选择需依据用户同时访问量及硬件性能而定。
1.2 单一服务器无虚拟化配置方案
图1‑1 单机架设
该方案适合访问量波动稳定,流量较小,硬件配置较好的单(双)核服务器。由单一的服务器上运行单一操作系统,同时在线QC核心服务,数据库服务,QCAPI服务,Email接口,SMS接口,QC信息队列服务,QC计划任务服务,QC扩展应用程序。
l 硬件配置最低要求:
l CPU: Intel Xeon 2.0G
l RAM: 4GB
l Disk Space: 1TB
1.3 单一服务器虚拟化配置方案
图1‑2 单个物理多个虚拟架设
图1‑2为假定的宿主机配置。在宿主机上的虚拟控制化设备中建立5个客户,如图1‑3。
图1‑3虚拟化内部客户机连接示意图
每个客户机分配虚拟网络的独立IP地址,通过NAT技术连接到宿主机的物理网络上。同时宿主机需要指定NAT上的应用程序服务端口对应内部虚拟主机的服务端口。在这个配置中,需要在虚拟交换机NAT映射设置物理网络80端口对应QzjCareer.WEB主机的WEB服务端口才能够接受外部的传入连接。
在该配置下的宿主机必须严格配置安全策略,当入侵进入宿主机时,他将轻易获得虚拟环境下的任何设备信息数据。
1.4 ![clip_image007[9] clip_image007[9]](/blog/upload/rpc/1336d0f17626_1328A/clip_image0079_thumb.gif)
多个物理服务器架构方案
用到了多个服务器。最右边两个为WEB服务,分别连接内网和外网。其中外网到WEB服务使用动态分流将不同TCP SYN请求发送至相对空闲的WEB服务器上实现负载均衡。
内网架设3个MSSQL服务器,采用微软视窗数据中心服务器系统,构建数据库服务器群集。同时3个支持虚拟化技术的服务器运行多个QzjCareer.Portal处理数据。运行信息处理服务的服务器同样使用支持虚拟化的服务器,运行多个实例。
网内还有存放用户文件的文件服务器、供维护人员使用的终端。
构建分布式网络得应注意:
a) 不能与其他局域网络混杂在一起。例如Portal,MessageQueue等服务始终采用信任模式运行,当内部网络出现问题时,入侵者将可能直接操作Portal而窃取数据库内资料。
b) 如果无法实施物理网络隔离,则采用虚拟隔离。在没有条件架设单独的局域网时,可以将QC系统的各个服务期组建成VLAN或者VPN方式的局域网。在VPN方式下的局域网,连接必须启用对称加密的IPSec确保虚拟不容易被入侵。
1.5 数据库搭建
图1‑5 T-SQL文件
安装Microsoft SQL Server 2005或者以上版本,推荐使用Microsoft SQL Server 2008 以支持全部编录。
进入SQL管理工具,New Database[1]并设定期望的数据库参数和文件存放位置。
选择New Query[2]数据脚本,并导入数据库脚本文件,文件位置在InstallPacket\MSSQL Script目录下的CareerDataBase.Sql。
导入完成后,生成对应的数据库连接语句准备其他应用程序配置时使用。
值得注意的是,数据库默认情况下使用Windows验证方式。如果维护人员希望使用TCP登录方式,请右键管理工具中的Object Explorer[3]选择属性。在Security[4]选项卡中更改SQL允许的验证方式为SQL Server and Windows。完成后检查能够从外部该机的外部网络访问,如失败则检查防火墙设置。
1.6 核心模块安装
在需要安装PortalAPI接口的内网服务器上执行SetupQzjCareerCore.msi。
图1‑6 Core安装
安装完成。依赖QzjCareer.Core库的组件便能够在该系统平台上运行。
1.7 系统接口安装
Portal内部接口依赖QzjCareer.Core库,未安装QzjCareer.Core库的系统平台上无法正确运行借口。
进入安装媒体[5]中的SetupQzjCareerPortal目录,依次执行以下步骤:
打开QzjCareer.Portal.parameters.txt文件。
设定QzjCareer.Portal_IisWebApplication的值为Portal在IIS中应用程序的名称。
设定QzjCareer.Portal_CareerDB_ConnectionString为数据库连接字符串。如果数据库存在数据需备份,安装Portal时将会清空之前的数据。
打开IIS管理工具,创建以修改QzjCareer.Portal_IisWebApplication后的值为名称的网站项目,并配置好基本信息,将。Net应用程序池的工作版本设置为4.0。
执行QzjCareer.Portal.deploy.cmd [/T|/Y]。如需得到参数说明,直接执行QzjCareer.Portal.deploy.cmd。(提示:首先确保当前执行安装的用户的环境变量里添加有msdeploy的path变量,如果不存在,请查阅相关Windows使用技巧,加入path变量中msdeploy的路径。或者维护人员也可以在命令行模式下执行set Path=%Path%;"C:\Program Files (x86)\IIS\Microsoft Web Deploy"[6])。
如果没有出现错误提示,安装就完成了。
打开http://localhost/ping.asmx检查是否可以正常访问。注意,Portal能够正常显示并不说明已正常连接到数据库。
1.7.1 短信、邮件、信息接口的安装
在需要使用QC短信邮件及信息处理的服务器上执行SetupQzjCareerSmsEmail\SetupQzjCareerSmsEmail.msi。
图1‑7 邮件、短信、信息接口安装
安装成功的操作系统平台将可处理QC中的短信邮件。
1.7.2 信息队列处理服务安装
QC信息队列处理服务主要处理事件中的短信和邮件发送,另外监视系统运行状态信息,记录警告和错误状态到数据库中,因此该服务的在线对整个系统至关重要,安装的系统需要能够与数据库快速地通信。
信息队列处理服务可以被安装在任何内部网络直接与数据库通信的操作系统平台上,一个操作系统只建议安装一个实例。
安装步骤:
进入安装介质中的SetupScheduleService目录执行Setup.Exe。
图1‑8 信息队列安装
安装完成后将在桌面创建一个名为“Install QzjCareer Message Queue Service”的快捷方式。双击运行。
出现提示“The Commit phase completed successfully.”即安装成功。
点击“开始”菜单的“运行”,输入Services.msc,找到QzjCareerDeamon服务,点击开始。
图1‑9 信息队列服务选项卡
1.7.3 用户交互应用程序安装与配置
用户交互界面的安装与Portal相似,安装媒体的SetupQzjCareerWeb目录下,运行QzjCareer.CareerWeb.deploy.cmd开始安装过程。需要注意的是,安装后要完成配置文件修改、网络配置,包括但不限于:
l 数据库连接字符串。
l 用户文件上传根文件夹。
l MachineKey SecretKey的设置,分布式状态下必须设置相同。
l 公用网络至QC网络服务端口NAT映射。
1.8 群集诊断检测工具的使用
在各QC内网主机上进行Portal的通讯测试,包括连接测试,访问测试,数据测试,功能测试。
图1‑10 群集诊断工具
1.9 QC系统扩展插件配置
QC系统插件基于Portal内部接口,运行QC插件的系统平台上必须能够访问Portal接口。
配置方式参考样例程序“QC插件XiaoNei小工具”。
1.10 学生简历模板方案
突出系统个性化、人性化功能以及吸引学生主动参加招聘就业系统上与企业进行交互,系统中许多功能都是定制方便修改的。以最简单的学生简历模板作为介绍:
图1‑11 学生简历模板
交互应用程序目录~/Anony/StudentResumeSkins/下用于存放个性化的学生简历模板,维护员或者开发者能够在当前目录下建立以容易辨明模板类型的目录名称来存放模板文件。模板文件内容基于JTemplate[7]中定义规范。详细开发规范可以从QC开发手册中获得。
图1‑12 信息服务日志
短信日志包含短信发送状态信息、警告、错误。
图1‑13 短信服务日志
邮件日志包含邮件发送状态信息、警告、错误。
图1‑14 邮件日志服务
信息队列日志包含QzjCareer系统中各种事件的处理过程和结果信息。
图1‑15 系统事件日志服务
1.11 各节点参数独立配置方法
根据需求不同,维护人员可能希望两个交互应用程序运行在不同的环境中。例如,校园内部网络和校园外部网络,并且希望对其从不同网络位置访问的用户进行不同的限制。
使用独立参数配置可以解决类似问题。当交互应用程序[8]启动时,会试图读取其版本的初始化信息(该信息使用群集诊断工具配置,存放于数据库中)。读取的数据将用来覆盖应用程序web.config内基本配置信息。当然,除了数据库连接字符串之外,都可以被覆盖。
维护人员可以从群集诊断工具的使用中看到,QzjCareerVersion节配置信息。该节配置用来告诉数据库取何版本,何种类型应用程序的数据。样例中该交互应用程序QzjCareerVersion节点值为0.0001.7069,表示主版本号0,附版本号0001,应用程序参数组编号7069。
理解参数获得方式,维护人员便可以设置不同的参数组,修改应用程序下的节点配置以对应维护人员期望的目的。
1.12 软件环境相关问题
在组建该系统的任何应用时,务必注意使用的。Net Framework版本。该系统基于。Net Framework 4.0 Beta 1 架构,也是当前编写该文档前4天微软对全球公开的第一个测试版本。微软于去年开始开发Visual Studio 10,CLR 4.0,.Net 4.0以及AJAX Framework 4.0。
因此,有可能在微软。Net运行库产生未知错误与问题。系统内代码已对所有涉及当前版本已知的。Net平台BUG进行优化,但维护人员仍务必做好数据、错误日志的备份,以便及时应对未知状况。
2 系统诊断及维护
2.1 交互界面应用程序心跳
每个交互界面应用程序启动时都将提交其系统基本状态信息给Portal,并在预先设定的时间间隔持续发送数据。维护人员可以访问Portal的Ping GetServices中方法来查看当前在线以及最后在线应用程序的时间。
例如本地运行的交互界面应用程序,访问该方法后将返回XML数据如下:
<?xml version="1.0" encoding="utf-8" ?>
-<ArrayOfWebServer >
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
- <WebServer>
<WebServerAddress>127.0.0.1</WebServerAddress>
<WebServerVersion>0.0001.7069</WebServerVersion>
<WebServerDomain>dd6576da-1-128874673611533984</WebServerDomain>
<LastUpdateAt>2009-05-22T20:03:23.6309375+08:00</LastUpdateAt>
<Id>127.0.0.1</Id>
<AddtionInformation>DEFID:WEB1|CLSID:0000-0000-0000-0000-FFFF-0001</AddtionInformation>
</WebServer>
</ArrayOfWebServer>
开发者可根据该接口开发状态监视及下线报警程序。
2.2 内部公开数据接口状态
任何对Portal接口访问的应用程序都应该在第一次启动或者访问时确认Portal能够正常访问,否则停止退出应用程序并间隔尝试。第一次访问时对Portal进行Ping下的HelloWorld方法访问,返回值和期望值相同时,启动后台线程持续进行AlivePing方法的访问。
同时,必须对后台线程使用守护进程或者异常处理,在任何导致线程退出的情况及时停止应用程序服务。
以上行为目的是为了保证在Portal接口不可用的情况下,不进行任何的业务操作,保证用户体验,确保Portal不会因下层应用程序单点的拒绝访问式攻击而瘫痪。
2.3 信息队列日志的查看
在信息队列处理服务的Windows系统平台上,维护人员能够在Windows系统管理工具的事件日志中查看服务状态以及服务所有进行的操作。日志分为四种,分别为:QzjCareer信息服务程序日志,短信日志,邮件日志,系统信息日志。
图2‑1 Windows系统日志
信息服务日志包含服务启动,暂停,停止状态记录和服务内部异常、停止警告等。
图2‑2 信息服务日志
短信日志包含短信发送状态信息、警告、错误。
图2‑3 短信服务日志
邮件日志包含邮件发送状态信息、警告、错误。
图2‑4 邮件日志服务
信息队列日志包含QzjCareer系统中各种事件的处理过程和结果信息。
图2‑5 系统事件日志服务
2.4 各节点参数独立配置方法
根据需求不同,维护人员可能希望两个交互应用程序运行在不同的环境中。例如,校园内部网络和校园外部网络,并且希望对其从不同网络位置访问的用户进行不同的限制。
使用独立参数配置可以解决类似问题。当交互应用程序[9]启动时,会试图读取其版本的初始化信息(该信息使用群集诊断工具配置,存放于数据库中)。读取的数据将用来覆盖应用程序web.config内基本配置信息。当然,除了数据库连接字符串之外,都可以被覆盖。
维护人员可以从群集诊断工具的使用中看到,QzjCareerVersion节配置信息。该节配置用来告诉数据库取何版本,何种类型应用程序的数据。样例中该交互应用程序QzjCareerVersion节点值为0.0001.7069,表示主版本号0,附版本号0001,应用程序参数组编号7069。
理解参数获得方式,维护人员便可以设置不同的参数组,修改应用程序下的节点配置以对应维护人员期望的目的。
2.5 软件环境相关问题
在组建该系统的任何应用时,务必注意使用的。Net Framework版本。该系统基于。Net Framework 4.0 Beta 1 架构,也是当前编写该文档前4天微软对全球公开的第一个测试版本。微软于去年开始开发Visual Studio 10,CLR 4.0,.Net 4.0以及AJAX Framework 4.0。
因此,有可能在微软。Net运行库产生未知错误与问题。系统内代码已对所有涉及当前版本已知的。Net平台BUG进行优化,但维护人员仍务必做好数据、错误日志的备份,以便及时应对未知状况。
3 插件开发
3.1 概述
QzjCareer系统依照分层,零耦合,分布处理的思想进行编写。因此开发人员可以在原有架构上编写简单的代码来增加新的功能。
例如:添加Weblog Metabase的新闻源支持将方便用户使用Windows Live Writer发布,修改,删除新闻。添加日历同步源,使用户在Outlook创建的内容显示在交互应用程序中,增加其访问就业招聘系统的频率及依赖性。提供个人订阅职位类型中的更新RSS订阅,使Windows Vista及以上版本用户在使用电脑时能够同时在侧边栏中观察各种新职位。等等。
3.2 样例程序
为了让开发人员能够快速,方便地编写QC系统上插件和扩展,这里提供一个样例程序。基于QC系统Portal(内网公开API)和“校内网”[10]两种API同步信息的样例,样例的源代码演示了访问QC Portal API的方法。
3.3 样例介绍
“校内网”是国内比较庞大的校友录网站,其功能及特点模仿国外Facebook交友网,共同拥有操作人性化,信息处理响应延迟低,功能全面,自定义性强等特点。在需求分析阶段的调查显示,无论在校学生、教师、已经参与工作的上班族注册该网站并不定时更新个人资料的群体占调查总人数的70%。按照预计发展,未来5年内如按照其现阶段的维护及功能更新,将会更大比例的学生、教师、企业工作人员使用其网站提供的功能。
“校内网”提倡使用实名制及真实个人信息,学校资料,工作资料。也提供类似Facebook网站的小工具功能,对外开放API接口,网站上的用户将能够使用小工具进行交互。
对QC系统而言,最关心其网站提供的个人信息,学校信息,以及工作单位信息的接口。QC可以使用其接口同步学校信息、个人爱好、个人照片、个人介绍,所有就读过的学校、工作单位、实习单位信息。
样例使用QC系统中Portal内部公开接口,不使用其他QC系统资源。
3.4 样例使用
图3‑1 开发IDE及工程文件
插件使用3个工程,分别为“校内网”的XML数据结构定义,“校内网”API封装类,QC在“校内网”交互界面呈现组成。
3.5 说明
插件的安装非常简单,将安装媒体/Plugins/Xiaonei/下文件复制到IIS应用程序目录下,关联80端口。注册“校内网”,申请开发者应用。
在开发者应用中填写应用程序的开发者信息、用户支持Email地址、客户服务电话、用户登录小工具转到的服务器地址、小工具界面呈现的协议标准、服务器IP地址等信息。
服务器应架设在因特网中,使“校内网”与用户能够直接访问。“校内网”实现小工具服务端与其通信的方式为:
当用户点击“校内网”的该小工具链接后,将转到小工具的服务器地址,同时地址中将附带用户在“校内网”中的识别信息。
小工具服务器提取用户浏览器访问地址中的参数信息,并在服务端访问“校内网”API接口,传入用户提交的识别信息,验证该用户是否合法。验证合法后继续访问相应“校内网”API接口读取用户数据进行相关操作。
最终在用户端页面呈现小工具服务器处理后的相关信息。
图3‑2 “校内网”工具参数设置
图3‑2为“校内网”小工具配置页,Callback URL为用户从小“校内网”转入小工具页面首先将访问的地址,也可以理解为QzjCareer.XiaoNeiWeb所在服务器对外的访问地址和端口。图中应用的服务器IP地址在开发阶段可以不指明,作用是防止DNS欺骗造成数据被递交到入侵者期望的服务期。工具发布之后将只连接指定IP上的服务器。
图3‑3 “校内网”小工具信息
应用程序的“关于”页面将显示API Key和Secret Key以及APPID,将这些信息更新至QC的“校内”插件中web.config的对应信息。如图3‑4所示:
App开始的配置字段分别对应“校内网”提供的应用程序数据。
QC_DetailUserId为插件在QC系统中的名称。该字段的值在QC插件开发约定中以PLUGIN_起始的字符串,长度不超过20个英文字符。
QC_DetailDescript字段用于描述该插件的功能。
Plugin_Version描述该插件版本号。
最后以QC_起始的两个字段分别为插件类型唯一识别ID和插件唯一ID。
图3‑4 QC插件扩展配置设置
图3‑5 Portal连接被拒绝提示
当今运行插件时,点击“校内网”该插件首页将出现如图3‑5所示错误。错误的描述为在127.0.0.1的地址7069端口访问被主动拒绝。7069为Portal服务的默认端口,通过推测,可能Portal没有处于运行状态或者到Portal服务的网络连接出现了问题。在检查后发现,没有启动Portal服务,开启Portal服务之后刷新“校内网”小工具页面,出现如图3‑6所示。
图3‑6 QC未绑定QC帐号时的页面显示
开启Portal服务器,初始页面如图。点击绑定帐号,
图3‑7 QC插件登录密码框
输入用户名和密码,选择帐号类型进行登录。
图3‑8 QC插件同步学校界面
图3‑8下半部分为“校内网”用户信息资料,QC插件通过读取“校内网”用户信息将其显示在页面上,用户只需选择剩余的就读时间,再单击“添加……”之后将同步到QC系统的个人资料中。
图3‑9 QC插件同步头像
该页用户可以同步“校内网”中的个人头像到QC系统中,同步过程由插件和“校内网”API完成。涉及文件服务器的配置问题及开发环境条件限制,样例版本不提供演示。
图3‑10 QC插件系统设置
图3‑11 QC插件系统设置AJAX完成
所有TAB组合在一个页面中并且使用AJAX无刷新,TAB切换的体验非常好。
图3‑12 QC插件同步实习、工具
同步实践、实习经历。图3‑12的下半部分为“校内网”已经存在的个人资料,同步到QC系统中时,仅需填写“校内网”没有提供的资料,例如职位、经历描述。
图3‑13 “校内网”个人资料
图3‑14 “校内网”个人资料工作信息
“校内网”的个人信息修改页面。可以发现QC插件之前同步到QC系统中的信息从当前的个人资料中的得到。
“校内网”会验证一些用户填写的基本资料,但并不是所有资料都是经过“校内网”人工确认的,所以通过到QC系统中的资料只能作为未验证的学生自主输入的信息。
图3‑15 “校内网”插件已经帮定帐号
当你再次进入这个小工具的页面时,将会看到原来显示为“绑定帐号”的按钮已经是“直接进入”了。这是由于,插件使用QC.Portal提供的自定义数据信息存放的API,可以在QC数据库写入任何属于该用户插件的自定义信息,同时也可以获得属于该用户插件的自定义信息以及部分个人系统资料信息。
3.6 开发原则
总体而言,Portal提供了绝大部分对就业招聘系统操作方法。同时也提供额外的插件数据存放读取空间。这些空间对于开发者来说是没有限制的,但是应该合理利用这些资源,临时的数据必须标记系统可删除它的周期,单位可以是分钟,小时,天等等。不考虑资源的充分利用及回收,再多的分布式数据库也只能得到较低的性能发挥。
插件中的应用程序安全性是至关重要的一个环节,QC.Portal中的绝大部分操作要求参数传入当前用户的识别号[11]。即便如此,开发者也应在交互应用程序上就判断用户的合法性,防止A用户欺骗交互应用程序而得到B用户的操作权限。 同时避免频繁使用Portal造成不必要的资源开销和非事务处理数据库数据的冲突发生。
3.7 异常处理
Portal内部公开接口中错误的发生将以异常形式抛出并返回,交互应用程序需要主动捕获异常并执行相应的清理资源操作。提交数据前对数据进行必要的格式、范围、类型检查,避频繁引发异常。
在开发新的信息处理服务需考虑可能出现的异常以及灾难恢复机制。必要时创建守护进程。
[1] New Database:新建数据库。
[2] New Query:新建查询。
[3] Object Explorer:对象浏览器。
[4] Security:安全。
[5] 安装媒体为含有QzjCareer安装文件的光盘或者镜像文件。
[6] 系统中msdeploy的文件夹路径。
[7] JTemplate是基于JavaScript扩展库JQuery中的一个小插件。
[8] 即QzjCareer.WEB
[9] 即QzjCareer.WEB
[10] 校友录类型的网站。
[11] 用户在数据库中的唯一识别字符串。