سلام ؛

من قبلا" مطلبی در مورد جاوا ، J2EE و قابلیتها و ویژگی ها و چیستی و چگونگی کاربردهای مبتنی بر اونها نوشتم و لازم میدونم چنین کاری رو برای دات نت هم انجام بدم . هر چند اهالی دات نت در این سایت خیلی فعال هستند و در مورد دات نت بطور جدی بارها حرف زده شده و خودم منم در مورد کم مطلب ننوشتم اما سعی میکنم مطلب حاضر Template ای مطابق مطلب قبلی در باب جاوا داشته باشه تا بتونه بیشتر مفید واقع بشه و برای ارجاعات آینده کاربردی باشه . بعد از اینکه این مطلب تموم شد در مورد بعضی از مطالب مطرح شده توسط رفقا هم چند خطی مینویسم :)

مطلب اول رو به این قسمتها تقسیم میکنم :

  • - دات نت دقیقا" چیه
    - نقش دات نت در توسعهء نرم افزار
    - دات نت و سایر فناوری ها
    - ابزارهای مایکروسافت برای توسعهء دات نت
    - سایر ابزارها


-- دات نت دقیقا چیه ؟

تعریف اغراق آمیز و با مزهء MSDN در مورد دات نت میگه :


<span dir=ltr>

  • The .NET Framework is an integral Windows component that supports building and running the next generation of applications and XML Web services. The .NET Framework is designed to fulfill the following objectives:

    To provide a consistent object-oriented programming environment whether object code is stored and executed locally, executed locally but Internet-distributed, or executed remotely.
    To provide a code-execution environment that minimizes software deployment and versioning conflicts.
    To provide a code-execution environment that promotes safe execution of code, including code created by an unknown or semi-trusted third party.
    To provide a code-execution environment that eliminates the performance problems of scripted or interpreted environments.
    To make the developer experience consistent across widely varying types of applications, such as Windows-based applications and Web-based applications.
    To build all communication on industry standards to ensure that code based on the .NET Framework can integrate with any other code.


</span>

پس جالبه بدونید مایکروسافت ، دات نت رو به عنوان یک عنصر " مبتنی بر ویندوز" و " ویندوز محور" معرفی میکنه و این یعنی صراحتا" مایکروسافت وجود دات نت رو جائی در جائی به غیر از ویندوز به رسمیت نمیشناسه ( و طبیعیه که من و تو و امثال ما اهمیت چندانی نمیدیم که مایکروسافت دقیقا چه چیزهائی رو به رسمیت میشناسه یا نمیشناسه ، چون بیزینس ما و مایکروسافت نقاط مشترک چندانی نداره و دقیقا" به همین دلیل موجوداتی مثل Mono متولد شدن :) )

دات نت یک بستر و پایه است برای تولید نرم افزارهای کاربردی سطح بالا ، برنامه های مبتنی بر شبکه و اینترنت و سرویسهائی که به موارد مذکور مربوط هستند . دات نت دقیقا تشکیل شده از مجموعهء وسیعی از Wrapper که Win32 API رو محصور میکنند ، یک کتابخانهء کلاس نسبتا" کامل برای تولید نرم افزار ، مترجم کد به باینری ، و یک استاندارد برای تولید مترجم .

سوال بی موقع : خوب اینطوری که من میبینم اینجا چیز جدید وجود نداره ، درسته ؟ تک تک اجزاء قبلا" در تکنولوژی های مختلف وجود داشتن و کل این مجموعه هم سالهاست که تحت عنوان جاوا داره کار میکنه ، من درست فکر میکنم یا نفهمم و دات نت کارهائی که تصور میکنن مایکروسافت کار عجیب و بزرگی انجام داده درست میگن ؟

جواب : تو کاملا" درست فکر میکنی :) اینجا هیچ چیز جدیدی وجود نداره . حتی در همین روند تقلیدی الا یک مورد خاص ، هیچ خلاقیتی وجود نداره ( دلائل رو کمی پائین تر خواهید دید ) . اما باید به این نکته توجه بشه که ما همیشه به چیزهای جدید نیاز نداریم :) ما اکثرا" به یه ابزار خوب و پاسخگو برای انجام وظایفمون نیاز داریم و دات نت یه ابزار خوب و پاسخگوست که میشه باهاش وظایف عمومی برنامه نویسی رو انجام داد .

من به شخصه معتقدم مایکروسافت قبل از دات نت حداقل در حوزهء تولید نرم افزار حرف خاصی برای گفتن نداشت :) ویژوال استودیو تشکیل شده بود از این عناصر : ویژوال بیسیک - ویژال سی - ویژوال فاکس پرو - ویژوال اینتر دو - ویژوال دی بیس . اصلا" نمیخام وقتم رو تلف کنم و در مورد مسخرگی ویژوال فاکس و ویژوال بیسیک حرف بزنم . ویژوال اینتر دو برای توسعهء مبتنی بر وب ابزار خوبی بود اما اصولا" فرق چندانی با ابزارهای مشابه نداشت . تنها عنصر موفق مخلوق مایکروسافت ویژوال سی بود به این دلائل :

  • کامپایلر قدرتمند
    MFC
    ATL


