Какая архитектура должна соблюдаться при разработке приложения службы WCF? - PullRequest
1 голос
/ 19 января 2011

Я занимаюсь разработкой приложения для 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 () содержит логику, включенную во все три уровня? Или есть другой способ? Можете ли вы предоставить мне какое-либо решение или ссылку, по которой я могу решить вышеуказанную проблему? Если я делаю что-то не так, пожалуйста, наведите меня.

1 Ответ

0 голосов
/ 20 января 2011

Не рассуждая о достоинствах десятков архитектур, которые вы могли бы здесь использовать, сохраняйте их просто и выставляйте столько, сколько вам нужно.

Если вам просто нужно вернуть набор объектов данных (Server.GetListOfPeanutButters ()), а затем выставить просто «LoadCategories ()» - вы должны подумать: «Что мне действительно нужно сделать общедоступным на моем бэкэнде? заставить это работать ", а все остальное, как правило, не должно быть открыто через сервис.

Начни там и развивайся по мере необходимости - вот мой совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...