专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » 数据加载中:DinnerNow中的WCF应用 - 首页数据加载 »正文

数据加载中:DinnerNow中的WCF应用 - 首页数据加载

来源: 发布时间:星期三, 2008年9月10日 浏览:93次 评论:0

  首先请用VS2008打开下面两个解决方案:
安装目录下\solution\DinnerNow - Web\DinnerNow - Web.sln
\solution\DinnerNow - ServicePortfolio2\DinnerNow - ServicePortfolio2.sln

这是关于DinnerNow - Web.sln中项目的说明:
DinnerNow.WebUX 项目包括表示层(UI)的应用逻辑,WCF客户端调用的CS文件(CODE文件夹下)
DinnerNow.Web 项目则提供了一些简单的变量声明和定义,相关的CS代码并不多.
  Microsoft.DPE.Samples.CardSpace 是一些关于Card Space数据访问和操作的封装和实例代码.


因此目前网站上的主要代码和功能实现都集中在了DinnerNow.WebUX这个项目.

  为了完整的演示一个购买流程,本人将会以执行页面为单位.逐个说明相关页面的程序执行逻辑和功能实现.

  在介绍之前,请大家先看一下DinnerNow的系统架构图.相信这会对我们从整体上把握这个产品提供一个切入点.相关图示如下:

 


首先运行网站的首页http://localhost/dinnernow/default.aspx,如下图:




  上图中红框标记部分的部分页面页容如下(SearchBar.ascx):


<table border="0" cellspacing="2" cellpadding="2">
<tr>
<td align="right" nowrap="nowrap" class="boldWhite">Food Type </td>
<td align="left">
<asp:ObjectDataSource ID="RestaurantCategoryDataSource" runat="server" SelectMethod="SelectAll" TypeName="DinnerNow.RestaurantCategoryDataSource"/>
<asp:DropDownList ID="restaurantCategoryList" runat="server"
DataSourceID="RestaurantCategoryDataSource" DataTextField="Description"
DataValueField="RestaurantId"/>
</td>
</tr>
</table>

<table border="0" cellspacing="2" cellpadding="2">
<tr>
<td align="right" class="boldWhite">Meal</td>
<td align="left">
<asp:ObjectDataSource ID="MenuTypeDataSource" runat="server" SelectMethod="SelectAll" TypeName="DinnerNow.MenuTypeDataSource"/>
<asp:DropDownList ID="menuTypeList" runat="server"
DataSourceID="MenuTypeDataSource" DataTextField="MenuTypeName"
DataValueField="MenuTypeName" />
</td>
</tr>
</table>



可以看出菜单下拉框选项使用ObjectDataSource方式进行加载,而页面代码中的下列两条语句是所加载类型的说明:
TypeName="DinnerNow.RestaurantCategoryDataSource'
TypeName="DinnerNow.MenuTypeDataSource"

  这两个类型我们可以在下列路径下找到:
DinnerNow.WebUX\Code\DataSources\RestaurantCategoryDataSource.cs
DinnerNow.WebUX\Code\DataSources\MenuTypeDataSource.cs

它们两个的功能就是调用相应的SelectAll方法如下(仅以MenuTypeDataSource.cs为例):

MenuTypeDataSource.cs




public IEnumerable<RestaurantCategory> SelectAll()
{
try
{
using (MenuSearchServiceClient client = new MenuSearchServiceClient("WSHttpBinding_IMenuSearchService"))
{
return client.GetRestaurantCategories();
}
}
catch (Exception)
{
//@TODO: Need to put some error handling in here
}
return null;
}


因为代码太简单没什么可说的,下面就根据其所请求的服务绑定项"WSHttpBinding_IMenuSearchService", 在web.config
中查找到如下配置节:

<endpoint address="http://localhost/DinnerNow/service/MenuSearch.svc" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IMenuSearchService" contract="MenuSearchService.IMenuSearchService"
name="WSHttpBinding_IMenuSearchService">
<identity>
<servicePrincipalName value="host" />
</identity>
</endpoint>
而相关的MenuSearch.svc(执行)文件就是其所引用的服务地址.好的,看清了这一块之后,我们切换到刚才所说的第二
个解决方案中(DinnerNow - ServicePortfolio2.sln),看一下这个SVC中是如何执行相应逻辑的:)

在DinnerNow - ServicePortfolio2.sln中的DinnerNow.ServiceHost项目是服务配置站点,我们可从该站点的web.config
文件中找出如下内容:
......

<service behaviorConfiguration="DinnerNow.Services.MenuSearchServiceBehavior"
name="DinnerNow.Services.MenuSearchService">
<endpoint address="" binding="wsHttpBinding" contract="DinnerNow.Services.IMenuSearchService" />

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: