PDA

View Full Version : سوال: GUID یا CLSID



Iman_1365
دوشنبه 10 اسفند 1388, 16:16 عصر
سلام
من در برنامه نویسی از متدی استفاده میکنم که آرگومان ورودی آن باید یک GUID باشدGUID به چه معناست و اگر بخواهم GUID یک کامپوننت رو بدست بیارم و بذارم تو متد باید چکار کنم ؟
لطفا ......کمک

Ehsan Programmer
دوشنبه 10 اسفند 1388, 17:00 عصر
فکر میکنم کدهای 128 بایتی که به کمک کارت شبکه تولید میشه و منحصر به فرد است
مانند کد زیر

{1BF621ED-E2DF-4C5C-98EE-8CAD76E1B048}

FastCode
دوشنبه 10 اسفند 1388, 21:20 عصر
فکر میکنم کدهای 128 بایتی که به کمک کارت شبکه تولید میشه و منحصر به فرد است
مانند کد زیر

{1BF621ED-E2DF-4C5C-98EE-8CAD76E1B048}

128 بایتی نه, 128بیتی.
کارت شبکه نه, همه چیز.
اون چیزی که توسط کارت شبکه استفاده(نه تولید) میشه IP که البته اون هم Unique هست و مثل Guid کلاس بندی داره.
منحصر به فرد هم نیست(اسمش هست ولی خودش نیست).

Guid یا Globally Unique Identifier به معنی نشانگر بی هم تای جهانی اعدادی هستند(تا سال 2011 تبدیل به عدد میشن(128 bit CPU)) که برای مقاصدی استفاده میشن که در اونها به موارد زیر نیاز داریم.
1.مقادیر unique
2.حجم کم
3.سرعت بالا (1,2,4 _ CPU Cycles)(دهنم سرویس شد تا این 1,2,4 رو درست بنویسم)
http://en.wikipedia.org/wiki/Guid


اگر بخواهم GUID یک کامپوننت رو بدست بیارم و بذارم تو متد باید چکار کنم ؟
http://msdn.microsoft.com/en-us/library/system.type.guid.aspx

Saeed.Masoumi
سه شنبه 11 اسفند 1388, 01:22 صبح
128
اون چیزی که توسط کارت شبکه استفاده(نه تولید) میشه IP که البته اون هم Unique هست و
ممنون توضیحات کافی و کاملی بود ممنون
اما اونی که توسط کارت شبکه استفاده می شه (چون در لایه فیزیکی است IP وجود ندارد) مک آدرس است که توسط پروتکل های Arp , Rarp کار تبدیل این مک به IP و بلعکس انجام میشه.

FastCode
سه شنبه 11 اسفند 1388, 14:25 عصر
ممنون توضیحات کافی و کاملی بود ممنون
اما اونی که توسط کارت شبکه استفاده می شه (چون در لایه فیزیکی است IP وجود ندارد) مک آدرس است که توسط پروتکل های Arp , Rarp کار تبدیل این مک به IP و بلعکس انجام میشه.

MAC address هم توسط کارت شبکه تولید نمیشه.:لبخند:
منظور من تولید توسط درایور ها و روتر ها ... بود که با توجه به subnetmask یه IP به صورت random تولید میکنن.

kiosksoft
سه شنبه 11 اسفند 1388, 21:03 عصر
سلام
من در برنامه نویسی از متدی استفاده میکنم که آرگومان ورودی آن باید یک GUID باشدGUID به چه معناست و اگر بخواهم GUID یک کامپوننت رو بدست بیارم و بذارم تو متد باید چکار کنم ؟
لطفا ......کمک

دوست عزیز

GUID یا CLSID کدی منحصر بفرد برای دسترسی به OBJECT های شناخته شده توسط سیستم عامل میباشد تخصیص این کد به OBJECT ها به طراح یا برنامه نویس آن برمیگردد و در registry سیستم ثبت میشود، از طریق این کد سیستم عامل یا در صورت لزوم برنامه نویسان به آن Object دسترسی پیدا کرده و از آن استفاده میکنند.

برای پیدا کردن اگر اسم Object را در رجیستری جستجو کنید GUID آن را پیدا خواهید کرد.

CYCLOPS
چهارشنبه 12 اسفند 1388, 06:41 صبح
خوب دوستان میشه یه مثال از نحوه کاربرد اون بزنید ؟
کجا بیشتر به درد میخوره ؟

FastCode
چهارشنبه 12 اسفند 1388, 13:23 عصر
خوب دوستان میشه یه مثال از نحوه کاربرد اون بزنید ؟
کجا بیشتر به درد میخوره ؟

توی جست و جو ها فوق العادست.من از Guid به عنوان key توی dictionary استفاده میکنم.

private static System.Collections.Generic.Dictionary<string, System.Guid> columnGuids;
private static System.Collections.Generic.Dictionary<System.Guid, IComparer<Esfand.Data.DataClasses.Faaliat>> comparers;
public static void DeclareComparer(string Name, System.Guid Guid, IComparer<Esfand.Data.DataClasses.Faaliat> Comparer)
{
columnGuids.Add(Name, Guid);
comparers.Add(Guid, Comparer);
}
public static void UnDeclareComparer(System.String Name)
{
System.Guid Guid = columnGuids[Name];
columnGuids.Remove(Name);
comparers.Remove(Guid);
}
public static System.Guid GetColumnnIDByName(string Name)
{
if(Name == "Code") return _GUID_Code;
if(Name == "Name") return _GUID_Name;
return columnGuids[Name];
}
public static IComparer<Esfand.Data.DataClasses.Faaliat> GetComparerByColumnID(System.Guid ColumnID)
{
if(ColumnID == _GUID_Code) return Comparer_Code.Shared;
if(ColumnID == _GUID_Name) return Comparer_Name.Shared;
return comparers[ColumnID];
}
public static readonly System.Guid _GUID_Code = new System.Guid("99a09b41-f54d-4bd5-a8ee-8d48168b439a");
public static readonly System.Guid _GUID_Name = new System.Guid("cf8e9994-2fa8-4ca2-8499-08f112a342a3");
public class Comparer_Code : Comparer<Esfand.Data.DataClasses.Faaliat>
{
public override int Compare(Esfand.Data.DataClasses.Faaliat l, Esfand.Data.DataClasses.Faaliat r) { return (l._C_Code).CompareTo(r._C_Code); }
}
public class Comparer_Name : Comparer<Esfand.Data.DataClasses.Faaliat>
{
public override int Compare(Esfand.Data.DataClasses.Faaliat l, Esfand.Data.DataClasses.Faaliat r) { return (l._C_Name).CompareTo(r._C_Name); }
}

توی این کد(auto generated) من از Guid به عنوان شاخص ستون های یه جدول استفاده کردم.
و باید بگم که استفاده از این روش(استفاده از Guid و نام برای دستیابی به comparer ها) در مقایسه با دلگیت و لامبدا 10000 برابر سریعتره.