powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Зачем нужны бизнес-объекты?
25 сообщений из 101, страница 1 из 5
Зачем нужны бизнес-объекты?
    #35065682
Dark_Scorpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При необходимости загрузить данные из БД в слое данных пишу функцию, возвращающую SqlDataReader или DataSet. Всегда делал так, пока не сказали что это неправильно. Слой данных якобы не должен возвращать эти объекты в приложение, а должен возвращать бизнес-объекты типа:
Код: plaintext
1.
2.
3.
4.
5.
public class CategoryInfo
{
    public int    CategoryID;
    public string CategoryName;
    public int    Count;
}
Объясните чем удобнее работать с такими объектами нежели со стандартными объектами ADO.NET?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35065705
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ты еще послушай,каких нито,преподов,которые читают программирование столь высокго уровня,а сами не писали ,чтото такого уровня.

забей :)

если бы тебе сказали,в чем суть правильного,тада была бы тема :) а тебе предложили еще один вариант из многих.
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35065721
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark_ScorpionОбъясните чем удобнее работать с такими объектами нежели со стандартными объектами ADO.NET?
А вы какие-то неудобства испытываете что ли?

Сравните:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void Foo()
{
	using(SqlDataReader reader = GetSqlDataReader(...))
	{
		// Уже и забыл, как с ним работать-то :)
		while(reader.MoveNext())
		{
			int categoryID = reader.GetInt32[0];
			
			if(categoryID = 0)
				AddRootCategory(reader.GetString[1], reader.GetInt32[2])
		} 
	}
}

и

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void Foo()
{
	CategoryInfo[] categories = GetCategories();
	foreach(CategoryInfo category in categories)
		if(category.ID = 0)
			AddRootCategory(category);
}

Какой из этих вариантов наглядней, проще в понимании и в поддержке, разработке и в отлове ошибок, лучше в архитектурно-дизайнерском отношении?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35065787
Dark_Scorpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начнём с простой задачи. Допустим мне надо загрузить даные пользователя. Делаю я это так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        SqlDataSource sql = new SqlDataSource();
        sql.ConnectionString = UserDB.conn_str;
        sql.DataSourceMode = SqlDataSourceMode.DataReader;
        sql.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
        sql.SelectCommand = "sp_getUserInfo";
        sql.SelectParameters.Add("login", login);
        SqlDataReader sqlResult = (SqlDataReader)sql.Select(DataSourceSelectArguments.Empty);
        if (sqlResult.Read())
        {
            HttpContext.Current.Session["login"] = login;
            HttpContext.Current.Session["roles"] = sqlResult["roles"].ToString();
            HttpContext.Current.Session["name"] = sqlResult["name"].ToString();
            HttpContext.Current.Session["id"] = sqlResult["id_user"].ToString();
            sqlResult.Close();
        }
Как этоже самое сделать удобнее, используя бизнес-объекты?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35065801
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм...

ну строчек кода одинаково в обоих случаях :)

нельзя дать ответа где лучше.

автор не говорил,что он работает с коллекциями какие то сущностей.
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066076
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark_ScorpionКак этоже самое сделать удобнее, используя бизнес-объекты?
Используя, например, BLToolkit:

Код: plaintext
1.
2.
3.
4.
5.
UserInfoDataAccessor userInfoDataAccessor = DataAccessor.CreateInstance<UserInfoDataAccessor>();

UserInfo userInfo = userInfoDataAccessor.GetUserInfoByLogin(login);
if(userInfo != null)
	HttpContext.Current.Session["userInfo"] = userInfo;
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066078
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKнельзя дать ответа где лучше.
Это вы сейчас серьезно?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066357
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да серьезно.
вы просто уточняйте условия ,где это лучше.ну короче вопрос утопия.
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066385
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKда серьезно.
вы просто уточняйте условия ,где это лучше.ну короче вопрос утопия.
Не смешите. Когда в Codebehind'е ASP.NET-страниц творится то, что нам Dark_Scorpion показал, какие могут быть сомнения?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066419
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да тут надо не забывать о стиле.можно он соло разработчик.
ну примитивная структура в приведенном примере,просто примитивная структура.
передать ее куда то ,да это хорошо. но в рамках его кода,это пустая трата времени в первую очередь головы.надо думать об этом.

человеку думает. значит я буду общаться с httpcontext через структуру,а не на прямую как сейчас.
вдруг та ,структура нигде больше не нужна?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066532
Dark_Scorpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучИспользуя, например, BLToolkit:

Код: plaintext
1.
2.
3.
4.
5.
UserInfoDataAccessor userInfoDataAccessor = DataAccessor.CreateInstance<UserInfoDataAccessor>();

UserInfo userInfo = userInfoDataAccessor.GetUserInfoByLogin(login);
if(userInfo != null)
	HttpContext.Current.Session["userInfo"] = userInfo;
что это было? :)
1) а что такое BLToolkit?
2) А можно посмотреть содержимое GetCategories()?
Код: plaintext
	CategoryInfo[] categories = GetCategories();