که صد البته چه در مورد کامپایلر ، چه در مورد کتابخانهء کلاس و چه در مورد Template رقبای موفقی مثل دلفی حتی گاهی باعث فراموشی ویژوال سی میشدند اما بهر حال چون این ابزار به اندازهء کافی خوب بود ( و هست ) و مهمتر اینکه توزیع کننده / توسعه دهنده اش مایکروسافت بود گسترش زیادی پیدا کرد و بسیاری از بزرگترین و موفقترین نرم افزارها با ویژوال سی مایکروسافت نوشته شده اند . :) اما دات نت باعث شد مایکروسافت هم " مثل چند رقیب دیگه" در دنیای توسعه نرم افزار "امروز" دنیا حرفی برای گفتن داشته باشه . ( جسارتا" : کسانیکه برنامه های درپیت و در حد رده سنی الف با ویژوال بیسیک نوشته اند یا کسانیکه فقط اسم ویژوال سی را شنیده اند و از MFC دم میزنند ، یقینا" این عرایض رو متوجه نمیشن :) آدم باید درگیر کد نویسی ، پروژه های بزرگ ، هزینهء بسیار ، اهمیت بالای حجم کد تولید شده و ... شده باشه تا این حقیقت رو خوب درک کنه . )

یادمه اولین توصیفی که در مورد دات نت توی یه چت خوندم این بود : i like it 'cuz it is quick ! :) دات نت یه محیط واقعی RAD است ( Rapid application Development ) . اهمیت RAD در صنعت نرم افزار فوق العاده بالاست . ( یادمه سر این مورد بحث نسبتا" مفصلی با کامبیز داشتیم ) اهمیت RAD حتی از توانائی کامپایلر یا سیستم عاملهای حمایت شده و ... بیشتره . صنعت نرم افزار دارای بی شمار مشتری است که هر روز و هر روز نیاز به نرم افزار مختلف و کوچک و خاص منظوری دارن که در یک فرصت کوتاه ایجاد بشن و یک کار خاص رو انجام بدن و بعد فوت کنن :) شاید چنین مفهومی در ایران خیلی ملموس نباشه اما دنیای پیشروی امروز به نرم افزار نگاهی مثل ساختمون ، میز ، صندلی ، کارمند و ... داره . یه چیز جدی که باید در یک لحظهء خاص و برای هدفی خاص در دسترس باشه و کاملا" فرمان پذیر . RAD به تحقق این نیاز کمک زیادی میکنه . همین حالا مدیر شرکت تصمیم گرفته از تعداد زیادی سند الکترونیکی موجود یک گزارش خاص منظور بگیره و دادهء خاصی رو ازشون استخراج کنه و به ترتیب خاصی مرتب کنه . دپارتمان نرم افزار سازمان باید بتونه بالافاصله یه نرم افزار کوچولو و جمع و جور رو تحویل مدیر بده . جستجوی تعداد زیادی سند و اجاد یک بانک اطلاعاتی ازشون و جستجو در اون بانک و مرتیب کردن داده ای خاص در یک محیطی مثل ویژوال سی درست مثل یک کابوس میمونه ! :roll: در حالیکه محیط RAD ای مثل دلفی با یک برنامه نویس متوسط میتونه در کمتر از دو ساعت این برنامه رو تحویل بده :) نقش RAD متاسفانه در بحثهای اینچنین خیلی کم مورد توجه قرار میگیره .

حالا مایکروسافت یک محیط RAD داره که توی این محیط ضمن اینکه میشه جزئیات سیستم رو تحت کنترل درآورد ، میشه وظایف عمومی رو به سرعت انجام داد ، از توسعه برای ویندوز گرفته تا توسعه برای وب :) دات نت بر فراز غولهائی مثل VCL ، QT و JDK متولد شد ، از تجربیات مفید اونها استفاده کرد و تمام تلاشش رو کرد برای کسانیکه به هر دلیلی از مایکروسافت و ابزارهاش پیروی میکنن توانائی بیشتر در کنار تلاش و زحمت کمتر رو ایجاد کنه . پس دات نت "جدید" نیست ، "خلاقانه" هم نیست ، امکان و ویژگی محیر العقولی هم نداره . دات نت صرفا" یه ابزار خوبه ، در کنار سایر ابزارهای خوب :) و جلوتر از ابزارهای بد ، که خیلی شون ، سری قبلی محصولات مایکروسافت هستند :wink:

-- نقش دات نت در توسعهء نرم افزار

بلا شک دات نت موفقیت قابل توجهی کسب کرده و هر کسی هم محبوبیت دات نت رو انکار کنه نابینائی خودش رو به اثبات رسونده . اما من تصور میکنم محصولات مایکروسافت به دلیل اینکه خوب هستند موفق نمیشن ( اینجا من از عبارت موفقیت به معنای کسب مزیت اقتصادی قابل توجه استفاده کردم :) ) بلکه کاریزمای خاص مایکروسافت که بخشیش محصول "ویندوز" و بخشی دیگر محصول توانائی قابل توجه اقتصادی- تبلیغاتی است میدونم . این اعتقاد باعث نمیشه من فکر کنم دات نت موجود بیخودی است ، خیر .

