WCF SOA: Сервис Доступа к данным CRUD …, почему беспокойство (или наш дизайн неправильно)?

У нас есть сервис Доступа к данным в нашей системе WCF SOA. Этот сервис ответственен за то, что сделал, CRUD (создайте, обновите, удалите), операции на таблицах базы данных "в масштабе всей системы", и также источник этих данных для запросов. Любой другой сервис в системе, желающей получить доступ к таблицам под contol DAS, должен перейти к DAS, чтобы получить его или изменить его. Мы используем Платформу Объекта и созданный, наши собственные ПОСТЕПЕННО указывают систему слежения для этого DAS.

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

Истина, я действительно никогда не понимал, почему Сервис Доступа к данным является хорошей идеей в противоположность просто доступу к таблицам непосредственно. Это, кажется, чтобы быть медленнее, наш DAS не является транзакционным, поскольку это не может передать обратно ПОСТЕПЕННО график для обновления базы данных (только единственный POCOS за один раз), и у нас есть проблемы также, где DAS является на самом деле клиентом к другому сервису, для которого нужны данные из него... круговая зависимость.

Почему беспокойство с DAS? Почему DAS так важен когда дело доходит до SOA? Что я пропускаю здесь? Единственная точка управления?

Это - также недостаток дизайна SOA, что не все таблицы являются частью DAS и что некоторые сервисы имеют свои собственные "частные" таблицы?

Любая дискуссия об этом приветствии.

5
задан MrLane 2 March 2010 в 13:56
поделиться

1 ответ

Вы правы, считая, что это правильный способ делать вещи, и вы также правы, что он замедляет работу и иногда может быть громоздким. SOA обязательно обменивается некоторой эффективностью в обмен на обеспечение единых точек контроля для всех данных, связанных с сервисом. На самом деле, даже идея иметь "общую службу DAS" слегка пованивает в некоторых кругах SOA.

Путем централизации всех операций CRUD в одной службе в приложении SOA можно обеспечить целостность данных и правильное выполнение бизнес-правил. Чтобы привести пример, подумайте о сущности, которую вы хотели бы хранить и которая имеет некоторые бизнес-правила, связанные с ней, к которым трудно подойти с точки зрения чистого SQL - например, допустим, таблица, которая хранит ссылки на файлы, и службы создания / обновления, которые обеспечивают существование этих файлов.

С помощью SOA и единой точки доступа к этим таблицам вы можете закодировать логику в методах создания / обновления и быть уверенными в том, что данные, которые вы получаете от службы, действительны - т.е. файлы, на которые ссылаются, существуют. Если бы кто-либо мог записывать в эти таблицы или получать данные из них, такой уверенности не было бы - даже если вы сами вызываете службу, вы не знаете, какие другие программисты по злому умыслу или просто по забывчивости забыли реализовать это критическое бизнес-правило. Это приводит к защитному программированию, когда каждый бит клиентского кода обеспечивает бизнес-логику независимо, и, в конечном итоге, к запутанному беспорядку бизнес-логики, разбросанной по всему вашему приложению.

Еще одно преимущество - масштабируемость и ремонтопригодность. Допустим, одна из ваших служб обращается к огромному объему данных. В SOA все "упаковано в черный ящик", так что ваш клиентский код не имеет достаточных знаний о том, как в конечном итоге получаются данные. Вы можете изменить свою СУБД, разделить таблицы или реализовать кэширование, и сделать все это невидимым для вызывающего клиентского кода - гарантируя, что ваши болезненные обновления должны быть сделаны только в одном месте. Если код базы данных разбросан по всему приложению, такое обновление становится крайне болезненным.

7
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: