۲۷-اردیبهشت-۱۳۸۷, ۱۵:۵۳:۱۹
COM یا Component Object Model یک مکانیسم شی گرایی تقریبا قدیمی هست که توسط مایکروسافت در سال 1993 ارائه شد . بیشترین هدف این تکنولوژی ، ایجاد دادن امکان ساخت اشیا بصورت داینامیک و تبادل و به اشتراک گذاریه قابلیت های اونها بین پروسس ها ، برنامه ها و حتی کامپیوتر های مختلف بود . همینطور DCOM و +COM هم نسخه های متفاوتی از اون بودند که بعدها ارائه شدن .
از اولین سیستم هایی که بر این مبنا ساخته شدند میشه همون مکانیسم OLE رو اشاره کرد . در زمان ارائه ویژوال استدیو 6 در سال 1998 مبحث ActiveX هم به این جمع اضافه شد .
برای مثال تمام او سیستم های آتوماسیون Office هم بر همین مبنا ساخته شده ( برنامه های پکیج آفیس همه به نوعی COM Server هستند و شما میتونید برنامه ای بنویسید که به عنوان COM client از قابلیت های اونها استفاده کنه )
ساختار درونی و برنامه نویسی سیستم های COM خیلی پیچیده بود و مشکلات عمده ای داشت برای همین مایکروسافت سیستم Net. رو ارائه کرد که تمام مشکلات موجود COM رو برطرف کرد ، برنامه نویسی رو خیلی ساده کرد و سیستم COM رو کنار گذاشت . البته همون طور که بهت گفتم هنوز پشتیبانی دو طرفه از اون رو در دات نت انجام میده یعنی شما میتونی در دات نت از اشیای COM استفاده کنی و بلعکس ولی ساخت اشیای COM در دات نت دیگه امکان پذیر نیست .
همون طور کامپوننت های COM به ocx یا ActiveX معروف بودند ، کامپوننت های دات نت به Assembly معروف هستند . مثلا یکی از مشکلات طراحی ActiveX این بود که با string های توی وی بی مشکل داشتند و اگر توی ++VC میخواستیم واسه وی بی کامپوننت بسازیم باید حواسمون رو به این مسئله میدادیم . اینجور مشکلات در سیستم یکپارچه دات نت و دنیای اسمبلی ها دیگه معنی نداره !!
کدهایی که توی محیط دات نت نوشته میشن کاملا کنترل شده هستند در یک سیستم مدیریت حافظه اتوماتیک با نام CLR اجرا میشن و بطور کل کدهای نوشته شده در دات نت رو Managed کد می گن . کدهایی که خارج از محیط CLR اجرابشن رو Unmanaged میگن مثلا کدی که در وی بی 6 نوشته میشه !
از اولین سیستم هایی که بر این مبنا ساخته شدند میشه همون مکانیسم OLE رو اشاره کرد . در زمان ارائه ویژوال استدیو 6 در سال 1998 مبحث ActiveX هم به این جمع اضافه شد .
برای مثال تمام او سیستم های آتوماسیون Office هم بر همین مبنا ساخته شده ( برنامه های پکیج آفیس همه به نوعی COM Server هستند و شما میتونید برنامه ای بنویسید که به عنوان COM client از قابلیت های اونها استفاده کنه )
ساختار درونی و برنامه نویسی سیستم های COM خیلی پیچیده بود و مشکلات عمده ای داشت برای همین مایکروسافت سیستم Net. رو ارائه کرد که تمام مشکلات موجود COM رو برطرف کرد ، برنامه نویسی رو خیلی ساده کرد و سیستم COM رو کنار گذاشت . البته همون طور که بهت گفتم هنوز پشتیبانی دو طرفه از اون رو در دات نت انجام میده یعنی شما میتونی در دات نت از اشیای COM استفاده کنی و بلعکس ولی ساخت اشیای COM در دات نت دیگه امکان پذیر نیست .
همون طور کامپوننت های COM به ocx یا ActiveX معروف بودند ، کامپوننت های دات نت به Assembly معروف هستند . مثلا یکی از مشکلات طراحی ActiveX این بود که با string های توی وی بی مشکل داشتند و اگر توی ++VC میخواستیم واسه وی بی کامپوننت بسازیم باید حواسمون رو به این مسئله میدادیم . اینجور مشکلات در سیستم یکپارچه دات نت و دنیای اسمبلی ها دیگه معنی نداره !!
کدهایی که توی محیط دات نت نوشته میشن کاملا کنترل شده هستند در یک سیستم مدیریت حافظه اتوماتیک با نام CLR اجرا میشن و بطور کل کدهای نوشته شده در دات نت رو Managed کد می گن . کدهایی که خارج از محیط CLR اجرابشن رو Unmanaged میگن مثلا کدی که در وی بی 6 نوشته میشه !