首页 »数据库 » 数据加载中: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" />
相关文章
读者评论
发表评论
|
|