3) Допустим у меня в слое данных функция выдаёт не DataTable, а бизнес объект CategoryInfo. То встаёт вопрос: где объявляется класс бизнес-объекта - а) объявляется дважды: один раз в слое данных, а второй раз на *.aspx.cs страничке, на которой принимаются данные; б) или создаётся специальная библиотека (помойка), где объявляются всевозможные классы бизнес-объектов. Ведь если таблиц в БД 100+, то количество таких классов будет ещё больше.
4) Какую надостройку можно использовать над ADO.NET, чтобы более просто можно было работать с данными? Нашёл Rsdn.Framework.Data - только эта разработка 2003 года. Может за 5 лет что-то посвежее и удобнее сделали?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066572
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dark_Scorpion
1) а что такое BLToolkit?
Первый результат в гугле
Dark_Scorpion
2) А можно посмотреть содержимое GetCategories()?

Код: plaintext
1.
2.
3.
[SqlQuery("SELECT * FROM Category")]
[ObjectType(typeof(Category))]
public abstract CategoryCollection GetCategories();
Dark_Scorpion
3) Допустим у меня в слое данных функция выдаёт не DataTable, а бизнес объект CategoryInfo. То встаёт вопрос: где объявляется класс бизнес-объекта - а) объявляется дважды: один раз в слое данных, а второй раз на *.aspx.cs страничке, на которой принимаются данные; б) или создаётся специальная библиотека (помойка), где объявляются всевозможные классы бизнес-объектов. Ведь если таблиц в БД 100+, то количество таких классов будет ещё больше.
Первый вариант вообще работать не будет.

В помойку ее может превратить только программист. У нас, например, в проекте в пространстве имен ***.ObjectModel.Business.Object уже 135 классов, и никаких неудобств не испытываем.
Dark_Scorpion
4) Какую надостройку можно использовать над ADO.NET, чтобы более просто можно было работать с данными? Нашёл Rsdn.Framework.Data - только эта разработка 2003 года. Может за 5 лет что-то посвежее и удобнее сделали?
NHibernate, BLToolkit, iBATIS.NET, SubSonic, Castle.ActiveRecord...
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066657
Dark_Scorpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rsdn.Framework.Data

NHibernate

BLToolkit

iBATIS.NET

SubSonic

Castle.ActiveRecord
Посоветуйте что из этого следует освоить и применять на практике?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066710
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rsdn.Framework.Data -- это уже "забытый" проект, его эволюционно-революционное развитие -- BLToolkit. Ознакомиться стоит. ActiveRecord и SubSonic основаны на NHibernate, так что можно изучить только NH и потом уже первые два пойдут гораздо проще. Ну а iBATIS мне никак не понравился, но посмотреть стоит.
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066799
calc.exe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучУ нас, например, в проекте в пространстве имен ***.ObjectModel.Business.Object уже 135 классов, и никаких неудобств не испытываем.
а сколько таблиц в базе?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066820
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Castle.ActiveRecord является надстройкой над nHibernate , является реализацией паттерна ActiveRecord (активная запись). Сами классы получаются не POCO, но зато получается хорошая абстракция над некоторыми деталями nHibernate которые могут спугнуть разработчика начинающего использовать ORM.

Dark_Scorpion
Посоветуйте что из этого следует освоить и применять на практике?

Посмотрите все. но для начала следует ознакомиться с темой, например если еще доступно то здесь есть ссылка на неплохой источник:
http://www.sql.ru/forum/actualthread.aspx?tid=475182&pg=21&hl=

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066857
calc.exe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и вот еще какой вопрос. просле установки одной из этих приблуд к БД можно будет обращаться только через ее экземпляр/кластер/пофигу?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066871
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
calc.exe
и вот еще какой вопрос. просле установки одной из этих приблуд к БД можно будет обращаться только через ее экземпляр/кластер/пофигу?

как хотите так и обращайтесь. но вся фишка и состоит в том, чтобы абстрагироваться от БД. отныне вы работаете с неким репозиторием объектом, где эти объекты брать проблема "приблуды"

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066877
calc.exe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Saотныне вы работаете с неким репозиторием объектом, где эти объекты брать проблема "приблуды"
объекты кешируются или нет? как она узнает о том, что я руками удалил запись, которую она вчера выдернула из базы?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066892
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
calc.exe
объекты кешируются или нет? как она узнает о том, что я руками удалил запись, которую она вчера выдернула из базы?

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

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35066907
calc.exe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Saэто уже специфический вопрос.
oh, i see...
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35067242
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да есть ощущение,что у когото пыль в глазах :)
со всеми этими надстройками утопическими.
ну это мое мнение и оно исходит от того,что люди испльзуют эти надстройки,потому что в своих программах у них нету своего "движка".
это такая ж утопия как typed dataset.
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35067619
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
calc.exeа сколько таблиц в базе?
Около 110.
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35067621
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKда есть ощущение,что у когото пыль в глазах :)
со всеми этими надстройками утопическими.
ну это мое мнение и оно исходит от того,что люди испльзуют эти надстройки,потому что в своих программах у них нету своего "движка".
это такая ж утопия как typed dataset.
Чего сказать-то хотели?
...
Рейтинг: 0 / 0
Зачем нужны бизнес-объекты?
    #35067665
Dmitdd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучNHibernate, BLToolkit, iBATIS.NET, SubSonic, Castle.ActiveRecord...
Может я не в теме, но почему LINQ все время забывают? Я сейчас на распутье, стоимт ли переходить с NHibernate на LINQ
...
Рейтинг: 0 / 0
25 сообщений из 101, страница 1 из 5
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Зачем нужны бизнес-объекты?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]