دات نت صرفا" یه ابزار خوبه ، در کنار سایر ابزارهای خوب :) و جلوتر از ابزارهای بد ، که خیلی شون ، سری قبلی محصولات مایکروسافت هستند
اما همین اعتقاده که باعث میشه فکر نکنم که عده ای موجود بی نهایت باهوش و مدبر در مرکز فرماندهی مایکروسافت نشسته اند و طی یک استراتژی بلند مدت و مبتنی بر برنامه دارن اهداف بلند مدت مایکروسافت رو محقق میکنند . :) حرکت جاهلانهء مایکروسافت در طراحی ساختار "دات نت فریم ورک" باعث میشه شما هر از چند گاهی با یه نسخهء جدید دات نت مواجه بشید ، به عنوان کاربر ، و با یه نسخهء جدید SDK ، به عنوان توسعه گر . هر از چند گاهی با یه کادر مکالمه ای حاوی یه پیام خطا مواجه بشید ، به این مضمون که برنامهء مورد تقاضای شما با نسخهء فریمورک نصب شده سازگار نیست ، به عنوان کاربر ، و با کامپوننتهائی مواجه بشید که هر کدام برای نسخهء خاصی از فریمورک نوشته شده اند ، به عنوان توسعه گر و قس علی هذا . من حتی تصور نمیکنم سناریوی بلند مدت و مدونی برای رسیده به "آنجائیکه دات نت قرار است به سمت آن برود" وجود داشته باشه . اینجا بحث رفع باگ یا افزودن قابلیت نیست ، که این رفتار صحیح و پسندیده ایه اگر منطقی اتفاق بیفته ، ( رجوع کنید به JDK ) بلکه اینجا اصولا" اینفرااستراکچر فریمورک تغییر میکنه . این بستر در حال تغییر به شدن به ویندوز وابسته است ، ویندوز هم در حال تحوله ، که محصول این تغییرات چیزی نخواهد شد به غیر از یک محیط ناسازگار که ضمن وابستگی غیر قابل توصیف به ویندوز ( این یکی از اهداف استراتژیک مایکروسافته ) توسعه گران رو به ارتقاء دائمی نرم افزارها ، ویندوز ، سخت افزار و ... هدایت میکنه که نتیجه اش چیز جز سرایز شدن میلیونها دلار به جیب "حضرات" نیست . لازمه توضیح بدم که دقیقا" همین سیاست زیرکانه مایکروسافت رو به چنین غولی مبدل کرده . وقتی ویندوز 3.1 توزیع شد من با یونیکس SVR4 رو دیده بودم و بخوبی با موجودی بنام X آشنا بودم . قبل از اون اپل هم موفقیت بزرگی کسب کرده بود و ...

دات نت بلاشک نقش مؤثری در توسعهء نرم افزار خواهد داشت چون هم ابزار خوبی است ، هم محصول بزرگترین غول نرم افزاری دنیاست ، هم با ویندوز ارتباط خوبی داره ، هم سهل الاستفاده است . :)

-- دات نت و سایر فناوری ها

دات نت بر فراز غولهائی مثل VCL ، QT و JDK متولد شد ، از تجربیات مفید اونها استفاده کرد و تمام تلاشش رو کرد برای کسانیکه به هر دلیلی از مایکروسافت و ابزارهاش پیروی میکنن توانائی بیشتر در کنار تلاش و زحمت کمتر رو ایجاد کنه
CLR از دنیای جاوا و FrameWork از دنیای VCL و QT آموزه های زیادی دارن . آندره هلسبرگ که اولین نگارش توربو پاسکال رو نوشت و مدتها در راس هرم توسعهء VCL بود گرفته تا خرید محصولات آزمایشگاههای تحقیقاتی بورلند توسط مایکروسافت تا توسعه بی حد و حصر جاوا و مشاهدهء عوامل موفقیتش و ... همگی نقشهای مهمی در سناریوی موفقیت دات نت ایفا میکنن :) و البته نباید خود تیم توسعهء نرم افزار مایکروسافت رو با این دیدگاه که "تولید کنندهء ویندوز" هم هستند ، در این موفقیت نا دیده گرفت . و در کنار همهء این اما ها نباید این امای آخر رو نادید گرفت (!) : اما با همهء این حرفها توسعه گران به همهء بخشهای هدیه ای که مایکروسافت به اونها داده نیاز ندارن در حالیکه باید برای استفاده از بخش کوچکیش هزینه های مادی و غیر مادی همهء اون رو بپردازن . توسعه گران لینوکس از QT براحتی در محیط لینوکس استفاده میکنن و بی شمار برنامهء کاربردی با اون نوشتن که با کمترین هزینه ( و حتی خیلی اوقات مجانی ) اون رو تولید کردن . برنامه نویسان دلفی یا سی بیلدر سالهاست دارن از VCL استفاده میکنن ( که دات نت کارها تازه دارن طعمش رو میچشن ) و ... اما توسعه گرانی که سرنوشت فعالیتهای خودشون رو به نقشه های مایکروسافت پیوند زدند باید دات نت رو با ران تایم حجیم و سرعت بسیار کند و توزیع دشوار و قیمت فوق العاده بالا و پیوستگی جدی با ویندوز تحمل کنند :) در واقع دات نتی که به "خوب" بودنش ایمان دارم ، فضای نه چندان جدید ی برای توسعه گرانش ایجاد کرده که اونها ضمن رسیدن به "هیچ امکان جدید"ی باید هزینهء بیشتری نسبت به راه حلهای قبلی بپردازن . این دقیقا" همون مساله ایه که من بارها سعی کردم توجه توسعه گران دات نت رو بهش جلب کنم اما اغلب عینک آفتابی تعصب ( یا عدم وجود دانش در مورد سایر محیطها ) باعث میشه این حقیقت چندان که باید مورد توجه قرار نگیره . :)

