***UNIQUE***
Active Member
----------------------------------------------------------------------------------------------------------------------------
منظورم اينه كه وقتي برنامه هايي را با كامپايلرهاي سي ، مثل توربو سي ، ويژوال سي ، يا سي شارپ مي سازيم، آيا برنامه يا اپليكيشن ما مستقل مي تونه روي ويندوز يا داس زندگي كنه ؟ يا بايد با فايل هايي حمايت بشه؟
----------------------------------------------------------------------------------------------------------------------------
سلام
ببخشید من این هفته یه خورده سرم شلوغ بود نتونستم زودتر مطلب رو بذارم
سیستم net. میشه گفت هم مبتنی بر Windows است هم مبتنی بر Proccessor . بر روی Proccessor های x86 کار میکنه البته Proccessor 80486 که خیلی ضعیف برای این کار اما از 80586 به بعد net. روشون کار میکنه و CLR برای windows های 32 بیتی داده شد .
در VisualStudio6 ما اگر از یه dll استفاده میکردیم باید بر روی سیستمی که میخواستیم برنامه اجرا بشه اون dll رو Register میکردیم و همه این dll ها (اگر اشتباه نکنم) در شاخه Windows/System32 قرار میگرفتند و اگر میخواستیم Version دیگه ای از اون dll رو یا dll دیگه ای با همون نام رو روی سیستم Register کنیم با مشکل و خطا مواجه میشدیم چون نمیشد دو تا فایل با یک نام توی این شاخه قرار بگیره اما درVisualStudio.net تغییرات زیادی در فریم ورک ایجاد شده و ما دو نوع dll داریم یا private
هستند یا StronglyNamed که بهش Public یا Global هم میگن در اینجا اگر شما شاخه برنامت رو مثلا" َApplcation1 را کل شاخه اش رو کپی کرده و ببری روی کامپیوتر شخص دیگه ای پیست کنی و فایل exe اون رو اجرا کنی بدون هیچ مشکلی اجرا میشه(البته به شرطی که net FrameWork. روی سیستم اون شخص نصب باشه البته در ویندوزهای XP و 2003 net FrameWork. همزمان با ویندوز نصب میشه اما در نسخه های قبلی windows باید نصب بشه) و دیگه احتیاجی به register شدن dll Private شما نیست همین که dll های مورد استفاده در برنامت رو در شاخه یا زیر شاخه Application1 قرار داده باشی کافیه چون برنامه وقتی اجرا میشه و به CLR میگه من به این dll نیاز دارم ابتدا در شاخه و زیر شاخه های این Application رو دنبال این dll میگرده و اگر این dll در اونجا بود (البته یه سری چیزهای دیگرو هم بررسی میکنه) و بعد میگه این dll Private است اگر نبود میره در شاخه Windows/Assembly (در net. وقتی نصب میشه همه dll های StronglyNamed در زیر شاخه ای به نام assembly در شاخه Windows قرارمیگیرند )و اونجا دنبال این dll میگرده اگر اونجا بود (با بررسی یه سری شاخص های دیگه میکه این dll Public است) و استفاده میکنه اگر اونجا هم نبود دراینترنت دنبالش میگرده اگر اونجا هم نبود اونوقت error میده.
dll های stronrlyNamed به این صورت نامگذاری میشوند که در شاخه Assembly یک دایرکتوری به اسم system.data ایجاد میشه و تمام ورژنهای dll System.data داخل این directory قرار میگیرند و نامگذاریشون شامل 4 قسمت است Version (نسخه dll )و public Key Token (یک عدد 64 بیتی که 16 حرف ان به صورت تصادفی برای نامگذاری انتخاب میشود ) و Name (نام)و Calture (کشور و زبان) وجود داره و به دلیل نامگذاری قوی که گفته شد دیگه در register شدن dll Public خطا بروز نمیکنه و اگه dll ها هم نام هم باشند مشکل بوجود نمییاد و نامگذاری dll های Private هم به همین صورت است اما وارد کردن همه این موارد الزامی نیست و اگر شما یه dll رو Public تعریف کنی و اون رو در زیر شاخه برنامت قرار بدی CLR از همونجا اون رو به عنوان یه dll Private خودش در نظر میگیره و استفاده میکنه اما بالعکس این قضیه صادق نیست و نمیشه یه dll Private رو به عنوان public استفاده کرد.
dll های Private فقط توسط همون برنامه ای که در زیر شاخش قرار دارن میتونن استفاده بشن اما dll های Public توسط برنام های دیگه هم همزمان میتوننن استفاده بشن .
امیدورام مطلب رو خوب بیان کرده باشم
فکر میکنم برای بازتر شدن این موضوع مقاله ای که گذاشتم بتونه کمک کنه.
موفق باشید
منظورم اينه كه وقتي برنامه هايي را با كامپايلرهاي سي ، مثل توربو سي ، ويژوال سي ، يا سي شارپ مي سازيم، آيا برنامه يا اپليكيشن ما مستقل مي تونه روي ويندوز يا داس زندگي كنه ؟ يا بايد با فايل هايي حمايت بشه؟
----------------------------------------------------------------------------------------------------------------------------
سلام
ببخشید من این هفته یه خورده سرم شلوغ بود نتونستم زودتر مطلب رو بذارم
سیستم net. میشه گفت هم مبتنی بر Windows است هم مبتنی بر Proccessor . بر روی Proccessor های x86 کار میکنه البته Proccessor 80486 که خیلی ضعیف برای این کار اما از 80586 به بعد net. روشون کار میکنه و CLR برای windows های 32 بیتی داده شد .
در VisualStudio6 ما اگر از یه dll استفاده میکردیم باید بر روی سیستمی که میخواستیم برنامه اجرا بشه اون dll رو Register میکردیم و همه این dll ها (اگر اشتباه نکنم) در شاخه Windows/System32 قرار میگرفتند و اگر میخواستیم Version دیگه ای از اون dll رو یا dll دیگه ای با همون نام رو روی سیستم Register کنیم با مشکل و خطا مواجه میشدیم چون نمیشد دو تا فایل با یک نام توی این شاخه قرار بگیره اما درVisualStudio.net تغییرات زیادی در فریم ورک ایجاد شده و ما دو نوع dll داریم یا private
هستند یا StronglyNamed که بهش Public یا Global هم میگن در اینجا اگر شما شاخه برنامت رو مثلا" َApplcation1 را کل شاخه اش رو کپی کرده و ببری روی کامپیوتر شخص دیگه ای پیست کنی و فایل exe اون رو اجرا کنی بدون هیچ مشکلی اجرا میشه(البته به شرطی که net FrameWork. روی سیستم اون شخص نصب باشه البته در ویندوزهای XP و 2003 net FrameWork. همزمان با ویندوز نصب میشه اما در نسخه های قبلی windows باید نصب بشه) و دیگه احتیاجی به register شدن dll Private شما نیست همین که dll های مورد استفاده در برنامت رو در شاخه یا زیر شاخه Application1 قرار داده باشی کافیه چون برنامه وقتی اجرا میشه و به CLR میگه من به این dll نیاز دارم ابتدا در شاخه و زیر شاخه های این Application رو دنبال این dll میگرده و اگر این dll در اونجا بود (البته یه سری چیزهای دیگرو هم بررسی میکنه) و بعد میگه این dll Private است اگر نبود میره در شاخه Windows/Assembly (در net. وقتی نصب میشه همه dll های StronglyNamed در زیر شاخه ای به نام assembly در شاخه Windows قرارمیگیرند )و اونجا دنبال این dll میگرده اگر اونجا بود (با بررسی یه سری شاخص های دیگه میکه این dll Public است) و استفاده میکنه اگر اونجا هم نبود دراینترنت دنبالش میگرده اگر اونجا هم نبود اونوقت error میده.
dll های stronrlyNamed به این صورت نامگذاری میشوند که در شاخه Assembly یک دایرکتوری به اسم system.data ایجاد میشه و تمام ورژنهای dll System.data داخل این directory قرار میگیرند و نامگذاریشون شامل 4 قسمت است Version (نسخه dll )و public Key Token (یک عدد 64 بیتی که 16 حرف ان به صورت تصادفی برای نامگذاری انتخاب میشود ) و Name (نام)و Calture (کشور و زبان) وجود داره و به دلیل نامگذاری قوی که گفته شد دیگه در register شدن dll Public خطا بروز نمیکنه و اگه dll ها هم نام هم باشند مشکل بوجود نمییاد و نامگذاری dll های Private هم به همین صورت است اما وارد کردن همه این موارد الزامی نیست و اگر شما یه dll رو Public تعریف کنی و اون رو در زیر شاخه برنامت قرار بدی CLR از همونجا اون رو به عنوان یه dll Private خودش در نظر میگیره و استفاده میکنه اما بالعکس این قضیه صادق نیست و نمیشه یه dll Private رو به عنوان public استفاده کرد.
dll های Private فقط توسط همون برنامه ای که در زیر شاخش قرار دارن میتونن استفاده بشن اما dll های Public توسط برنام های دیگه هم همزمان میتوننن استفاده بشن .
امیدورام مطلب رو خوب بیان کرده باشم
فکر میکنم برای بازتر شدن این موضوع مقاله ای که گذاشتم بتونه کمک کنه.
موفق باشید