Ahol lehet, érdemes async metódusokat használni (mondjuk egy saját használatra szánt webappnál nem valószínű, hogy észreveszed a különbséget, de egy desktop appnál ha nem async-ot használsz, akkor a mentés idejére megfagy a UI)
A validálással kapcsolatban, én főleg webes alkalmazásokon dolgozom, desktop appot soha nem csináltam még, így nem tudom ott hogy szokták megoldani. Weben általában amit lehet, már a UI-on validálunk egyből, ettől függetlenül a szerveren ugyanúgy még egyszer validálunk.
Biztos van valami event winformsban, amire fel tudsz iratkozni (mondjuk amikor a kurzor elhagyja az input boxot), itt meg tudsz csinálni minden validálást, és submitkor már valid lesz minden adat. Esetleg akkor validálnék újra a service-ben, ha valamelyik field mondjuk már meglévő adatoktól függ, és ez változhat közben.