-- ابزارهای مایکروسافت برای توسعهء دات نت

بصورت پیشفرضبسته های VB .NET و #C و Managed C و #J توسط مایکروسافت توزیع میشن . اگر هدف " توسعهء مبتنی بر دات نت" باشه هیچکدام از این محیطها با هم متفاوت نیستند . همگی نه تنها به Intermediate Language ترجمه میشن ، حتی برای ساختار زبان هم از یک Design Pattern استفاده میکنن . "همهء" این زبانها محصولاتی جدید هستند ، هر چند که اگر توسعه گری تجربه و آشنائی با دلفی یا جاوا داشته باشه محیط سی شارپ و اگر تجربهء جاوا داشته باشه محیط جی شارپ رو آشنا خواهد دید . :) مبدلهای مختلفی هم برای تبدیل کدهای نوشته شده به یک زبان دیگر وجود داره ، چه IL رو داشته باشید چه سورس کد و در هر لحظه که بخواهید میتونید زبان برنامه رو بطور کل تغییر بدید .

اگر هدف توسعهء دات نت در کنار سایر تکنولوژی ها باشه باید سی شارپ و VB .NET رو فراموش کرد . Managed C میتونه بصورت همزمان از کدهای مدیریت نشده و دات نت استفاده کنه . این واقعا" مهمه :) میلیونها میلیون خط کد نوشته شده برای مقاصد مختلف وجود داره که "همین حالا" تبدیل کردن اونها به "کدهای مدیریت شده" غیر ممکنه ، دات نت هم که فقط مبتنی بر ویندوزه ، پس چه خوبه بشه از این کدهای مدیریت نشده در کنار قدرت کتابخانهء کلاس دات نت استفاده کرد . اینجا Managed C خودش رو نشون میده و مطمئنا" یکی از ابزارهای مهم محیط توسعهء دات نت است چرا که همین حالا برنامه نویسان C ( و نه سی شارپ تازه متولد شده ) از سایر توسعه گران بیشتر هستند و منطقا" یک برنامه نویس C در محیطهای جدید هم اول به دنبال دوست خودش میگرده . من "برنامه نویس" نیستم و دانش نسبتا" خوبی در مورد Managed C و #C دارم اما "اول" از همه در محیط دات نت به سراغ Managed C رفتم و به دلائل شخصی بیشتر از بقیه بهش اهمیت میدم :) #J هم میتونه کمک کنه یک برنامهء ویندوز یا وب را با ترکیبی از کدهای مدیریت شدهء مبتنی بر ویندوز و JDK جاوا تولید کنید . یعنی همانطور که Managed C امکان ترکیب دات نت و کدهای معمولی C رو میده ، جی شارپ امکان ترکیب دات نت و JDK رو میده . البته فقط تا JDK 1.3 نه بیشتر :(

