# Native Code > برنامه نویسی در Delphi > برنامه نویسی در Delphi Prism > سوال: پروسه مهاجرت برنامه دلفی به دات نت

## peymanjon

با سلام...
دوستان من یک پروژه به زبان دلفی دارم که در Embarcadero® RAD Studio XE Version 15.0.3890.34076  اجرا می کنم ، الان می خواهم قسمت هایی از پروژه را به محیط دات نت ببرم که با ابزار های دات نت بتونم از ان ها  در پروژه های دیگر خودم که در محیط دات نت و اکثراً با زبان سی شارپ  هستن ارتباط بدم و استفاده کنم.
من مطالبی در مورد delphi prism دیدیم و فک می کنم اگه بتونم کد ها و package های برنامه خودمو به آن انتقال بدهم بتونم به ابزارهای دات نت برای توسعه نرم افزار خودم دسترسی داشته باشم. البته به علت اطلاعات کم من در زمینه دلفی شاید راه حل راحت تری برای مهاجرت من به دات نت باشه و یا حتی تبدیل کد های دلفی به C#‎ تا بتونم در زبان تخصصی خودم روی توسعه برنامم کار کنم پس اگه راه حل بهتری به ذهنتون می رسه لطفاً به من کمک کنید.
ممنون می شم اگه مرحله به مرحله به من بگید چجوری باید این پروسه را انجام دهم تا من بتونم در هر مرحله تحقیق کنم تا راهی که کمترین خدشه ای به کدهام وارد بشه که نیاز به بازنویسی داشته باشه را بدست بیاورم.لازم به ذکر است پروژه پیش رو من یک پروژه عظیم مالی اداری دولتی با کار 7 ساله یه تیم دلفی کار می باشد که من لازم دارم قسمت هایی از این پروژه را برای ارتباط بیشتر با دیگر محصولات که مبتنی بردات نت به .net  تبدیل کنم .
با تشکر .

پاورقی : لطفاً دوستانی که این کار را انجام داده اند و با مشکلات پیش رو من آشنایی دارند کمک کنند تا این تاپیک مرجع خوبی برای افراد دیگر باشه.

----------


## BORHAN TEC

سلام
فکر می کنم برای بیستمین باره که دارم این مورد را توضیح می دهم. شاید نیازی نباشه که برنامه خود را در Delphi Prism باز نویسی کنید. ابزارهای مختلفی هستند که به شما این امکان را میدهند که بتوانید برنامه های دلفی را با دات نت ترکیب کنید. این ابزارها عبارتند از: 

1- Atozed Cross talk
2- RemObjects Hydra
3- managed-vcl

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

----------


## peymanjon

ممنون ، بله من پست های شما را دیدم. نکته قابل توجه برای من اینه با سناریویی که من گفتم کدوم ابزار یا روش برای من مناسب تره؟
شما 3 تا برنامه معرفی کردید با کدومش کار کردید و نتیجه چطور بود؟ 



> شاید نیازی نباشه که برنامه خود را در Delphi Prism باز نویسی کنید.  ابزارهای مختلفی هستند که به شما این امکان را میدهند که بتوانید برنامه  های دلفی را با دات نت ترکیب کنید


آیا این ابزار ها جوابگو مشکل من می باشد؟ 
ممنون

----------


## BORHAN TEC

اول این را بگویم که من با مورد سوم هنوز کار نکرده ام. :ناراحت:  حقیقت امر اینه که هر کدام از این ابزارها قابلیتهای منحصر به فرد خودش را دارد و انتخاب یکی از آنها ساده نیست و به نیازمندی های شما بستگی داره. مثلاً برای استفاده از کلاسهای دات نت Cross Talk فوق العاده است و انجام کار واقعاً بدون دردسر است. برای برقراری ارتباط با پلاگینهای Hydra شما باید از مکانیزم Interface استفاده کنید که کمی دستتان بسته خواهد بود ولی به راحتی می توانید UI مربوط به دلفی را در دات نت به اشتراک بگذارید و برعکس. در مورد سوم شما به راحتی می توانید از کنترلهای دات نتی بر روی فرم های VCL استفاده کنید!

من مورد اول یعنی Cross Talk را در آخرین فیلم موجود در لینک زیر توضیح داده ام:
http://www.irstu.com/?p=8490

در مورد RemObjects Hydra هم در ویدئوی زیر توضیح داده ام:
http://www.irstu.com/?p=1748

