项目备案-MoveInLaunch(Newegg-2007-06)
项目名称:MoveInLaunchTool
背景:
本系统是为了解决公司MoveInLaunch Team在日常Launch项目过程中过于繁琐的步骤造成了工作效率低与工作失误,从而影响了Launch项目的质量。本系统采用Windows界面,使用Web Service与Remoting技术实现操作远程生产环境上的服务器;并且采用Http通信协议进行跨网络传输文件的操作。
解决方案:
i、Client端 -- WindowsForm应用程序
ii、Release Server(Mists02)需要发布的项目的文件所在服务器 -- 驻留WebService以执行各种文件操作
iii、Manager Server Client端与Production环境里的Launch Servers的中间过渡服务器
-- 驻留WebService操作Production上的Servers;Manager Server以共享的方式让Production Server获取需要发布的文件
技术方案:
i、Client端运用WinForm界面
1)利用多线程技术;
2)以向导式的Step by Step的方式完成整个Launch流程;
3)以子控件的方式展示界面;
4)建立数据仓库(CommonData)存储整个Launch过程中影响下一流程的数据;
ii、Release Server上驻留一个WebService
1)使用IO的API实现文件的操作;
2)调用Process的API实现压缩文件,代码如下:
packageInfo.PackageName = "LaunchPackage";2
packageInfo.ReleasePath = Guid.NewGuid().ToString("N");3

4
Process process = new Process();5
ProcessStartInfo processStartInfo = new ProcessStartInfo();6
processStartInfo.FileName = @"C:\Program Files\WinRAR\WinRAR.exe";7
processStartInfo.RedirectStandardError = true;8
processStartInfo.RedirectStandardInput = true;9
processStartInfo.RedirectStandardOutput = true;10
processStartInfo.UseShellExecute = false;11
processStartInfo.Arguments = string.Format(@"a -ap{0} -ep1 -ibck -r -v1m -sfxWinCon-e.SFX {1} {2}",12
packageInfo.ReleasePath, Path.Combine(finalDirectory, packageInfo.PackageName), Path.Combine(tempPath, "*.*"));13
process.StartInfo = processStartInfo;14
process.StartInfo.CreateNoWindow = true;15

16
bool isSuccess = process.Start();17
if (!isSuccess)18
{19
outErrorInfo = process.StartInfo.ToString();20
}21
process.WaitForExit();22
string processError = process.StandardError.ReadToEnd().Trim();23
if (!String.IsNullOrEmpty(processError))24
{25
isSuccess = false;26
outErrorInfo = processError;27
}28

3)运用序列化与反序列化的方式在XML文件与实体类之间进行转换;
4)运用XMLDocument编程,实现本地数据存储,如文件树的存储;
5)运用HttpHandler编程,将Release Server上已打包的RAR文件下载到Client端
iii、Manager Server上驻留一个WebService
1)给所有Production Server开设一个权限,使其以共享的方式获取Launch的文件;
2)使用RemoteCommand编程(System.Net,System.Management),通过Manager Server使用Production Server的管理员权限远程控制,实现命令行的文件、IIS等操作;
3)使用第三方组件ICSharpCode,将Production Server上备份到Manager Server的共享里的文件进行文件压缩,代码如下:
4)运用HttpHandler编程实现将Client端的文件上传到Manager Server与将Manager Server上的备份文件下载到Client端。


浙公网安备 33010602011771号