نهایتا" اگر هدف توسعه نرم افزار نا مربوط به دات نت باشه باز هم Managed C امکانات زیادی در اختیارتون میزاره . میتونید کماکان از MFC استفاده کنید و برای توسعه کاربردهای مبتنی بر COM همچنان ATL وجود داره و هر دو با نسخه های جدید و بهینه تر رو صحنه ظاهر شدن ، برای توسعهء سرویسهای وب ( نا مربوط به دات نت ) اینجا ATL Server و افزونه های Managed Extentions برای Managed C وجود داره . اگر هدف تولید کاربردهای مبتنی بر وب باشه باز هم ISAPI و ATL Server ها موجود هستند . ( بخش قابل توجهی از سایت خود مایکروسافت خصوصا" بخش دات نت پاسپورت با Managed C نوشته شده ، بصورت ATL Server . احتمالا" موقع ثبت نام برا یک پاسپورت دات نت دیده اید که فایلهائی با فرمت srf. نوع صفحات رو تشکیل میدن . به این فایلها اصطلاحا" استنسیل گفته میشه . این استنسیلها روی ATL Server ها قرار میگیرن و در واقع PlaceHolder ای برای تگهای HTML هستند . ( دلیل اینکه چرا وقتی پای امنیت فوق العاده بالا به میون میاد حتی پای خود مایکروسافت هم روی دات نت میلرزه و ... مفصله که اگر کسی علاقه داشت بعدا" در موردش حرف میزنیم :) )

نتیجتا" شما هر هدفی در حوزهء "ویندوز - وب" داشته باشید چه بصورت مدیریت شده چه مدیریت نشده ، همگی توسط ابزارهای مایکروسافت قابل پاسخگوئی هستند . پس نتیجه میگیریم مایکروسافت هیچ نوع کاربردی رو - بجز ویژوال بیسیک 6 - منسوخ نکرده و خودش هم تلویحا" یا تصریحا" پا فشاری خاصی روی هیچکدام نداره ، خودش هم از ترکیبی از همهء اینها برای توسعهء محیطهای شخصی اش استفاده میکنه :) ( همین حالا اگر زمان اجراهای خاص #J نباشه ، محیط دات نت 2003 اجرا نمیشه ! منظورم DevEnv هست ها ! )

آنچه که گذشت :

  • - دات نت دقیقا" چیه
    - نقش دات نت در توسعهء نرم افزار
    - دات نت و سایر فناوری ها
    - ابزارهای مایکروسافت برای توسعهء دات نت


و بخش آخر این مبحث :

-- سایر ابزارها

طبیعی است که انتخاب دات نت از طرف مایکروسافت به عنوان بستری برای آیندهء توسعه نرم افزار تمام تولید کنندگان ابزارهای برنامه نویسی تحت ویندوز رو ترغیب به تولید ابزارهائی مبتنی بر بستر دات نت کنه :) خوب تا دیروز هم همهء این محیطها روی Win32 API کار میکردند که اون هم محصول مایکروسافت بود و هست . به علت کثرت محیطهای مبتنی بر دات نت و مباحث مطرح شده در این تاپیک من فقط در مورد محصولات Inprise ( :wink: ) صحبت میکنم . بورلند هم به عادت مالوف دو محصول جدید مبتنی بر دات نت یعنی C Sharp builder و Delphi 8 for .NET رو توسعه داده و توزیع کرده . وضعیت این دو محصول دقیقا" چیه؟ و با وجود محیطهای مایکروسافتی توجیه لزوم وجود / کاربرد این محصولات منطقی است ؟ برای جواب دادن به این سوال باید اول از همه ببنیم این محیطها دقیقا" چی هستند ، موافقید ؟

سوال : دلفی 8 برای دات نت دقیقا" چیه ؟ چه ویژگیها و توانائی هائی داره ؟

جواب :

( به دقت مطالعه کنید ، اهمیت داره )

