PDA

View Full Version : NameSpace ها چیستند ؟



ACorvinus
چهارشنبه 07 اسفند 1387, 14:19 عصر
سلام .

میشه یه توضیخ مختصر ولی کامل در مورد NameSpace ها بهم بدین .

مثلا وقتی میخوایم یه NameSpace ایجاد کنیم کجا ایجادش می کنیم و کجا ازش استفاده می کنیم .

به چه دردی میخورن ؟

anooshiran
پنج شنبه 08 اسفند 1387, 09:04 صبح
با عرض سلام به تمام اساتيد و دوستان
در پي سئوال دوست عزيزمان در ارتباط با Namespace و فقط جهت آشنايي مختصر دوستاني كه كلا با اين مقوله آشنايي ندارند را به رشته تحرير درآوردم. بديهي است كه اين مقاله ناشيوا و ناكافي مي باشد. اميد است دوستان و اساتيد محترم اين سايت در روشن شدن اين مفاهيم اوليه براي اهالي سايت به تلاشي درخور بپردازند.

------------------------------------------------------------------------
NameSpace يا فضاي نام

يكي از قسمت هاي مهم Microsoft .Net Framework كلكسيون عظيم و متنوع كلاس هاي آن است. در .Net Framework حدود 3500 كلاس در رابطه با موارد مختلف موجود مي باشد، اما چگونه مي توان كلاس مورد نظر را در ميان اين كلاس ها يافت؟

كلاس هاي موجود در .Net frameWork به گروه هاي متفاوتي با عنوان Namespace تقسيم مي شوند كه هر كدام از اين Namespace ها حاوي چندين كلاس مرتبط به هم است
هدف از Namespace در .Net فراهم كردن سازماندهي منطقي و دسته بندي انواع كلاس هاي .Net و اجتناب از تداخل نامگذاري و تمايز ميان انواع كلاس مي باشد.

براي مثال System.Windows.Forms و System.Deployment هردو داراي يك كلاس Application هستند. اين دو كلاس مي توانند توسط Namespace ي كه در آن قرار دارند متمايز شوند.

براي استفاده از يك كلاس:
1- يا بايد نام كامل كلاس توصيف شده را مشخص ( فضاي نام و نام كامل كلاس) كنيد.
2- يا از عبارت راهنماي Imports استفاده كنيد تا اسامي كلاس، نياز به توصيف نداشته باشند و بتوانند با استفاده از يك نام مستعار (alias) مورد اشاره قرار گرفته، يا بتوانند به جاي يك مسير NameSpace توصيف شده كامل، با يك مسير نسبي و خلاصه مورد اشاره قرار بگيرند.

اهميت استفاده از imports زماني مشخص مي گردد كه در حال كار كردن با برنامه هاي بزرگ هستيد. مثلا بخواهيد به كلاسي مانند SqlCommand در فضاي نام System.Data.SqlClient دسترسي پيدا كنيد. بديهي است كه ذكر اسم كلاس و Namespace آن در هر بار استفاده از اين كلاس كار بسيار سخت و باعث شلوغي برنامه خواهد شد.بنابر اين بهتر است كه با اضافه نمودن Namespace آن با استفاده از دستور Imports در ايتداي كد و قبل از هر دستوري ، هر مرتبه فقط نام كلاس SqlCommand يا نام مستعار(alias) آن را ذكر كنيد.

تنها مورد مشكل زا زماني است كه در دو Namespace ي كه با استفاده از Imports به برنامه اضافه كرده ايد دو كلاس هم نام وجود اشته باشد. مانند System.Windows.Forms و System.Deployment كه هردو داراي يك كلاس به نام Application هستند.

شما هم مي توانيد همانند .net framework در برنامه هاي خود Namespace تعريف نموده و كلاس هايتان را درون آن ايجاد كنيد.

مانند


Namespace Myapplication
Public Class Main
'Codes
End Class
Public Class MyText
'Codes
End Class


اگر Namespace ي كه شامل كد شما مي باشد در درونNamespace ديگري قرار داشته باشد ، از دو روش مي توانيد استفاده كنيد:
1- استفاده از يك عبارت Namespace منفرد با عبارتهاي Namespace زير هم.
مانند



Namespace Myapplication
Public Class Main
'Codes
End Class
Namespace Groups
Public Class MyText
'Codes
End Class
End Namespace
End Namespace

2-استفاده از يك عبارت Namespace منفرد يا عبارتهايNamespace تودرتو
مانند



Namespace Myapplication
Public Class Main
'Codes
End Class
End Namespace
Namespace MyApplication.Groups
Public Class MyText
'Codes
End Class
End Namespace


