Как организовать мой код (методы, которые я создаю для разных целей на моем сайте) - PullRequest
1 голос
/ 14 октября 2010

Я написал некоторый код для подключения приложения к его базе данных, затем я создал некоторый код для использования кода подключения и извлечения, обновления или добавления некоторых значений в базу данных. Также у меня может быть какой-то код для работы с другими вещами, кромеиметь дело с базой данных

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

SqlConnection sqlconnection= new SqlConnection(ConfigurationManager.ConnectionStrings["DefConnectionString"].ConnectionString);
        SqlCommand sqlcommand = new SqlCommand("SELECT name FROM message  WHERE id = 3", sqlconnection);

        try
        {
            sqlconnection.Open();
            lbl_name.Text = (string)sqlcommand.ExecuteScalar();
            Status.Text = "Done";
        }

        catch (Exception ex)
        {
            Status.Text = ex.Message;
        }

        finally
        {
            sqlconnection.Close();
        }

Я мог бы даже добавить некоторый код для хранения некоторой информации в базе данных о любом исключении, я думаю, что код довольно простой, но он не маленький, учитывая, что это самая маленькая частьМне нужно, написан какой-то огромный код для добавления или редактирования новых элементов, а также учтите, что это не единственный код, который я напишу на странице, у этой страницы больше потребностей: D!

I 'Мы представили подробный случай, я надеюсь! ... Так что, как вы думаете, будет лучшим способом сделать мою страницу быстрой и удобной для чтения и иметь организационнуюzed код Я начал размещать каждый код в соответствующем методе, но некоторые методы являются общими, поэтому я создаю их снова на каждой странице, которая нуждается в них, как метод ConnectionToDataBase, и, значит, хотя я думаю, что я просто организовал страницу, чтобы я мог в основном выглядетьв Page_Load и посмотрите, как называются методы, а затем прокрутите вниз, чтобы прочитать определение, но это все еще большая страница и обратите внимание на лучшую практику, я думаю

Извините за все большие вопросы, я просто предоставил детали, чтобы я могполучить разумный ответ на мой вопрос, я надеюсь, что все выиграют от него, так как большинство вопросов довольно простые, новичкам, как я, нужны подробные случаи и ответы, чтобы лучше начать ... Спасибо за ваше время!

РЕДАКТИРОВАТЬ: Я знаю, что я новичок, поэтому любые комментарии к моему коду приветствуются!

1 Ответ

2 голосов
/ 14 октября 2010

Несколько быстрых наблюдений:

  1. Не используйте встроенный SQL, так как это неудобно для поддержки (используйте Хранимые процедуры или если вы выполняете базовые операции CRUD, рассмотрите ORM)

Также (согласно приведенному ниже комментарию, что очень важно), если вы ДОЛЖНЫ использовать встроенный SQL, в случаях, когда вы в конечном итоге объединяете свои значения в текст команды, вы можете оставить себя открытым для атак с использованием SQL-инъекций (и вообще в любом случае вы должны избегать встроенного SQL).

  1. Не перехватывать и не глотать исключения в глобальном масштабе - захватывать только те исключения, в которых вы на самом деле их обрабатываете, в противном случае скопировать их обратно.

  2. Вы захотите либо абстрагировать свой код доступа к данным в слой доступа к данным независимо от вашего бизнес-объекта (я поклонник шаблона репозитория), либо (предпочтительно) рассмотреть ORM (я настоятельно рекомендую NHibernate) возможно Entity Framework 4, который имеет гораздо более приятную поддержку POCO).

Обычно, как я структурирую данные такого типа, бизнес-объект имеет ссылку на объект репозитория - это определяется как интерфейс, так что я могу поменять свои тестовые и реальные реализации с помощью внедрения зависимостей.

Затем хранилище данных выполняет соответствующую тяжелую работу (обычно через ORM, иногда в ADO.Net для некоторых из наших устаревших кодов) - поэтому, если бы мне нужен был список клиентов, я бы просто вызвал метод GetCustomers для хранилище. Бизнес-уровень не знает о доступе к данным, он просто знает, что когда он вызывает метод, он возвращает хороший строго типизированный список.

[Ответ на запрос RE организации]

Когда я использую этот шаблон для веб-сайта MVC, мой контроллер обычно вызывает класс бизнес-логики. Его цель в жизни - инкапсулировать вычисления, не относящиеся к конкретным данным, и т. Д., Которые он извлекает из моего уровня доступа к данным.

Класс бизнес-логики, в свою очередь, будет ссылаться на одно или несколько хранилищ, которые инкапсулируют передачу данных между моими данными и моими бизнес-классами (такие как сохранение / получение данных и т. Д.).

Хранилище отвечает за обслуживание данных (опять же, ADO.Net, NHibernate, EF, все, что работает для вас). В нем не должно быть бизнес-логики, достаточно просто взять данные из моей базы данных, соответствующим образом сформировать их и вернуть базовые объекты, не относящиеся к данным, обратно на бизнес-уровень.

В моем блоге есть несколько примеров этой организации (доступны в моем профиле), которые, хотя и относятся к NHibernate, показывают довольно простое использование шаблона репозитория.

Надеюсь, это поможет:)

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