Пиша приложение клиент/сървър, където клиентът е приложение на Windows Forms, а сървърът е WCF услуга, хоствана в услуга на Windows. Имайте предвид, че контролирам и двете страни на приложението.
Опитвам се да приложа практиката на кодиране срещу интерфейс: т.е. имам споделено сглобяване, което е посочено от клиентското приложение. Този проект съдържа моите WCF ServiceContracts и интерфейси, които ще бъдат изложени на клиенти. Опитвам се да изложа само интерфейси на клиентите, така че те да зависят само от договор, а не от конкретно изпълнение. Една от причините да правя това е, за да мога да внедрявам услугата си и да променя домейна си по всяко време, без да се налага да компилирам и преразпределям клиентите. В този случай интерфейсите/договорите няма да се променят. Трябва само да прекомпилирам и преразпределя своята WCF услуга.
Проблемът с дизайна, с който се сблъсквам сега, е: на клиента, как да създам нови екземпляри на обекти, напр. ICustomer
, ако клиентът не знае за Customer
конкретното изпълнение? Трябва да създам нов клиент, който да бъде записан в базата данни.
Да използвам ли инжектиране на зависимости или фабричен клас за инстанциране на нови обекти, или просто трябва да позволя на клиента да създава нови екземпляри на конкретни реализации?
Не правя TDD и обикновено ще имам само една реализация на ICustomer
или друг открит интерфейс.