Кой слой трябва да имам своите DataContracts?

Трябва ли да ги имам в клиентското приложение на wcf?

Или трябва да ги поставя в слоя бизнес или данни?

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

От друга страна, тези договори за данни и свързаните с тях бизнес правила не са и не трябва да се използват, да речем, от моето уеб приложение и са свързани само със самата уеб услуга на wcf.


person Diskdrive    schedule 08.03.2011    source източник


Отговори (1)


От гледна точка на чиста SOA, те трябва да имат свой собствен слой, посветен на моделирането на интерфейса, който искате да изложите на външния свят.

По-конкретно, ако бизнес логиката е важна, можете да преместите договорите за данни (DC) в отделен сбор и да го споделите между клиенти и услуги. Носи ви няколко предимства:

  • Няма нужда да създавате прокси клас на клиентите за DC
  • Можете лесно да споделяте вътрешната логика на DC

Ако искате да добавите допълнителна логика от страна на сървъра, която не трябва да бъде известна на клиента, все пак можете да разширите класовете чрез композиция или подкласиране (или дори методи за разширение).

person Johann Blais    schedule 08.03.2011