问题1:windows8 能直接访问数据库吗?
今天我就写了下用webservice的方式取得数据库。
web服务器上面的代码应该都会写,主要说下window8 客户端取得数据的步骤,
1:首先引用webservice服务引用
2:初始化webservice服务对象,
MovieServiceReference.MoviesInfoServerSoapClient m = new MovieServiceReference.MoviesInfoServerSoapClient();
3:异步调用
var sampleDataGroups = await m.GetMoviesListAsync();
ObservableCollection<MovieServiceReference.MovieInfo> list = sampleDataGroups.Body.GetMoviesListResult;
这里调用了***async()的异步方法完成异步调用,await关键字是,net 4.5新增加的特性,他表示该方法是异步的,同时会将该代码后面的代码封装在一个委托当中,当异步完成时才能调用。即将异步方法类似同步实现。
同时需要注意:使用await关键字,方法体上必须声明该方法是异步方法,必须使用async关键字修饰
private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
// TODO: 创建适用于问题域的合适数据模型以替换示例数据
// var sampleDataGroups = await SampleDataSource.GetGroupsAsync();
// this.DefaultViewModel["Groups"] = sampleDataGroups;
MovieServiceReference.MoviesInfoServerSoapClient m = new MovieServiceReference.MoviesInfoServerSoapClient();
var sampleDataGroups = await m.GetMoviesListAsync();
ObservableCollection<MovieServiceReference.MovieInfo> list = sampleDataGroups.Body.GetMoviesListResult;
ObservableCollection<MovieModel> movieList = new ObservableCollection<MovieModel>();
foreach (var item in list)
{
MovieModel model = new MovieModel();
model.Movie = item;
model.MovieImage = new BitmapImage(new Uri("http://localhost:1930/ImageHandler.ashx?id="+item.MovieId));
movieList.Add(model);
}
itemGridView.DataContext = movieList;
}
如果要使用图片资源,建议不要再webservice里面直接写,会影响取得数据的速度,可以用一个一般处理程序来取得图片字节
OK,基本上取得远程数据的方式就这些,下次再写下其他方式
此项目参考"传智播客.net培训Windows 8开发视频教程"