<span dir=ltr>

  • Delphi™ language RAD development for the Microsoft® .NET Framework, including
    VCL Forms, Windows® Forms, ASP.NET, Web Forms, Web Services, ADO.NET, and
    more


    Type-safe, hardware-independent, and fully object-oriented
    PE Verifiable CIL code generation
    Imports symbols directly from .NET assemblies; no header file translations or external
    declarations needed

    Unicode® strings
    Class variables/class static data
    Operator overloading
    Interoperability support through COM+ 1.0 and .NET Framework services with typelibrary-
    based access

    Program more simply, safely, and productively with garbage collection, structured
    exception handling, and type safety

    Records with methods (value types)
    Support for unsafe mode, for using pointers to manipulate memory that is not under
    the control of the Garbage Collector

    Nested types
    Custom attributes to mark types with information that can be recovered at runtime
    Compatibile with existing Delphi source code
    Supports pointer operations such as PChar in special unsafe code blocks
    Unmanaged C style library DLL export option for use with non .NET code without
    COM interop! –Statically link or getproc with Delphi 7 or prior!
    Commercial development license for professional software sales

    Foundation Class Library (FCL) – More than 4500 classes that encapsulate rich
    functionality such as XML, data access, file upload, regular expressions, image
    generation, performance monitoring and logging, transactions, message queuing,
    SMTP mail, and much more!


    Common Language Runtime (CLR) – Improve application reliability, security,
    deployment, and performance, and run applications on high-volume, low-cost
    hardware

    XML SOAP Web Services – Built on XML and incorporates the latest Web Services
    standards to facilitate cross-platform integration

    .NET Framework remoting – simplifies working with distributed .NET objects

    Unified programming model – Leverage the same skills and technologies for both
    Web and desktop Windows®-based applications, including XML Web Services as well
    as Web and smart-client applications for devices, PCs, and servers

    Common Language Infrastructure (CLI) – Applications written in different
    programming languages integrate deeply with each other, allowing current
    development skills to carry forward without retraining

    Designer Integration – .NET Framework features were designed specifically to
    improve the quality of the tools that use them, such as integrated debugging and
    profiling. Delphi is built to take advantage of the .NET Framework

    Component Based Design – Write less code with the .NET Framework, which uses a
    highly componentized, plumbing-free design that enables developers to focus on
    writing business logic

    Direct CLR class access; no need to translate header files

    Employ Windows® Application Services with Windows Server™ 2003 and Windows®
    2000 Server. For example, .NET Framework-based transactions are COM+
    transactions, and all the new COM+ capabilities in Windows Server 2003 can be used
    from the .NET Framework

    XCOPY deployment – With .NET Framework metadata technology, installing
    applications is as easy as copying them into a directory

    Side-by-side execution for strong-binding to help eliminate potential versioning
    conflicts

    No-Touch Deployment – Smart-client applications can be deployed to client desktops
    through remote Web servers in the same manner as Web applications

    Managed Code Execution – With memory, threads, and processes managed by the
    .NET Framework, memory leaks, overwrites, and buffer overflows are eliminated

    Role-based security – provides a unified model for authorization and authentication of
    principals based on identity and roles

    ASP.NET Web Security supports HTTP authentication for Basic, Digest, NTLM,
    Kerberos, and SSL/TLS client certificates as well as Microsoft® Passport
    authentication and Forms-based (Cookie) authentication

    Evidence-based security applies and enforces different levels of trust to all running
    code

    VCL for the .NET Framework – managed Visual components for rapid application
    development

    Standard, Data Controls, Dialogs, Internet Direct (Indy), Additional, Win32,® System,
    Win 3.1, Data Access, and BDE component categories


    Borland® dbExpress, and Borland® DataSnap™ (client) component categories

    VCL Visual Form Inheritance and Form linking to reduce coding and simplify
    maintenance

    Object-oriented, fully extensible and reusable component and application architecture
    in VCL for the Microsoft .NET Framework


    Object Repository for storing and reusing forms, Data Modules, and experts

    TDateTime extensions accelerate your date and time calculations

    SubComponent classes combine commonly mixed components for greater utility and
    speed the creation of user interfaces

    Visual Component creation

    Support for Advanced Custom Draw functions for increased control over the Windows
    API

    Designed for seamless integration of the Unified Modeling Language™ (UML™)
    modeling environment, development, and runtime phases with Enterprise Core
    Objects (ECO™) for the Microsoft .NET Framework


    With the Borland® LiveSource™ model designer, visually create and edit your UML
    class diagrams, powered by Borland® Together® technology

    Integrated XMI support is engineered to provide seamless import of UML models to
    ECO from popular third-party modeling tools such as Borland Together and other
    XMI-compliant tools

    Delphi code visualization powered by Borland Together technology provides a live
    UML Model View of your Delphi code


    Instant model-powered .NET enterprise architecture and automatic object-level
    capabilities

    ECO object-relational persistence mapper for seamless model-powered mapping of
    cached objects to SQL database and XML files

    ECO Space Designer for configuring UML packages, verifying models, and
    generating and evolving the database

    Borland Optimizeit™ Profiler for the Microsoft .NET Framework – integrated memory,
    CPU, and CLR profiling

    High-level performance overview to understand, in real time, whether a performance
    issue is related to CPU, memory, or both

    Powerful yet easier-to-use WYSIWYG HTML/WebForms designer to enable rapidly
    building rich ASP.NET Web applications

    Develop ASP.NET User Controls using the Visual Designer

    Automatically detect any changes, dynamically compile the files if needed, and store
    the compiled results to reuse for subsequent requests

    DataSnap (formerly MIDAS) client and ADO.NET connector

    Borland® dbExpress data access architecture includes support for MSSQL 2000,
    Oracle 9i, and SQL Anywhere® 9


    InterBase® Express™ (IBX) applications, based on the custom data access Delphi
    component architectures, provide access to advanced InterBase features and offer
    the highest-performance component interface for InterBase

    Two-way visual UML class designers for ECO applications

    State-of-the-art IDE with a fully integrated Code Editor and debugger, view history,
    easier-to-understand error messages, and color syntax highlighting

    Syntax highlighting for Delphi, C#‎, C/C++‎, Visual Basic .NET, HTML, ASPX, and
    XML, SQL, Javascript,™ and IDL

    Modules/Runtime scope view provides a global runtime view of the namespaces and
    classes available to your program, including a list of source files used to build your
    programs and assemblie

    Create ASP.NET XML Web Services and add XML Web Services running on other
    machines easier

</span>

اون حتما" مطالعه کردید در وهلهء اول این حقیقت رو به ذهن متبادر میکنه که دلفی برای دات نت همانطور که دلفی 7 به طور کامل تولید و توسعه برای Win32 رو حمایت میکنه ، به همان خوبی ، تولید و توسعه برای دات نت رو حمایت میکنه و در وهلهء بعد این حقیقت رو پر رنگتر میکنه که برنامه نویسان ویژوال بیسیک باکدها شون خداحافظی میکنند و برنامه نویسان ویژوال سی یا باید مسیر MFC را ادامه دهند یا دوباره برای دات نت کدبنویسند و اینجا " فقط" ( تاکید میکنم "فقط" ) برنامه نویسان دلفی هستند که بخش قابل توجهی از برنامه هایشان بدون تغییر و بخشی دیگر با تغییرات خیلی کم براحتی روی دات نت هم ترجمه میشن و کار میکنن :) این "خیلی خیلی" اهمیت داره :) و در مرحلهء آخر نگاهی اجمالی به قابلیتهای دلفی برای دات نت مشخص میکنه که دارای توانائی هائی است که محیطهای مایکروسافتی ازش بی بهره هستند . خصوصا" Indy که برای تولید برنامه های شبکه ای بی نظیره و برنامه نویسان سی شارپ حتی خواب چنین تولید سریع و راحتی را نمیتوانند ببینند یا ECO که رسما" برنامه نویسی با دلفی را به "نقاشی" تبدیل کرده :) در مورد ECO قبلا" مطلب نوشتم توی بخش مقالات حتما" بخونیدش و ...

