دوستمون جواب خوبی دادن ولی مشکلی که در روش version هست اینه که ممکنه سناریو به این صورت باشه :
فرض کنید که برنامه وقت دهی در یک بیمارستان...
کاربر فرم وقت دهی رو باز میکنه و اولین وقت خالی رو به بیمار پیشنها میده ، انوقت بیمار قبول میکنه و کاربر اطلاعات بیمار رو وارد میکنه و میخواد ثبت کنه که .... از شانس بدش همزمانی اتفاق میافته (حالا اگه متوجه هم زمانی هم بشیم فاییده ای نداره)، حالا بیمار هم که وقت رو ok کرده و رفته.
فکر میکنم بهترین راه استفاده از socket programing و یا wcf و Remoting از این قبل متد هاست.
در کل اگه لایه میانی رو در یک ایستگاه نصب کنیم ، میتونیم خیلی راحت و بدون فشار بر روی sqlServer از ماهیت data هامون دفاع کنیم و Validation رو در تمام کلاینت ها مشترک انجام بدیم.