نمایش نتایج 1 تا 7 از 7

نام تاپیک: Marshaling with C#‎

  1. #1

    Marshaling with C#‎

    سلام
    یه مقاله از سایت زیر دیدم درباره
    Marshaling

    http://www.codeproject.com/KB/cs/marshaling-2.aspx

    چی هست
    کاربردش چیه
    و...

    تشکر

  2. #2

    نقل قول: Marshaling with C#‎‎

    نقل قول نوشته شده توسط sg.programmer مشاهده تاپیک
    سلام Marshaling چی هست کاربردش چیه و...تشکر
    سلام.
    Marshaling یعنی گرفتن داده از محیطی که در اون قرار دارید و انتقال اون، به محیط خارجی. اما Marshaling توی .NET یعنی بردن داده ها به محیطی خارج از App Domain! بعنوان مثال وقتی داده ای رو از یک Application Domain به Application Domain دیگه ای منتقل می کنید، در واقع دارید عمل Marshaling رو انجام میدید. بعبارت دیگه وقتی داده ای رو از یک برنامه به برنامه دیگری در domain دیگه منتقل می کنید (خواه روی همون باشه، یا نه)، در واقع دارید اطلاعات رو Marshal می کنید.

    موفق باشید.

  3. #3

    نقل قول: Marshaling with C#‎‎‎

    نقل قول نوشته شده توسط mehdi.mousavi مشاهده تاپیک
    سلام. App Domain!

    موفق باشید.
    Application Domain

    باز تر می کنید بحث را و یه مثال ساده اراه کنید
    تشکر

  4. #4
    کاربر دائمی آواتار Saeed.Masoumi
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    نامعلوم
    پست
    539

    نقل قول: Marshaling with C#‎‎

    سلام فکر می کنم مثل استفاده از داده هایی که توسط توابع API ایجاد میشن باشه.
    چون بعضی از مواقع در زمانی که داریم از API استفاده می کنیم از کدی به شکل زیر استفاده کنیم:
    [DllImport(""), MarshalAs(System.Runtime.InteropServices.Unmanaged  Type.Bool)]

    آقای موسوی میشه راجع به این هم توضیح بدین؟

  5. #5
    کاربر دائمی آواتار AliRezaPro
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    PE Header
    پست
    1,054

    نقل قول: Marshaling with C#‎

    در تکمیل سخنان دوستان ، وقتی می خواهید اشیاء را از یک برنامه به برنامه ی دیگر هدایت کنید به آن مارشالینگ میگویند.همچنین یک شیء میتواند از یک برنامه در یک کامپیوتر به یک برنامه در یپ کامپیوتر دیگر منتقل شود.

  6. #6

    نقل قول: Marshaling with C#‎‎‎

    نقل قول نوشته شده توسط سعید معصومی مشاهده تاپیک
    سلام فکر می کنم مثل استفاده از داده هایی که توسط توابع API ایجاد میشن باشه. چون بعضی از مواقع در زمانی که داریم از API استفاده می کنیم از کدی به شکل زیر استفاده کنیم:

    [DllImport(""), MarshalAs(System.Runtime.InteropServices.Unmanaged  Type.Bool)]
    آقای موسوی میشه راجع به این هم توضیح بدین؟
    سلام.
    درسته. البته چیزی که شما نوشتید شبهه کد هستش... در واقع، شما با DllImport دارید متودی رو که خارج از Assembly فعلی هستش، declare می کنید. توی این declaration، شما میتونید دونه دونه formal parameter های تابع ( + مقدار بازگشتی) رو تعیین کنید که چطوری باید به کد Native، مارشال بشن. از کجا اینو میشه تعیین کرد؟

    برای فهمیدن این موضوع، باید بدونید که COM چی هستش و چطور COM Component ها طراحی میشن. البته من قصد ندارم در این مورد توضیح بدم، چون حوصله همه رو سر میبره این مطالب، اما بطور کلی بخوام بگم، COM یک استاندارد Binary هستش که امکان تولید Component های نرم افزاری رو بوجود میاره. (این بنظر من، قویترین تکنولوژی ای هستش که مایکروسافت تا امروز عرضه کرده). COM بر مبنای RPC ساخته شده و ... بگذریم. از اصل ماجرا دور شدم. میخواستم بگم هنگام تعریف Interface ها در C++‎، برنامه نویس این فرصت رو داره که دونه دونه پارامترها رو توی IDL مارک کنه و تعیین کنه که هر پارامتر چطوری باید روی خط مارشال بشه (برای Component های DCOM). هر پارامتر، هر چی که مارک شده باشه، شما هم موقع DllImport باید همونطور اونو مارک کنید تا InterOp برای نقل و انتقال داده مورد نظر بین دو محیط، دچار مشکل نشه.

    موفق باشید.

    پاورقی:

    • IDL زبانی برای تعریف Interface هاست که در اختیار برنامه نویسان C++‎/COM هستش و کامپایلر خودش رو داره.
    • RPC تکنولوژی قدرتمندی برای تولید و ساخت برنامه های Client/Server هستش.
    • DCOM، یعنی Distributed COM. همون COM ای هستش که در سطح شبکه توزیع شده باشه.
    • Interop Assembly هم .NET Assembly هایی هستن که نقش یک پل ارتباطی بین محیط .NET و Native رو فراهم میکنن.

  7. #7

    نقل قول: Marshaling with C#‎‎‎‎

    نقل قول نوشته شده توسط sg.programmer مشاهده تاپیک
    Application Domain
    باز تر می کنید بحث را و یه مثال ساده اراه کنید تشکر
    سلام.
    Process چه نقشی تو Windows داره؟ در واقع مرز اجرایی هر برنامه هستش، به نحوی که هر برنامه "فضای آدرسی" خودش رو داره و اجازه دسترسی مستقیم به "فضای آدرسی" برنامه دیگه ای رو نداره. این توضیح در مورد Process های Native (غیر .NET) صدق میکنه، اما توی .NET و CLR، مایکروسافت یک لایه جدا کننده دیگه هم به Process ها اضافه کرد و اسمش رو Application Domain یا بطور خلاصه، App Domain گذاشت.

    در واقع، حالا دیگه تو .NET، هر Process میتونه حاوی N تا Application Domain باشه و هر application domain، فضای آدرسی خودش رو داره، دسترسی به app domain های دیگه رو نداره. (مگه اینکه این اجازه صادر بشه) و ...

    این چه خوبی ای داره؟ یه خوبیش اینه که اگر یک app domain ای crash کنه، app domain های دیگه به کار خودشون ادامه میدن. شما می تونید یک app domain رو stop کنید، یا یکی دیگه رو راه بندازید بدون اینکه به hosting process صدمه ای برسه...

    اگر به این موضوع علاقمند هستید، لطفا برای اطلاعات بیشتر به MSDN و Google رجوع کنید.
    موفق باشید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •