【发布时间】:2011-06-11 16:46:01
【问题描述】:
我正在开发 windows phone 7 应用程序。我正在使用 XML 文件来存储和检索 windows phone 7 应用程序的数据。在我的应用程序中,我为当前的 windows phone 7 应用程序创建了类库。我当前的应用程序有 'CoreClassLayer' 、 'DataAccessLayer' 和 'BusinessLayer' 实验室。在 CoreObjectLayer 类库中,我将以下代码用于一个类,如下所示(例如 Category 类)
public class Category
{
public int ID { get; set; }
public String Name { get; set; }
public int TransactionType_ID { get; set; }
public Category()
{
}
public Category(int ID, String Name, int TransactionType_ID)
{
this.ID = ID;
this.Name = Name;
this.TransactionType_ID = TransactionType_ID;
}
public Category(XElement xElement)
{
ID = Convert.ToInt32(xElement.Element("ID").Value.ToString());
Name = xElement.Element("Name").Value;
TransactionType_ID = Convert.ToInt32(xElement.Element("TransactionType_ID").Value.ToString());
}
public XElement Information
{
get
{
return new XElement("Category",
new XElement("ID", ID),
new XElement("Name", Name),
new XElement("TransactionType_ID", TransactionType_ID));
}
}
}
在 DataAccessLayer 中,我将以下代码用于一个类(例如 CategoryList 类)
public class CategoryList : List<Category>
{
public void GetCategoryObjects(params int [] TransactionType_ID)
{
int TransactionType_ID_Val = TransactionType_ID.Count();
XDocument doc = null;
XMLFileManager XMLDocObj = new XMLFileManager();
doc = XMLDocObj.LoadXMLFile("Categories.xml");
if (TransactionType_ID_Val == 0)
{
var vAllCategories = from s in doc.Descendants("Category")
select new Category(s);
this.Clear();
AddRange(vAllCategories);
}
else
{
var vCategories = from s in doc.Descendants("Category")
.Where(x => x.Element("TransactionType_ID").Value == TransactionType_ID[0].ToString())
select new Category(s);
this.Clear();
AddRange(vCategories);
}
}
在我的 BusinessLayer 中,我将以下代码用于一个类(例如 CategoryManager 类)
public CategoryList GetCategories(params int [] TransactionType_ID)
{
CategoryList m_dbList = new CategoryList();
m_dbList.GetCategoryObjects(TransactionType_ID);
return m_dbList;
}
public List<String> LoadCategories(params int [] TransactionType_ID)
{
CategoryManager CategoryManagerObj = new CategoryManager();
CategoryList CategoryListObj = new CategoryList();
List<String> CategoryNames = new List<string>();
CategoryListObj = CategoryManagerObj.GetCategories(TransactionType_ID);
foreach (Category vCategory in CategoryListObj)
{
CategoryNames.Add(vCategory.Name);
}
return CategoryNames;
}
现在我正在使用业务层来创建我的移动应用程序的用户界面层。现在我想将以上三层——CoreLayer、DataAccessLayer 和 BusinessLayer 逻辑放入 WCF Web 服务中。我想从我的 WCF 服务中公开方法 LoadCategories()。与上述情况类似,我想从 WCF 服务中公开不同的方法。那么我应该遵循什么架构?我是否应该在我当前的 CoreObjectlayer 的 WCF 服务应用程序中添加“WCF 服务库”以及 DataAccessLayer 的“WCF 服务库”到 WCF 服务应用程序,并且我当前的 WCF 服务应用程序将充当业务层?这是正确的方法吗?或者我应该继续使用我当前的 WCF 服务应用程序,而没有任何“WCF 服务库”和单一方法 LoadCategories() 包含所有三层中包含的逻辑?或者还有其他方法吗?您能否提供我可以解决上述问题的任何解决方案或链接?如果我做错了什么,请指导我。
【问题讨论】:
标签: c# web-services windows-phone-7 wcf architecture