نتیجه : دلفی برای دات نت فقط " یه زبون مبتنی بر دات نته دیگه " نیست ، بلکه به جرات قدرتمندترین محیط برای توسعه مبتنی بر دات نته و البته تنها محیطی است که توسعه گران قدیمی ش هنوز هم میتونن از کدهاشون نگهداری کنن :)

در مورد سی شارپ بیلدر هم وضع خیلی متفاوت نیست . اکثریت امکانات موجود در دلفی برای دات نت در سی شارپ بیلدر هم موجودند اما سی شارپ بیلدر فلسفهء دیگری رو دنبال میکنه :) یعنی هر چند کسانیکه با محصولات بورلند اجین هستند و "ادبیات بورلند" رو ترجیح میدن ممکنه متمایل به این محیط باشن ، اگر بخوان با سی شارپ برنامه بنویسن اما هدف سی شارپ بیلدر چیز دیگری است . ضمن اینکه حتما" ویژگیهاش رو مطالعه میکنید ، به مطلبی که مدتها قبل در این باره در بخش سی شارپ نوشتم توجه کنید :


مزیت ها و برتری های بزرگ سی شارپ بیلدر باعث میشه افرادی که اهل تدقیق در امور هستند بهش مثبت نگاه کنند .

1. سیاست بورلند برای ایجاد پلی بین دات نت و J2EE ( معروف به Borland Bridge ) : یکی از اهداف بورلند در تولید ابزارهای تولید نرم افزار ایجاد قابلیتهای ارتباطی غیر انحصاری بین تکنولوژی ها و بسترهای متفاوت است .سی شارپ بیلدر با استفاده از نسخه اولیه تکنولوژی بورلند یعنی Janeva تنها ابزاری است که میتونه بین زمان اجراهای دات نت و جاوا و حتی روشهای اتصالی مثل CORBA تماس ترنسپرنت برقرار کنه !

2. تولید و توسعه گسترده و بهینه : یکی از مشخصات سی شارپ بیلدر هماهنگی اش با ابزارهای قدرتمند بورلند برای مدیریت تولید تیمی - تولید مبتنی بر مدل - تولید مبتنی بر نیازهای و پذیرنده تغییرات حین پیاده سازی و ... . وجود یکدستی بین سی شارپ بیلدر و کالیبر آر ام و استار تیم و بورلند پراجکت پورتال و از همه مهمتر بورلند توگدر و اتصال رویه مدار همزمان ( ریل تایم پروسیجرال ) توگدر و سی شارپ بیدلر برای توسعه کد بدون نگارش متن نرم افزار همزمان با تغییرات مدل نرم افزار حین طراحی پروژه ! ( این مفاهیم رو فقط افرادی که به واقع در پروژه های سازمانی و بزرگ شرکت داشته اند و خصوصا معماران نرم افزار بخوبی درک میکنند . اگر نیت نوشتن هلو ورلد باشه بین کوئیک بیسیک و سی شارپ چه فرقی هست ؟ )

3. ECO ( در موردش در بخش دلفی دات نت مطلب نوشته ام لزومی به تکرار نیست )

4. زمان اجرای ECO : توسط این بستر میتونی در زمان اجرا مدل نرم افزار رو تغییر بدی ! مدل توسط بستر ECO در زمان اجرا به کد مناسب تبدیل میشه . این طلیعه توسعه هوشمند متن نرم افزاره و البته قرار نیست همه ، خصوصا" با توجه به جوان بودن سی شارپ بیلدر ، این رو درک کنند .

5. بهره مندی از LiveTeam به عنوان یک ابسترکشن لی یر برای ارتباط با ابزارهای کنترل سورس مختلف .

6. بهره مندی از borland OptimizIT چه بصورت یک ابزار خارجی چه بصورت شفاف و حین تولید نرم افزار برای بهینه سازی کد تولید شده تا حد ممکن . ( آزمایش شخصی من روی یک برنامه خیلی ساده نشون داد سرعت اجرا برنامه حدود 20 درصد افزایش پیدا کرد )

7. لایه قدرتمند دسترسی به دادهء BDP : BDP یک لفاف است برای ADO .NET با قابلیتهای بیشتر .

8. تولید خودکار پراکسیهائی برای برقراری ارتباط EJB ها ( Enterprise Java Beans ) با اسمبلی های دات نت .