در موارد ساده تر هم می توانید از مقاله زیر استفاده کنید:
https://barnamenevis.org/showthread.php?302371

در مورد Managed VCL هم که لینک توضیحاتش رو در پست قبلی قرار دادم.

----------


## peymanjon

من فیلم آموزشی شما را دیدم ، راستش اگه بخوام با Atozed Cross talk کار کنم فکر نمی کنم بتونم تمام پکیج های خودمو در برنامه سمت دلفی خودم بصورت dll در آورم و آن ها را در دات نت add کنم و استفاده کنم چون کلی دردسر داره مثلاً همونwidestring  که بجای pwidechar در آموزش استفاده کردید و گفتید برای استفاده در دات نت می باشد ، یا نمونه های مشابه که من اطلاع در مورد آن ها ندارم و زمان کافی برای کسب اطلاعات.شاید برای پروژه کوچک خوب بود ولی برای کار من نه.
در مورد RemObjects Hydra هم سخته که بحث کنم چون فیلم شما در مورد استفاده از plugin در خود دلفی بود نه در محیط دات نت و اگه برای دات نت هم مشابه همین مراحل باشه که بتوننم از plugin ساخته شده در دلفی استفاده کنم فکر نکم کار صحیحی باشه چون فکر می کنم بعداً در توسعه برنامه به مشکلات زیادی برخورد کنم.
من دنبال برنامه یا ابزاری بودم که بتونم به راحتی برنامه دلفی خودموم در دات نت open project کنم و خودش کارهای convert مورد نیاز را انجام دهد نه اینکه من تک تک پکیج های خودمو به dll تبدیل کنم راستش یکمی ناامید شدم از این روش.آیا شما راه حل دیگه اید دارید که جلو پای من بگذارید؟

----------


## BORHAN TEC

قبول دارم که همیشه ایجاد سازگاری با زبانها و فریم ورکهای دیگه کار بسیار دشواری هست ولی کلاً باید دلیل موجهی داشته باشید که دلفی و دات نت را ترکیب کنید. این مسئله برای من روشن نیست که چرا می خواهید این کار را انجام دهید؟ مگر مورد خاصی وجود دارد که با دلفی نمی توانید آنرا حل کنید. این ترکیب بدون دلیل موجه یعنی کم شدن سرعت توسعه پروژه و در طولانی مدت یعنی نابودی نرم افزار! همیشه بهترین کار اینه که برای انجام یک پروژه یک زبان اصلی در نظر گرفته شود و در مواقعی که واقعاً لازم بود از زبان کمکی دیگری استفاده شود. به هر حال این مسائل باید کاملاً روشن باشد تا بتوان راه حل بهتری را مطرح کرد.



> در مورد RemObjects Hydra هم سخته که بحث کنم چون فیلم شما در مورد استفاده از plugin در خود دلفی بود نه در محیط دات نت و اگه برای دات نت هم مشابه همین مراحل باشه که بتوننم از plugin ساخته شده در دلفی استفاده کنم فکر نکم کار صحیحی باشه چون فکر می کنم بعداً در توسعه برنامه به مشکلات زیادی برخورد کنم.


از نظر من کاری که از همان ابتدا اصولی انجام شده باشد بعید است که بعداً با مشکلات زیادی همراه شود و اگر هم مشکلاتی پیش بیاید جزئی هستند و به راحتی می توان آنها را حل کرد. در هر صورت اگر می خواهید که با ترکیب دات نت و دلفی برنامه را توسعه دهید خیلی باید اصولی و حساب شده معماری نرم افزارتان را انجام دهید. در کل انجام این کار در عمل ساده نیست و به خلاقیت های مختلفی در طراحی نرم افزار نیاز دارد.



> من دنبال برنامه یا ابزاری بودم که بتونم به راحتی برنامه دلفی خودموم در دات نت open project کنم و خودش کارهای convert مورد نیاز را انجام دهد نه اینکه من تک تک پکیج های خودمو به dll تبدیل کنم راستش یکمی ناامید شدم از این روش.


چنین ابزاری وجود ندارد و تولید آن هم در حال حاضر تقریباً غیر ممکن است چرا که فریم ورک vcl و .net بسیار متفاوتند.

----------


## hojat_y

سلام
یه برنامه به اسم reflector هست که میتونه کدهارو تبدیل کنه از delphi به C#‎ هم داره یه امتحانی بکن

----------