انشاء الله اگر عمري باقي بود سعي بر ادامه توضيحات بيشتري درحد وسعت اندك دانشم در ارتباط با اين مطلب خواهم داد.
نظرات و انتقادات شما دوستان مشوقي براي ادامه دادن است

ACorvinus
پنج شنبه 08 اسفند 1387, 15:09 عصر
دستت درد نکنه جان .

ولی این نکته رو نفهمیدم .

کجاها تعریف می کنیم و کجا ازش استفاده می کنیم ؟

یا اینکه تعریف می کنیم ولی استفاده نمیکنیم .!!!:کف:

salehbagheri
پنج شنبه 08 اسفند 1387, 16:58 عصر
کجاها تعریف می کنیم و کجا ازش استفاده می کنیم ؟

یا اینکه تعریف می کنیم ولی استفاده نمیکنیم .!!!:کف:

دوست عزيز! NameSpace ها كدهايي نيستند كه كار خاصي براتون انجام بدند! فقط براي دسته بندي كدهاي ديگر به كار ميره!
متن آقاي anooshiran رو به دقت بخونيد!

sari-1369
پنج شنبه 08 اسفند 1387, 23:21 عصر
سلام میشه یه سری namespace که کاربرد زیادی دارن رو معرفی کنین .

مثلا پرشین کلندر ...

anooshiran
شنبه 10 اسفند 1387, 00:04 صبح
با سلام به دوستان عزيز

اين فهرست برخي از Namespae ها پر كاربرد در FCL (Framework Class Library ) را معرفي و مختصرا راجع به آنها توضيح مي دهد:


System : محتوي تمام كلاسهاي پايه اي است كه بوسيله تمام برنامه ها استفاده مي شوند

:System.Collectiom مجموعه اي است از كلاسها كه براي نگهداري آرايه هايي از اشيا كه شامل آرايه هاي عمومي مثل صف ، پشته ، ليست پيوندي و.... مي شود بكار مي رود.

System.Diagnostics: محتوي كلاس هايي براي مستند سازي و نيز خطا يابي در برنامه بكار مي رود.

:System.Drawing شامل كلاس هايي براي نگهداري اشياي مربوط به گرافيك دو بعدي است. اين مجموعه بيشتر براي برنامه هاي تحت ويندوز و نيز نمايش عكس در برنامه هاي تحت وب به كار مي رود.

:System.EnterprisseServices اين فضاي نام شامل كلاس هايي براي مديريت تراكنش ها ، فعال سازي JIT ، امنيت و .. است كه موجب كارايي بيشتر كدهاي مديريت شده در سرور مي شوند.

:System.Globalization اين قسمت شامل كلاس هايي براي پشتيباني زبان هاي ديگر از قبيل حروف آن زبان ها ، نحوه نمايش تاريخ و قالب بندي در آن و .... مي شود.

System.Io كلاس هايي براي انجام عمليات ورودي و خروجي از قبيل كار با فايل ها و دايركتوري ها را دارد

:System.Management شامل كلاس هايي براي مديريت ديگر كامپيوترها به وسيله دستگاه مديريتي ويندوز يا WMI است.

System.Net شامل كلاس هايي براي برقرار ارتباطات شبكه اي است.

:System.Reflection شامل كلاس هايي براي بررسي و استفاده از اطلاعات داخل metadata است.

:System.Resources كلاس هايي براي مديريت منابع خارجي استفاده شده در برنامه را شامل مي شود.

:System.Runtime.InteropServices كلاس هاي اين فضاي نام به كدهاي مديريت شده اين امكان را مي دهد كه از امكانات قيلي ويندوز از قبيل كامپوننت هاي COM و يا توابع موجود در فايل هاي Win32 استفاده كنند

System.Runtime.Remoting كلاس هايي را شامل مي شود كه به ديگر كلاس ها اجازه مي دهند از راه دور مورد استفاده قرار گيرند

:System.Runtime.Serialization كلاس هايي را در بر دارد كه به اشيا اين امكان را مي دهند به رشته اي تبديل شوند كه معرف آنها باشد و از رشته اي كه معرف آنها است به يك شيء تبديل شوند

System.Security: كلاس هايي براي محافظت از اطلاعات و منابع برنامه

System.Text كلاس هايي براي كار با متن در قالب هاي مختلف از قبيل ASCII و يا UniCode

System.Threading شامل كلاس هايي است كه براي اجراي همزمان پردازش ها و نيز هماهنگي در دسترسي به اطلاعات مورد استفاده قرار مي گيرد

System.Xml كلاس هايي براي بررسي و پردازش داده ها در قالب Xml را در بر دارد