使用SilverLight构建插件式应用程序(一)
2008-10-23 11:44:05 来源:WEB开发网Filename:插件的文件名称;
Version:插件的版本,这个很重要,每次系统启动之后都会读取服务的配置文件,根据版本是否相同来判断插件是否需要更新,如果需要更新,就下载到客户端;
Layout:布局方式;
Typename:很重要,类型名称,用来反射的时候使用。
在主项目建立一个实体对象描述插件信息:
public class PluginConf
{
public string filename { get; set; }
public string version { get; set; }
public string layout { get; set; }
public string titlename { get; set; }
public string imagename { get; set; }
public string typename { get; set; }
public string description { get; set; }
}
至此,准备工作完成,下边开始进入流程:
项目启动的时候,下载配置文件信息:
//获取升级配置文件,检测是否需要下载新的插件文件
WebClient wcPlugin = new WebClient();
if (wcPlugin.IsBusy)
{
wcPlugin.CancelAsync();
}
wcPlugin.OpenReadCompleted += new OpenReadCompletedEventHandler(wcPlugin_OpenReadCompleted);
wcPlugin.OpenReadAsync(new Uri(PublicUnit.PluginConfigFile, UriKind.Relative));
void wcPlugin_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
//获取服务器的升级文件
Stream d = e.Result as Stream;
XElement xmlServer = XElement.Load(System.Xml.XmlReader.Create(e.Result));
//定义查询方法
IEnumerable<PluginConf> pluginConfsServer = from c in xmlServer.DescendantsAndSelf("assembly")
select new PluginConf
{
description = c.Elements("description").SingleOrDefault().Value,
filename = c.Elements("filename").SingleOrDefault().Value,
layout = c.Elements("layout").SingleOrDefault().Value,
imagename = c.Elements("imagename").SingleOrDefault().Value,
titlename = c.Elements("titlename").SingleOrDefault().Value,
typename = c.Elements("typename").SingleOrDefault().Value,
version = c.Elements("version").SingleOrDefault().Value
};
}
至此,把服务器端的配置文件加载到了本地
Tags:使用 SilverLight 构建
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接