نتیجه : سی شارپ بیلدر مطابق با سیاستهای همیشگی بورلند برای تولید ابزارهای "سازمان مقیاس" برای توسعه برنامه های گسترده است . بورلند ادعا نکرد قرار است ابزاری متفاوت (؟) از آنچه مایکروسافت ساخته است بسازد ! بورلند با تولید Wrapper ها و ترکیب تکنولوژی هاست که همیشه موفق بوده ، هست و خواهد بود . ( ر- ک جوائز دریافتی بورلند حتی از خوانندگان مجله MSDN ! و ایضا" ر-ک مشتریان ابزارهای گسترده مدیریتی بورلند برای توسعه نرم افزار مانند دپارتمان دفاع مشترک امریکا - WhitePaper ای خودشون نوشته اند و برای بورلند ارسال کرده اند برای مشاهده موجوده )
بورلند اینبار هم با استفاده از یکی از بسترهای موجود و اضافه کردن توانائی های خاصی که اغلب مشتریان ناراضی مایکروسافت از آن شکایت دارند ، یعنی عدم وجود سازمان مناسب برای حمایت از تمام مراحل سنجش - بررسی - آنالیز - طراحی - تولید - بهینه سازی و مدیریت نرم افزار که بورلند به همه این درخواستها پاسخ داده است و ابزارهایش را هم برای حمایت از این روند طراحی میکند ! نکته بعدی ارتباط و اتصال دات نت و J2EE است که قبل از توزیع سی شارپ بیلدر ، مهمترین شعاری بود که بورلند روی ان تاکید میکرد . ( یکی از Live Seminar های بورلند هم با حضور CEO اش به همین مساله یعنی Borland Bridge اختصاص داشت )

خلاصه :


سازگاری با ابزارهاپی که Unified Process رو حمایت میکنند ( پوشش کلیه درخواستهای مهندس نرم افزار)
ارتباط با سایر بستر ها و تکنولوژی ها
نتیجتا" سی شارپ بیلدر با استفاده از بستر دات نت و زبان سی شارپ سعی میکنه محیط منطقی تر برای توسعه های متوسط و بزرگ نرم افزار ایجاد کنه .

نتیجه گیری کلی : محیطهای دلفی برای دات نت و سی شارپ بیلدر با رسالتهای خاص خودشون ، امکانات ، ویژگی ها و ... محیطهای فوق العاده قابل تامل و جذاب برای توسعهء مبتنی بر دات نت هستند .

سوال : تو به عنوان یک آدم نسبتا" بی سواد چه محیطی رو برای توسعه و برنامه نویسی دات نت توصیه میکنی ؟

جواب : بی سواد خودتی ! (:D)

بدون مقدمه چینی : اگر برنامه نویس با سابقهء C هستید و تقریبا" با سایر محیطها بیگانه اید بهترین محیط برای شما Managed C خواهد بود . اگر برنامه نویس دلفی هستید ، چه چیزی بهتر از دلفی دات نت ؟ و اگر قرار است با دات نت شروع کنید ، سی شارپ میتونه پیشنهاد بهتری باشه چون آشنائی با ساختار زبانش میتونه مثلا" در یادگیری زبانهائی مثل جاوا و برنامه نویسی با دلفی هم بسیار زیاد مؤثر باشه و "من" محیط سی شارپ بیلدر رو توصیه میکنم . اگر هم بدون توجه به نوع زبان دنبال کسب امکانات خاصی که در محیط مایکروسافتی دات نت نهفته است هستید ، Managed C بهترین انتخاب است . در سایهء ترکیب دات نت و MFC و سورسهای فراوان و تولید ASP .NET با ++C و تولید ATL Server ها گرفته تا COM Programming و ... . طبیعی است برنامه نویسان سابق وی بی ممکنه به VB .NET متمایل باشن که البته و صد البته نه تنها فوائد زیادی در سایهء مهاجرت به دات نت کسب میکنند ، میتونن بعد از تسلط نسبی به VB .NET سایر زبانها مانند سی شارپ را هم براحتی تجربه کنن :)
شاید کمی بی ربط به نظر بیاد اما با عنایت به خبری که در بخش اخبار نوشتم ، کسایکه برنامهء مبتنی بر ویندوزی دارند که با استفاده از QT نوشته شده حالا میتونن ازش خروجی دات نت بگیرن یا با زبانهائی که دات نت را حمایت میکنه برای QT برنامه بنویسن ( QT مهمترین پلت فرم برنامه نویسی اهالیه لینوکسه و وجود چنین قابلیتی باعث هموار تر شدن مسیر حرکت لینوکس کارها به سمت برنامه نویسی دات نت میشه . از طرف دیگه محصولی بنام #QT در دست تهیه است که بر فراز مونو ، برنامه نویسی برای دات نت روی لینوکس رو سریعتر و راحت تر میکنه :) )

آنچه گفته شد :

  • - دات نت دقیقا" چیه
    - نقش دات نت در توسعهء نرم افزار
    - دات نت و سایر فناوری ها
    - ابزارهای مایکروسافت برای توسعهء دات نت
    - سایر ابزارها


&lt;اتمام بحث در مورد دات نت>

امیدوارم این مطالب تونسته باشه تا حدی روشن کننده بعضی مفاهیم مطرح شده در حوزهء دات نت باشه . یه مقداری از عرایض بنده هم میمونه برای بعد ، اگر حسش بود :?

موفق و خوش باشید :)