Я занимаюсь разработкой приложения для windows phone 7. Я использую XML-файлы для хранения и извлечения данных для приложения Windows Phone 7. В моем приложении я создал библиотеки классов для моего текущего приложения Windows Phone 7. У меня есть библиотеки «CoreClassLayer», «DataAccessLayer» и «BusinessLayer» для моего текущего приложения. В библиотеке классов CoreObjectLayer я использую следующий код для одного класса следующим образом (например, для класса категории)
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. Я хочу выставить метод LoadCategories () из моей службы WCF. Как и в приведенном выше случае, я хочу показать различные методы из службы WCF. Так какой архитектуре мне следует следовать? Должен ли я добавить «библиотеку служб WCF» в мое текущее приложение-службу WCF для CoreObjectlayer, а также «библиотеку служб WCF» для DataAccessLayer в приложение-службу WCF, а мое текущее приложение-служба WCF будет действовать как бизнес-уровень? Это правильный путь? Или я должен продолжить работу с моим текущим приложением службы WCF без какой-либо «библиотеки служб WCF», а единственный метод LoadCategories () содержит логику, включенную во все три уровня? Или есть другой способ? Можете ли вы предоставить мне какое-либо решение или ссылку, по которой я могу решить вышеуказанную проблему? Если я делаю что-то не так, пожалуйста, наведите меня.