WCF Instance Management

هر سرویسی در WCF توسط یک کلاس ارائه می‌شود. مثلاً فرض کنید که سرویسی برای محاسبه حقوق یک کارمند وجود دارد. پیاده‌سازی این سرویس می‌تواند به شکل متودی از یک کلاس فرضی به نام CalcClass باشد. وقتی که کلاینتی به سرویس WCF مورد نظر وصل شده و یکی از متودهای آن را فراخوانی نماید، WCF یک instance از کلاس CalcClass ایجاد کرده و متود مورد نظر کلاینت را از آن فراخوانی می‌نماید. این موضوع که روش ایجاد instance به ازای هر درخواست است یا به ازای هر کلاینت یا…، روش Instance Management نام دارد.

در WCF سه نوع روش instance گیری موجود است:

۱- به ازای هر درخواست: Per-Call
۲- به ازای هر کلاینت: Per-Session
۳- یکی به ازای کل Application (برنامه): Singleton

هر کدام از این روش‌ها مزایا و معایب خودشان را دارد. مثلاً روش Per-Call کمی Performance کمتری دارد ولی Scalable است. روش Per-Session حتی روی پروتکل Web Service هم کار می‌کند اما کمی overhead دارد. روش Singleton به شدت مشکل Performance دارد ولی برای Applicationهایی مثل کار با پورت سخت‌افزار یا کنترل موتور مکانیکی فقط یک منبع دارند مناسب‌تر است.

منبع:
فصل ۴ کتاب Oreilly Programming WCF Services