صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 24

موضوع: ASP.net

  1. #1
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    ASP.net

    [SIZE=6]مباحث مربوط به asp.net[/SIZE]
    ویرایش توسط B@RBOD : 2008/12/02 در ساعت 09:19

  2. #2
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post آشنائی با Asp.net و بررسی ويژگيهای آن در مقايسه با Asp کلاسيک

    [SIZE=2]ASP.NET نسل بعدی Active Server Pages يا ASP است که توسط شرکت ميکروسافت ارائه شده است. اين محصول توسط ميکروسافت بعنوان شاخص اصلی فناوری در ساخت سايتهای وب در نظر گرفته شده است. با استفاده از ASP.NET می توان هم اينترانت کوچک يک شرکت را ساخت و هم يک سايت وب تجاری خيلی بزرگ را طراحی و پياده سازی نمود. مهمترين نکاتی که در طراحی اين محصول در نظر گرفته شده است راحتی استفاده و بالا بودن کارائی و قابليت آن می باشد. در زير برخی ويژگيهای ASP.NET را بررسی می کنيم.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2]• صفحات ASP.NET کامپايل می شوند.[/SIZE]
    [SIZE=2]هنگامی که يک صفحه ASP.NET برای اولين بارتوسط يک مراجعه کننده به سايت فراخوانی می شود، آن صفحه ابتدا کامپايل شده و بر روی سرور نگهداشته می شود و در فراخوانی های بعدی از آن استفاده می شود. اين بدين معنی است که صفحات ASP.NET خيلی سريع اجرا می شوند.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2]• صفحات ASP.NET با ابزارهای روی سرور ساخته می شوند.[/SIZE]
    [SIZE=2]با ابزارهای موجود در ASP.NET می توان صفحات پيچيده وب را براحتی طراحی نمود. بعنوان مثال با استفاده از ابزار DataGrid می توان به آسانی داده های موجود در يک بانک اطلاعاتی را تحت وب نمايش داد.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2]• مجموعهASP.NET عضوی از بدنه NET. است.[/SIZE]
    [SIZE=2]بدنه NET. دارای بيش از ۴۵۰۰ کلاس آماده جهت استفاده در ASP.NET است. اين کلاس ها تقريبا هر نيازی را در برنامه نويسی برآورده می کنند. بعنوان مثال از اين کلاس ها می توان جهت توليد تصاوير بر حسب تقاضا، به رمز درآوردن يک فايل و يا ارسال يک نامه استفاده کرد.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2][B]مقايسه ASP.NET و ASP کلاسيک[/B][/SIZE]
    [SIZE=2]ASP.NET نسل بعدی ASP يا ASP کلاسيک است. اما اين يک پيشرفت تکاملی است بطوريکه اين دو فناوری تقريبا از يکديگر متفاوتند. صفحات ASP با زبان های دستورالعمل نويسی مانند VBScript يا JScript ايجاد می شوند اما در ASP.NET ما يک فرايند کامل برنامه نويسی با زبانهای Visual Basic يا #C (سي-شارپ تلفظ شود) داريم. همچنين در ASP کلاسيک تنها پنج کلاس استاندارد (Request, Response, Application Session, Server) وجود دارد حال آنکه در ASP.NET می توان از بيش از ۴۵۰۰ کلاس استاندارد موجود در بدنه NET. بهره جست.همچنين عليرغم قدرت و امکانات زياد و متعدد ASP.NET، استفاده از آن در مقايسه با ASP کلاسيک بسيار آسانتر است. بعنوان مثال با استفاده از چند ابزار در يک صفحه ASP.NET می توان يک صفحه بسيار پيچيده HTML بدست آورد که ساخت آن در ASP کلاسيک ممکن است نياز به چند روز کار داشته باشد.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2][B]زبانهای برنامه نويسی در ASP.NET[/B][/SIZE]
    [SIZE=2]شما در ASP.NET می توانيد از هر زبان برنامه نويسی که با بدنه NET. سازگار باشد استفاده کنيد. اين زبانها عبارتند از Visual Basic.NET و #C و JScript.NET . اين بدين معنی است که شما جهت نوشتن برنامه در ASP.NET نياز به فراگيری زبان جديدی نداريد و اگر يکی از زبانهای ويژوال بيسيک يا ++C يا جاوا را می دانيد هم اکنون می توانيد در ASP.NET برنامه بنويسيد.از طرف ديگر تعدادی زبانهای ديگر توسط بعضی از شرکتهای فعال در اين زمينه به مجموعه زبانهای استاندارد ASP.NET افزوده شده است. بعنوان مثال اگر مايل باشيد حتی می توانيد از PERL و COBOL هم در ASP.NET استفاده کنيد.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2][B]ابزارهای ASP.NET[/B][/SIZE]
    [SIZE=2]سالهاست که برنامه نويسان ويژوال بيسيک جهت ساخت فرم های خود از ابزارهای ويژوال بيسيک مانند TextBox و ListBox استفاده کرده اند. در ASP.NET هم شما می توانيد از ابزارهای فراوان موجود در آن برای ساخت فرم ها و صفحات خود استفاده نمائيد. در ASP.NET چهار دسته عمده از ابزارها موجود است:[/SIZE]

    [SIZE=2]• ابزارهای اصلی مانند TextBox، RadioButton، ListBox و Button.[/SIZE]
    [SIZE=2]• ابزارهای اعتباری برای حصول اطمينان از ورود و تائيد صحت اطلاعات ورودی فرم ها.[/SIZE]
    [SIZE=2]• ابزارهای داده ای برای ارتباط با بانک اطلاعاتی و دستکاری داده.[/SIZE]
    [SIZE=2]• ابزارهای پيشرفته جهت نمايش عناصر پيچيده در واسط کاربر مانند تقويم و آگهی های تبليغاتي.[/SIZE]

    [SIZE=2]با استفاده از Visual Studio.NET شما براحتی می توانيد با چيدن تصويری اين ابزارها بر روی فرم مورد نظر، صفحه دلخواه خود را بسازيد. در صورت تمايل حتی می توانيد در يک ويرايشگر ساده متن مانند Notepad برنامه مورد نظر را نوشته و از اين ابزارها استفاده کنيد.[/SIZE]

  3. #3
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post مقدمه ای بر Microsoft.NET

    [SIZE=2][B]معرفی فناوری NET . و بررسی قسمتهای اصلی آن[/B] [/SIZE]



    [SIZE=2]ASP.NET عضوی از بدنه NET. و متعلق به ميکروسافت است. شرکت ميکروسافت موفقيت خود را با سرنوشت NET. گره زده است. بنابراين شايد جالب باشد که بدانيم NET. چيست؟ بدنه NET. دارای دو قسمت اصلی است: قسمت اول يک کتابخانه عظيم از کلاس های آماده است و قسمت دوم يک محيط زمان اجرا می باشد.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2]کتابخانه کلاس ها در NET.[/SIZE]
    [SIZE=2]کتابخانه NET. دارای بيش از ۳۴۰۰ کلاس آماده جهت استفاده در برنامه ها است. بعضی از اين کلاس ها همان کلاس های پايه مانند آرايه و رشته هستند. اما عمده اين کلاس ها به پياده سازی اعمال تخصصی مانند کار با فايل و يا توليد مستندات XML پرداخته اند.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2]• فضانام ها در NET.[/SIZE]
    [SIZE=2]انبوه کلاس های موجود در NET. به حال خود رها نشده اند بلکه اين کلاس ها در يک دسته بندی سلسله مراتبی به نام namespace يا فضانام چيده شده اند. بعنوان مثال کليه کلاس های مربوط به کار با فايل ها در فضانام System.IO دسته بندی شده اند. بنابراين با استفاده از نام کلاس و فضانام مربوطه هر کلاس بصورت منحصربفردی مشخص می شود. بعنوان مثال جهت دسترسی به کلاس File در فضانام System.IO می توان از عبارت System.IO.File استفاده کرد.يک دسته از فضانام ها بطور خاص برای برنامه نويسی در ASP.NET در نظر گرفته شده اند. اين فضانام ها با System.Web شروع می شوند. بعنوان مثال کليه ابزارهای HTML در فضانام System.Web.UI.HTMLControls و ابزارهای Web در فضانام System.Web.UI.WebControls قرار دارند.[/SIZE]
    [SIZE=2][/SIZE]
    [SIZE=2]• مجموعه ها در NET.[/SIZE]
    [SIZE=2]کلاس های موجود در NET. در قالب مجموعه ها (Assemblies) جاسازی شده اند. نکته مهم اين است که در اينجا يک مجموعه با يک فضانام اشتباه نشود. يک مجموعه عبارت است از يک يا چند فايل که کد برنامه مربوط به کلاس ها در آن قرار دارد. برای مثال، کليه کلاس های موجود در فضانام System.IO در يک مجموعه بنام Mscorlib.dll قرار دارد. مجموعه Mscorlib.dll يک فايل معمولی است که در ديسک سخت يک کامپيوتر حاوی NET. در کنار ساير فايل ها قرار می گيرد. برای يک فضانام مهم نيست که کلاس های آن بروی ديسک چگونه ذخيره شده است. کلاس های يک فضانام ممکن است در قالب چند مجموعه ذخيره شده باشند و از طرف ديگر يک مجموعه ممکن است حاوی کلاس های چند فضانام باشد. يک فضانام عبارت است از دسته بندی منطقی کلاس ها در محيط برنامه نويسی در حاليکه يک مجموعه، دسته بندی فيزيکی کلاس ها بروی ديسک سخت است[/SIZE]
    [SIZE=2]زبان مشترک زمان اجرا در NET.[/SIZE]

    [SIZE=2]قسمت دوم بدنه NET. يک محيط يا زبان برای زمان اجرا است که زبان مشترک زمان اجرا (The .NET Common Language Runtime - CLR) نام دارد. در اولين فراخوانی يک صفحه ASP.NET آن صفحه ابتدا کامپايل شده و سپس اجرا می گردد و کد حاصله جهت مراجعات بعدی و جلوگيری از کامپايل مجدد بروی سرور نگهداری می شود. اين کد کامپايل شده يک کد ميانی است که زبان آن زبان جديدی است بنام زبان ميانی ميکروسافت (Microsoft Intermediate Language) يا[/SIZE]
    [SIZE=2]MSIL يا به اختصار IL نام دارد. MSIL مشابه کد زبان اسمبلی است. با اين تفاوت که دارای ويژگيهای شئ گرا است و مستقل از پردازنده کامپيوتر طراحی شده است. صفحات ASP.NET با هر زبانی که نوشته شوند در نهايت به کد MSIL تبديل می شوند. سپس کد MSIL در زمان اجرا توسط کامپايلری بنام JIT به کد زبان ماشين مربوطه تبديل می شود. در واقع اينکه صفحات ASP.NET قبل از اجرا به کد ميانی MSIL تبديل می شوند دلايل مهمی دارد. دليل اول اينکه اين مساله دست برنامه نويس را در انتخاب زبان برنامه نويسی باز می گذارد بدون آنکه تفاوتی در نتيجه چه از جهت سرعت و چه از جهت کارآئی برنامه احساس شود. بعنوان مثال شما می توانيد يک صفحه ASP.NET را با زبان ويژوال بيسيک بنويسيد در حاليکه سرعت اجرای آن همان سرعت برنامه ای است که با #C يا ++C نوشته شده است. و اين به آن دليل است که هر زبانی که برنامه نويس انتخاب کند در نهايت برنامه توليد شده به کد MSIL تبديل خواهد شد.[/SIZE]
    [SIZE=2]دليل دوم اينکه چون همه زبان های NET. به يک زبان ميانی تبديل می شوند، لذا اين زبان ها در کنار يکديگر بخوبی کار می کنند. بعنوان مثال شما می توانيد از کلاسی که به زبان ويژوال بيسيک نوشته شده است در زبان #C استفاده نمائيد.[/SIZE]

  4. #4
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post اصول پياده سازی نرم افزارهای مبتنی بر وب

    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD colSpan=2>[SIZE=2][FONT=Arial][B]در اين مقاله تاريخچه و اصول پياده سازی نرم افزار بخصوص بر روی بستر وب تشريح شده است.[/B] <!--[URL="http://www.mycomputer.ir/index/content/view/502/51/#continue"]ادامه مقاله...[/URL] [/FONT][/SIZE]

    [SIZE=2][FONT=Arial]--><!-- Ads --><!-- <TABLE id=Table1 cellSpacing=0 cellPadding=1 align=center border=0> <TR> <TD align=center>[COLOR=#666666]آگهی[/COLOR]</TD></TR> <TR> <TD> [URL="http://senatorha.com/whatever/ads.aspx"][IMG]http://senatorha.com/Images/banner/ads300x250.gif[/IMG][/URL]</TD></TR></TABLE> --><!-- Ads -->[/FONT][/SIZE]

    </TD></TR></TBODY></TABLE>

    [SIZE=2][FONT=Arial]<HR>[/FONT][/SIZE]
    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD vAlign=top>[FONT=Arial][SIZE=2]بمنظور بررسی مقوله پياده سازی نرم افزار بر روی بستر وب بحث خود را بر روی دو موضوع عمده متمركز می كنيم: شناخت مدل های رايج جهت پياده سازی نرم افزار از ابتدا تا كنون و شناخت وب بعنوان بستر مربوطه بهمراه تكنولوژی هائی كه در اين زمينه مورد استفاده قرار می گيرند.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]هدف ما رسيدن به نقطه ای است كه مشخص نمائيم، برای طراحی و پياده سازی نرم افزار بر روی بستر وب، اولا از چه نوع مدلی برای پياده سازی استفاده می گردد و ثانيا روند توسعه و تكامل وب را با تاكيد بر نيازهای نرم افراری از بعد ابزارشناسی دنبال كرده و از اين رهگذر جايگاه هر ابزار (تكنولوژی) تبين شده تا بدين وسيله بتوانيم از هر چيز در جايگاه خود و در زمان مربوطه استفاده كنيم. بهرحال وب يك واقعيت انكار ناپذير بوده و سايه حضور آن را در همه جا می توان احساس كرد. نرم افزار نيز مجری خواسته های انسانی در سرزمين سخت افزار است، اين بار با يك چالش جدی مواجه شده است : پاسخگوئی به خيل نيازهای جديد مطرح شده متكی بر بستر وب.[/SIZE][/FONT]

    [FONT=Arial][SIZE=2]در بخش اول اين مقاله موضوع اول يعنی شناخت مدل های پياده سازی نرم افزار تشريح خواهد شد. به اين اميد كه از اين رهگذر به نقطه ای برسيم كه يك مدل مناسب جهت پياده سازی برنامه های تحت وب را معرفی و آن را بعنوان پايه و اسا س كار خود قرار دهيم. در ابتدا لازم است به اين اصل بديهی اشاره شود كه يك برنامه كامپيوتری حاصل تركيب داده ها و منطق است. منطق يك برنامه از طريق كدهای مربوطه كه به يكی از زبانهای برنامه نويسی نوشته خواهند شد، مسئول تحقق خواسته های تعريف شده برای يك نرم افزار از طريق انجام عمليات مورد نياز بر روی داده ها است. داده ها خود می توانند به اشكال و روش های متنوعی سازماندهی و در اختيار يك نرم افزار قرار گيرند. [/SIZE][/FONT]
    [FONT=Arial][SIZE=2]Program = Logic(Code) + Data[/SIZE][/FONT]

    [FONT=Arial][SIZE=2]مدل های پياده سازی يك نرم افزار از ابتدا تاكنون متاثر از عوامل متفاوتی بوده است كه جايگاه سخت افزارها بعنوان پتانسيل هائی كه می بايست توان خود را در جهت بالفعل نمودن نرم افزارها قرار دهند، نقش برجسته ای دارد. مدل های پياده سازی نرم افزار را می توان در پنج گروه عمده بشرح زير تقسيم نمود:[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]MainFrame Architecture[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]در اين مدل دو عنصر فيزيكی مورد اهتمام جدی بودند: كامپيوتر اصلی كه با نام Host شناخته می شد و سخت افزارهای استفاده كننده از كامپيوتر اصلی كه با نام ترمينال شناخته می شدند. تمامی منطق يك برنامه (Logic) بهمراه داده های مربوطه (Data) بر روی Host نصب می شد و كاربران با استفاده از ترمينال ها كه بمنزله پايانه هائی جهت ورود و خروج ( نمايش ) اطلاعات بودند، قادر به ارتباط با سيستم و اجرای يك برنامه بودند. تمركز منطق برنامه در يك محل (Host) از مهمترين ويژگی های اين مدل است.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]File Server Architecture[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]از اين مرحله دو واژه معروف Server و Client پا به عرصه وجود گذاشتند. حيات و معنی اين واژه ها محدود به سخت افرار بود و به مرزهای نرم افزار نرسيده بود. در اين راستا كامپيوتری كه برای ديگران سرويس هائی را ارائه می كرد با نام Server يا در اين حالت خاص (File Server) و كامپيوترهائی كه از اين خدمات بهره مند می شدند را Client می گفتند. مدل فوق پاسخی اوليه به نيازهای كاربران يك شبكه كامپيوتری بود. در مدل فوق منطق يك برنامه بر روی يك Client نصب و داده ها بر روی Server قرار می گرفتند. دراين مدل داده ها در يك فايل ( با يك ساختار خاص) قرار گرفته و يك بانك اطلاعاتی را بوجود می آوردند و سرويس دهنده مسئول ارائه تسهيلاتی برای جابجائی و ارسال اطلاعات موجود در فايل ها بود. تمركز منطق برنامه در يك محل ( Client ) از مهمترين ويژگی های اين مدل است.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Client Server Architecture[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]مدل فوق در پاسخ به اشكالات بوجود آمده در مدل قبل ارائه گرديد. در مدل فوق كامپيوتر ارائه كننده خدمات را همچنان Server و كامپيوترهای استفاده كننده را Client می ناميدند. داده های يك برنامه (بانك های اطلاعاتی) همچنان بر روی سرويس دهنده قرار داشت ولی در رابطه با منطق برنامه اصل توزيع پردازش مورد توجه جدی قرار گرفت. بنابر اصل فوق بخشی از منطق يك برنامه را در حد امكان بر روی سرويس گيرنده اجرا و بخش ديگر از منطق برنامه بر روی سرويس دهنده اجرا می گرديد. در مدل فوق برای اجرای يك برنامه دو پردازش جداگانه يكی بر روی سرويس دهنده و ديگری بر روی سرويس گيرنده فعال و هر يك نقشی در اجرای يك برنامه را برعهده می گرفت. مهمترين ويژگی مدل فوق مطرح كردن اصل پردازش توزيع شده است. [/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Two Tire Architecture[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]در مدل فوق اصل تقسيم وظيفه بصورت يك واقعيت انكار ناپذير مورد توجه جدی قرار گرفت در اين مدل همچنان كامپيوترهای سرويس دهنده و سرويس گيرنده جايگاه قبلی خود را داشتند با اين تفاوت بسيار مهم كه حوزه انجام هر عمليات ( منطق) تا اندازه ای شفاف تر گرديد. مثلا جهت دستيابی به بانك های اطلاعاتی تمامی DataBase Engine بر روی سرويس گيرنده قرار می گرفت و سرويس گيرندگان جهت استفاده از داده های موجود در بانك اطلاعاتی نيازمند نصب امكانات نرم افزاری و آگاهی از ساختار بانك اطلاعاتی نبودند. از اين مرحله واژه های سرويس گيرنده و سرويس دهنده پا به عرصه نرم افزار نيز گذاشتند و مفاهيمی نظير سرويس دهنده بانك اطلاعاتی و رايج شد. مهمترين ويژگی مدل فوق تاكيد بر اصل تقسيم فعاليت در چهارچوب ارائه طبقات (Tires) بود.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Three Tire Architecture[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]در مدل فوق اصل تفكيك مجموعه قوانين (سياست های) مربوط به عملكرد يك نرم افزار مورد توجه جدی قرار گرفت. بديهی است با حجيم شدن يك نرم افزار از يكطرف و افزايش تعداد كاربران از طرف ديگر و تغييرات متوالی در سياست های راهبردی و عملياتی يك نرم افزار در يك سازمان، مسائل مربوط به پشتيبانی و ارتقاء يك نرم افزار از مسائل بسيار مهم و حياتی در موفقيت افزايش طول عمر يك نرم افزار محسوب می گردد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]در مدل فوق همچنان واژه های سرويس دهنده و سرويس گيرنده حضور مستمر خود را ادامه دادند با اين تفاوت بسيار مهم كه حوزه عملكرد اين واژه ها در رابطه با نرم افزار بسيار برجسته گرديد. در اين مدل از سه لايه استفاده می گردد: لايه اول مسئول تماس و ارتباط با كاربر و ارائه دهنده محيط رابط كاربر، لايه دوم ( ميانی ) مسئول نگهداری و اجرای سياست ها و قوانين كليدی و راهبردی حاكم بر نرم افزار و لايه سوم مسئوليت نگهداری بانك اطلاعاتی و ارائه سرويس و خدمات به لايه متقاضی ( لايه دوم ) است. عملكرد لايه دوم ( ميانی ) بسيار گسترده بوده و می توان با همگرا نمودن اين عملكردها به چند بخش، لايه های ديگری را نيز در اين بخش داشته باشيم، در چنين حالتی اين مدل اصطلاحا N-Tire ناميده می شود.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]مدل فوق بهترين انتخاب برای پياده سازی نرم افزار بر روی بستر وب است. كليد طلائی طراحی اين نوع نرم افزارها توانائی نوشتن عناصر (اجزا) بگونه ای است كه از يكطرف امكان بكارگيری آنها بسادگی در لايه ها و حتی چندين برنامه فراهم شده و از طرف ديگر امكان ارتباط اين عناصر با يكديگر صرفنظر از زبان برنامه نويسی استفاده شده و ساير موارد مرتبط فراهم گردد. ما می بايست جعبه های سياهی را طراحی كنيم كه صرفنظر از ماهيت درون هريك، قادر به استفاده از توان آنها در بخش يا بخش هائی از يك و يا چندين نرم افزار باشيم. مطلب فوق شايد مهمترين دليل رويكرد شركت های عظيم نرم افزاری جهت ارائه يك ساختار استاندارد برای توليد اين عناصر باشد. تكنولوژی Component Object Model يا COM پاسخ شركت مايكروسافت به اين نياز حياتی بود.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]تكنولوژی COM[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]مهمترين ويژگی تكنولوژی فوق قابليت استفاده مجدد و ارتباط متقابل برای عناصر( اشياء) توزيع شده است. بدين ترتيب پياده كنندگان نرم افزار اين امكان را پيدا خواهند كرد تا با در كنار هم قرار دادن اين عناصر و استفاده چندباره از آنان (حتی اگر توليدكنندگان آنها متفاوت باشند) قادر به خلق آثار ماندگار خود در سريعترين زمان ممكن و متكی بر اصول مهندسی نرم افزار باشند.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]ريشه COM[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]تكنولوژی COM بصورت ناگهانی مطرح نگرديد و ريشه در تلاش هائی دارد كه از مدت ها قبل بعنوان يك نياز مطرح شده بود. معرفی تكنولوژی Object Linking & Embedding يا OLE در سال 1991 اولين تلاش در اين زمينه بود كه توسط شركت مايكروسافت برای ارتباط و پيوستگی بين مستندات در چهارچوب مجموعه برنامه های آفيس مطرح گرديد. حوزه عملكرد تكنولوژی فوق بر روی مستندات (Documents) متمركز بود. در ادامه شركت مايكروسافت به اين نكته پی برد كه تكنولوژی فوق نبايد صرفا متمركز بر روی مستندات باشد و می تواند عملكردی جامع تر را تحت پوشش خود قرار دهد. بدين منظور نسخه شماره ۲، OLE در سال 1995 مطرح گرديد و اين نسخه در ادامه تمامی عناصر و اجزای موجود در محيط ويندوز را شامل گرديد و بدين ترتيب COM مطرح شد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]در اوايل، تكنولوژی فوق در رابطه با عناصر و اجزای توزيع شده امكانات قابل توجه ای ارائه نكرده بود. شايد يكی از مهمترين دلايل آن عدم عرضه يك سيستم عامل شبكه ای از طرف مايكروسافت تا آن زمان بود. همزمان با عرضه ويندوز 95 و ويندوز NT در سال 1996 و مطرح شدن امكانات شبكه ای و ضرورت توزيع، اجرا و ارتباط بين عناصر توزيع شده تكنولوژی Distributed COM يا DCOM مطرح گرديد. سرانجام در سال 1997 نسخه توسعه يافته اين تكنولوژی با نام +COM توسط شركت مايكروسافت ارائه گرديد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]همزمان با گرايش بسمت طراحی و پياده سازی نرم افزارهای متكی بر مدل Three Tire از يكطرف و نياز شديد به پياده سازی نرم افزار های متكی بر وب، ضرورت توجه و بازنگری در نحوه طراحی و پياده سازی عناصر توزيع شده مورد اهتمام جدی شركت های عظيم نرم افزاری قرار گرفت. شركت مايكروسافت در اين زمينه منادی تكنولوژی های COM/DCOM/COM+، Internet Explorer و ActiveX گرديد. در مقابل شركت های نرم افزاری ديگر، NetScape، Java/J2EE ( شركت سان ) و CORBA را مطرح كردند.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]اولين نسخه CORBA در سال 1992 توسط Object Management Group يا OMG كه بالغ بر ششصد عضو دارد ارائه گرديد. آخرين نسخه آن (نسخه شماره ۲) در سال 1996 عرضه شده است. عملكرد كلی تكنولوژی فوق نظير COM است. بهرحال هدف اكثر تكنولوژی های فوق در اين است كه امكانات و استانداردهائی را برای توليد عناصر بگونه ای ارائه نمايند كه با پياده سازی آنها، قادر به اخذ سرويس و خدمات بصورت محلی و يا از را دور باشيم.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]در اين راستا شايد مناسب باشد كه به عملكرد هر Tire در نرم افزارها از بعد سرويس دهی متمركز شده و هر Tire را بعنوان مجموعه ای از سرويس ها در نظر بگيريم كه مسئول ارائه سرويس به عناصر موجود در Tire خود و يا ساير Tire های مرتبط باشد. با اين نگرش می توان گفت تمامی نرم افزارها خدمات و سرويس های خود را در سه بخش ارائه می نمايند: [/SIZE][/FONT][FONT=Arial][SIZE=2]• User Sevices[/SIZE][/FONT]
    [SIZE=2][FONT=Arial]• Business Services[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]• Data Services[/FONT][/SIZE]

    [FONT=Arial][SIZE=2]در مدل Three Tire مسئوليت ارائه هر يك از سرويس های فوق به يك Tire واگذار می گردد. عناصر موجود و مسئول ارائه سرويس و خدمات در هر Tire قادر به ارتباط و درخواست سرويس از عناصر موجود در Tire خود و ساير Tire های موجود در بالا و يا پايين خود خواهند بود. نكته بسيار مهم در رابطه با وضعيت فوق اين است كه يك درخواست جهت اخذ سرويس نمی تواند يك Tire را حذف و خود مستقيما با Tire ثانويه ( بعدی) مرتبط و اصطلاحا يك Tire را دور بزند. مثلا عناصر موجود در لايه User Services نمی توانند مستقيما درخواست خود را برای لايه Data Services ارسال دارند. البته لايه فوق نيز چنين امكانی را نخواهد داشت. هر يك از سه بخش فوق مسئوليت های خاصی را برعهده گرفته و در زمانيكه يك بخش به خدمات يك بخش ديگر نياز داشته باشد، درخواست خود را برای اخذ سرويس در اختيار بخش مورد نظر قرارداده و بخش مربوطه سرويس درخواستی را در قالب اجرای يك يا چندين عنصر انجام و ماحصل را در اختيار بخش مربوطه قرار خواهد داد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]مدل فوق كه بر اساس همگرائی نوع سرويس ها و خدمات در يك نرم افزار ارائه شده است، صرفا يك مدل منطقی است و نشاندهنده يك مدل فيزيكی نيست. دراين راستا چهار مدل فيزيكی برای پياده سازی نرم افزارهای Three Tire ارائه شده است:[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]• Single Server[/SIZE][/FONT]
    [SIZE=2][FONT=Arial]• Business Server[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]• Transaction Server[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]• Web Server[/FONT][/SIZE]


    [SIZE=2][FONT=Arial][B]Single Server[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]در اين مدل محل استقرار تمامی عناصر بين سرويس گيرنده و سرويس دهنده شبكه تقسيم می گردد. در مدل فوق تمامی عناصر مربوط به بانك های اطلاعاتی (Data Services) بر روی سرويس دهنده قرار می گيرد. عناصر مربوط به User Service در صورتيكه بگونه ای طراحی شده اند كه ممكن است مورد استفاده چندين نرم افزار ديگر قرار بگيرند، می بايست آنها را بر روی سرويس دهنده شبكه نصب نمود. عناصر مربوط به Business Services كه مسئوليت پياده سازی سياست ها و قوانين در يك نرم افزار را برعهده دارند، عمدتا بر روی سرويس دهنده شبكه نصب می گردنند مگر اينكه در رابطه با يك نرم افزار، اعمال يك سياست بخصوص را می بايست در سطح لايه User Services پياده سازی نمود ( بررسی صحت داده های ورودی، انجام برخی محاسبات خودكار با توجه به رفتار داده ها و ). در اين حالت عنصر مجری سياست فوق می بايست در لايه User Services و بصورت محلی و مختص به آن نصب و فعال گردد.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Bussines Server (Application)[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]در مدل فوق يك سرويس دهنده اضافی با نام Application Server، استفاده می گردد. سرويس دهنده فوق مسئوليت استقرار تمامی عناصری را كه می بايست به اشتراك گذاشته شوند، بر عهده خواهد گرفت. در اين راستا در صورتيكه برخی از عناصر مربوط به لايه User Service باشند ولی بصورت مشترك مورد استفاده چندين نرم افزار قرار می گيرند نيز از اين قاعده مستثنی نبوده و بهترين محل برای استقرار آنان، سرويس دهنده Application است. در مدل فوق تمامی عناصر مربوط به Data service بر روی سرويس دهنده Data قرار خواهند گرفت. ارتباط تمامی سرويس گيرندگان در ابتدا با Application Server آغاز خواهد گشت. سرويس گيرندگان خواسته خود را به لايه Application ارسال و لايه فوق مسئوليت ارتباط با لايه Data را بر عهده خواهد گرفت.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Transaction Server[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]Transaction واحد انجام يك فعاليت بوده كه خود می تواند شامل چندين عمليات ديگر باشد. سلسله عمليات فوق می بايست تماما با موفقيت اجرا گردند. در مدل فوق سرويس دهنده Transaction مسئوليت مديريت و ذخيره سازی عناصر لازم برای يك فعاليت Transaction را برعهده خواهد گرفت. در اين مدل می توان از چندين سرويس دهنده ديگر بمنظور استقرار عناصر مربوطه استفاده كرد. استقرار عناصر بر روی سرويس دهنده ها می بايست پويا بوده و در صورت افزايش ترافيك، امكان جابجائی آنها بر روی ساير سرويس دهنده ها وجود داشته باشد. سرويس دهنده Transaction مسئوليت های نگهداری عناصر ActiveX، ارسال درخواست يك برنامه به يكی از سرويس دهنده ها، اتمام اجرای يك برنامه، بررسی صحت عملكرد يك عنصر را بر عهده خواهد گرفت.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Web Server[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]در مدل فوق يك سرويس دهنده در شبكه اضافه و مسئوليت سرويس های وب را بر عهده خواهد گرفت. سرويس گيرنده ها مجهز به نرم افزارهای ارتباطی نظير مرورگرها بوده تا بدين طريق قادر به درخواست صفحات ايستا و پويا از سرويس دهنده وب باشند. برنامه های مبتنی بر وب تمامی تاكيد خود را بر استاندارد نمودن نرم افزارهای مرورگری معطوف می دارند. چراكه با استاندارد شدن اين نوع از نرم افزارها تمامی سرويس گيرنده ها با يك ابزار واحد استاندارد شده از سرويس دهنده های وب خواسته های خود را مطرح خواهند نمود. بديهی است در چنين حالتی پاسخگوئی به اين درخواست ها از طرف سرويس دهنده های وب بمراتب ساده تر و با اطمينان خاطر بيشتری صورت می پذيرد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]در سه مدل گفته شده قبلی، بر اين نكته تاكيد وجود داشت كه تمامی سياست های راهبردی نرم افزار متمركز شده تا بدين طريق اعمال تغييرات بسادگی صورت پذيرد. در مدل فوق چون سرويس دهنده وب اين پتانسيل را دارا است كه بصورت اتوماتيك عناصری را بر روی كامپيوتر سرويس گيرنده مستقر نمايد، ضرورت تمركز سياست های راهبردی نرم افزار بر روی سرويس دهنده چندان مهم بنظر نمی آيد. در اين مدل بيشتر سرعت اجرای اين عناصر مورد توجه است. در چنين حالتی اگر يك برنامه مبتنی بر وب بر روی بستر اينترنت اجرا می گردد، می توان برخی از عناصر را برای سرويس گيرنده ارسال تا بصورت محلی بر روی كامپيوتر وی اجرا شوند. در چنين حالتی سعی می شود كه زمان ارتباط و درخواست از سرويس دهنده به حداقل زمان ممكن كاهش پيدا كند چراكه پهنای باند و ارتباط با سرويس گيرنده ها را نمی توان همواره بدون نگرانی تضمين نمود. در صورتيكه برنامه مبتنی بر وب بر روی بستر اينترانت اجرا می گردد، می توان بر اساس توان كامپيوترهای سرويس گيرنده و سرويس دهنده و پهنای باند موجود، برخی از عناصر را بر روی سرويس دهنده و برخی ديگر از عناصر را بر روی سرويس گيرنده اجرا نمود.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]بهرحال مدل فوق يك ايده جديد برای اجرای يك برنامه را مطرح كرده است. سرويس دهنده وب بسادگی و بصورت اتوماتيك قادر به نصب اجزای مورد نياز يك سرويس گيرنده خواهد بود. بدين ترتيب از يكطرف ضرورت استقرار تمامی عناصر بر روی سرويس گيرنده از بين رفته و از طرف ديگر به سرويس گيرنده ها استقلال لازم داده شده و در صورت ضرورت می توان آنها را نيز در اجرای برخی از عناصر سهيم كرد.[/SIZE][/FONT]

    </TD></TR></TBODY></TABLE>

  5. #5
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post فرستادن Email از طريق ASP.NET

    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD colSpan=2>[SIZE=2][FONT=Arial][B]در اين مقاله نحوه فرستادن Email از يک صفحه ASP.NET نشان داده شده است.[/B] [/FONT][/SIZE]
    [SIZE=2][FONT=Arial]<!--[URL="http://www.mycomputer.ir/index/content/view/496/51/#continue"]ادامه مقاله...[/URL] [/FONT][/SIZE]

    [SIZE=2][FONT=Arial]--><!-- Ads --><!-- <TABLE id=Table1 cellSpacing=0 cellPadding=1 align=center border=0> <TR> <TD align=center>[COLOR=#666666]آگهی[/COLOR]</TD></TR> <TR> <TD> [URL="http://senatorha.com/whatever/ads.aspx"][img]http://www.senatorha.com/forum/[/img][/URL]</TD></TR></TABLE> --><!-- Ads -->[/FONT][/SIZE]

    </TD></TR></TBODY></TABLE>

    [FONT=Arial][SIZE=2]<HR>[/SIZE][/FONT]

    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD vAlign=top><SPAN id=_ctl0_Body1_lblArticleText>[FONT=Arial][SIZE=2]برای فرستادن Email از يک صفحه ASP.NET بايستی از کلاس SmtpMail که در فضانام System.Web.Mail قرار دارد استفاده کرد که شامل متد استاتيک Send است. بهرحال ساده ترين راه برای فرستادن Email فراخوانی يک نمونه متد Send از کلاس MailMessage است. کلاس MailMessage در فضانام System.Web.Email قرار دارد که پيغام Email را نشان می دهد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]کلاس MailMessage در برگيرنده خاصيتهای مشابه شئ CDONTS است ( CDONTS رايجترين شئ برای فرستادن Email در ASP کلاسيک است).[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]بعنوان مثال خاصيتهايی چون: Body ،Priority ،Subject ،BodyFormat ،Bcc ،Cc ،From ،To.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]بهرحال برای فرستادن Email بايستی نمونه ای از کلاس MailMessage ساخته شود و خواص آن مشخص شود:[/SIZE][/FONT]


    [SIZE=2][FONT=Arial][B]۱-[/B] ابتدا نمونه ای از کلاس MailMessage ساخته می شود: [/FONT][/SIZE][FONT=Arial][SIZE=2]Dim ObjMM As New MailMessage[/SIZE][/FONT]



    [SIZE=2][FONT=Arial][B]۲-[/B] سپس آدرس email دريافت کننده: [/FONT][/SIZE][SIZE=2][FONT=Arial]ObjMM.To="<SCRIPT language=JavaScript type=text/javascript> <!-- var prefix = '&#109;a' + 'i&#108;' + '&#116;o'; var path = 'hr' + 'ef' + '='; var addy40485 = 's&#111;m&#101;&#111;n&#101;' + '&#64;'; addy40485 = addy40485 + 's&#111;m&#101;&#97;ddr&#101;ss' + '&#46;' + 'c&#111;m'; document.write( '<a ' + path + '\'' + prefix + ':' + addy40485 + '\'>' ); document.write( addy40485 ); document.write( '<\/a>' ); //-->\n </SCRIPT> [/FONT][EMAIL="someone@someaddress.com"][FONT=Arial][COLOR=#009cff]someone@someaddress.com[/COLOR][/FONT][/EMAIL]<SCRIPT language=JavaScript type=text/javascript> <!-- document.write( '<span style=\'display: none;\'>' ); //--> </SCRIPT>[FONT=Arial] This email address is being protected from spam bots, you need Javascript enabled to view it<SCRIPT language=JavaScript type=text/javascript> <!-- document.write( '</' ); document.write( 'span>' ); //--> </SCRIPT> "[/FONT][/SIZE]



    [SIZE=2][FONT=Arial][B]۳-[/B] آدرس فرستنده email: [/FONT][/SIZE][SIZE=2][FONT=Arial]ObjMM.From="<SCRIPT language=JavaScript type=text/javascript> <!-- var prefix = '&#109;a' + 'i&#108;' + '&#116;o'; var path = 'hr' + 'ef' + '='; var addy76921 = 's&#111;m&#101;&#111;n&#101;&#101;ls&#101;' + '&#64;'; addy76921 = addy76921 + 's&#111;m&#101;&#111;th&#101;r&#97;ddr&#101;ss' + '&#46;' + 'c&#111;m'; document.write( '<a ' + path + '\'' + prefix + ':' + addy76921 + '\'>' ); document.write( addy76921 ); document.write( '<\/a>' ); //-->\n </SCRIPT> [/FONT][EMAIL="someoneelse@someotheraddress.com"][FONT=Arial][COLOR=#009cff]someoneelse@someotheraddress.com[/COLOR][/FONT][/EMAIL]<SCRIPT language=JavaScript type=text/javascript> <!-- document.write( '<span style=\'display: none;\'>' ); //--> </SCRIPT>[FONT=Arial] This email address is being protected from spam bots, you need Javascript enabled to view it<SCRIPT language=JavaScript type=text/javascript> <!-- document.write( '</' ); document.write( 'span>' ); //--> </SCRIPT> "[/FONT][/SIZE]



    [SIZE=2][FONT=Arial][B]۴-[/B] همچنين می توان فيلدهای Cc و Bcc را داشت: [/FONT][/SIZE][SIZE=2][FONT=Arial]ObjMM.Cc="<SCRIPT language=JavaScript type=text/javascript> <!-- var prefix = '&#109;a' + 'i&#108;' + '&#116;o'; var path = 'hr' + 'ef' + '='; var addy7216 = 's&#111;m&#101;&#111;n&#101;2' + '&#64;'; addy7216 = addy7216 + 's&#111;m&#101;&#97;ddr&#101;ss' + '&#46;' + 'c&#111;m'; document.write( '<a ' + path + '\'' + prefix + ':' + addy7216 + '\'>' ); document.write( addy7216 ); document.write( '<\/a>' ); //-->\n </SCRIPT> [/FONT][EMAIL="someone2@someaddress.com"][FONT=Arial][COLOR=#009cff]someone2@someaddress.com[/COLOR][/FONT][/EMAIL]<SCRIPT language=JavaScript type=text/javascript> <!-- document.write( '' ); //--> </SCRIPT>[FONT=Arial] This email address is being protected from spam bots, you need Javascript enabled to view it<SCRIPT language=JavaScript type=text/javascript> <!-- document.write( '</' ); document.write( 'span>' ); //--> </SCRIPT> "[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]ObjMM.Bcc="<SCRIPT language=JavaScript type=text/javascript> <!-- var prefix = '&#109;a' + 'i&#108;' + '&#116;o'; var path = 'hr' + 'ef' + '='; var addy56469 = 's&#111;m&#101;&#111;n&#101;3' + '&#64;'; addy56469 = addy56469 + 's&#111;m&#101;&#97;ddr&#101;ss' + '&#46;' + 'c&#111;m'; document.write( '<a ' + path + '\'' + prefix + ':' + addy56469 + '\'>' ); document.write( addy56469 ); document.write( '<\/a>' ); //-->\n </SCRIPT> [/FONT][EMAIL="someone3@someaddress.com"][FONT=Arial][COLOR=#009cff]someone3@someaddress.com[/COLOR][/FONT][/EMAIL]<SCRIPT language=JavaScript type=text/javascript> <!-- document.write( '' ); //--> </SCRIPT>[FONT=Arial] This email address is being protected from spam bots, you need Javascript enabled to view it<SCRIPT language=JavaScript type=text/javascript> <!-- document.write( '</' ); document.write( 'span>' ); //--> </SCRIPT> "[/FONT][/SIZE]



    [SIZE=2][FONT=Arial][B]۵-[/B] بوسيله خاصيت BodyFormat نحوه فرستادن email بصورت text و يا html مشخص می شود: [/FONT][/SIZE][FONT=Arial][SIZE=2]Obj.MM.BodyFormat=MailFormat.Text[/SIZE][/FONT]



    [SIZE=2][FONT=Arial][B]۶-[/B] خاصيت Priority ميزان Security ميل و فرستادن آنرا مشخص می کند که شامل سه انتخاب High ،Normal و Low است: [/FONT][/SIZE][FONT=Arial][SIZE=2]ObjMM.Priority=MailPriority.Normal[/SIZE][/FONT]



    [SIZE=2][FONT=Arial][B]۷-[/B] خاصيت Subject عنوان ميل را مشخص می کند: [/FONT][/SIZE][FONT=Arial][SIZE=2]ObjMM.Subject="Hello there"[/SIZE][/FONT]



    [SIZE=2][FONT=Arial][B]۸-[/B] بوسيله Body بدنه Email مشخص می شود ( پيغام ): [/FONT][/SIZE][FONT=Arial][SIZE=2]ObjMM.Body = "This is body!"[/SIZE][/FONT]


    [FONT=Arial][SIZE=2]توجه داشته باشيد که فضانام System.Web.Mail در صفحه ASP.NET فراخوانی شود: [/SIZE][/FONT][FONT=Arial][SIZE=2]<% @import NameSpace="System.Web.Mail" %>[/SIZE][/FONT]


    [FONT=Arial][SIZE=2]بعد از تعيين خواص MailMessage ، متد Send از کلاس SmtpMail برای کلاس شبيه سازی شده MailMessage بصورت زير فراخوانی می شود: [/SIZE][/FONT][FONT=Arial][SIZE=2]SmtpMail.Send(ObjMM)[/SIZE][/FONT]


    [FONT=Arial][SIZE=2]کلاس SmtpMail برای فرستادن Email از سرويس Smtpی استفاده می کند که در ساختار IIS وجود دارد. به تعبير ديگر با بکار بردن متد Send، از سرور داخلی SMTP برای فرستادن Email استفاده می شود. برای مشخص کردن سرور SMTP از نوع ديگر ( غير از پيش فرض ) بايد خاصيت SmtpServer آن بصورت زير تعيين شود: [/SIZE][/FONT][FONT=Arial][SIZE=2]SmtpMail.SmtpServer= emailservername[/SIZE][/FONT]

    [FONT=Arial][SIZE=2]در غير اينصورت SmtpServer پيش فرض (Default) بصورت زير است: [/SIZE][/FONT][FONT=Arial][SIZE=2]SmtpMail.SmtpServer=""[/SIZE][/FONT]

    [FONT=Arial][SIZE=2]يکی از مهمترين کاربردهای فرستادن Email از طريق صفحات وب دريافت نظرات، اطلاعات و ... از طريق يک فرم html و ارسال آن به مدير سايت است (Feedback).[/SIZE][/FONT]

    </TD></TR></TBODY></TABLE>

  6. #6
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post پردازش های مبتنی بر Client Server

    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD colSpan=2>[SIZE=2][FONT=Arial][B]بررسی معماری Client/Server در مدلهای تک لايه، دو لايه، سه لايه و چند لايه و اصول طراح معماری برنامه های تحت وب[/B] <!--[URL="http://www.mycomputer.ir/index/content/view/495/51/#continue"]ادامه مقاله...[/URL] [/FONT][/SIZE]

    [SIZE=2][FONT=Arial]--><!-- Ads --><!-- <TABLE id=Table1 cellSpacing=0 cellPadding=1 align=center border=0> <TR> <TD align=center>[COLOR=#666666]آگهی[/COLOR]</TD></TR> <TR> <TD> [URL="http://senatorha.com/whatever/ads.aspx"][img]http://www.senatorha.com/forum/[/img][/URL]</TD></TR></TABLE> --><!-- Ads -->[/FONT][/SIZE]

    </TD></TR></TBODY></TABLE>

    [SIZE=2][FONT=Arial]<HR>[/FONT][/SIZE]<TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD vAlign=top>[FONT=Arial][SIZE=2]در اواسط دهه ۸۰ ميلادی و زمانيكه اولين بار توليدكنندگان تجهيزات شبكه، محصولات خود را به بازار عرضه كردند، واژه Client/Server وارد عرصه كامپيوتر گرديد. در آن زمان واژه فوق صرفا در رابطه با تجهيزات سخت افزاری ( كامپيوتر ) استفاده می شد و كامپيوتری كه از آن بعنوان مركز ثقل ارائه خدمات در يك شبكه ياد می شد، را با نام Server و كامپيوتری كه از اين امكانات استفاده می كرد را بعنوان Client می شناختند ( سايه نرم افزار بر اين واژه حضور سنگينی نداشت ).[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]امروزه واژه فوق دارای يك معنی خاص است كه چندان مرتبط با سخت افرار نمی گردد. اغلب مردم هنوز واژه Client را به يك كامپيوتر فيزيكی نسبت داده و واژه Server را به كامپيوتر فيزيكی ديگری كه به آن متصل و سرويس هائی را ارائه می نمايد، اطلاق می نمايند. مطلب فوق با اينكه درست است ولی صرفا يك بخش اندك از تمامی واقعيت های موجود در اين زمينه است. واژه فوق امروزه در مقياس وسيعتری به خدمت گرفته می شود. بمنظور آشنائی بيشتر با اين واژه لازم است در ابتدا با ساختار و يا معماری عمومی يك نرم افزار آشنا شويم.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]اغلب برنامه های كاربردی دارای سه لايه اصلی می باشند :[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]لايه Presentation:[/B] ( بالاترين لايه ) اين لايه مسئول ايجاد ارتباط متقابل بين انسان و كامپيوتر است ( رابط كاربر). لايه فوق مسئوليت گرفتن اطلاعات ورودی از صفحه كليد، ماوس و ساير دستگاههای ورودی و نمايش اطلاعات ذيربط بر روی دستگاههای خروجی نظير صفحه نمايشگر است. [/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]لايه Application يا Business Logic:[/B] لايه فوق مسئول اعمال و پياده سازی سياست های مورد نظر در يك نرم افزار است، در حقيقت با عملكرد لايه فوق است كه می توان تفاوت بين يك نرم افزار از نرم افزار ديگر را مشاهده و بعنوان مثال تفاوت بين يك نرم افزار ثبت سفارش و يا انبارداری را حس كرد.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]لايه Service:[/B] اين لايه مسئول ارائه سرويس های خاص و مورد نياز برای ساير لايه ها نظير سرويس های مربوط به فايل، چاپ، ارتباطی و از همه مهمتر دسترسی به بانك های اطلا عاتی است. در ادامه بحث خود را بر روی مجموعه ای از نرم افزارها ئی متمركز خواهيم كرد كه نيازمند سرويس های بانك اطلاعاتی باشند.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]تعداد طبقات ( Tires )، در يك نرم افزار Client Server به نحوه ارتباط ( متراكم، معمولی ) هر يك از سه لايه گفته شده بستگی خواهد داشت. در ادامه به بررسی مدل های رايج در اين زمينه خواهيم پرداخت.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]مدل One-Tire[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]در اين نوع نرم افزارها سه لايه گفته شده بصورت متراكم و فشرده در كنار يكديگر قرار می گيرند. در مدل فوق لايه Presentation دارای آگاهی خاص و جزئی از ساختار بانك اطلاعاتی است. لايه Application اغلب بصورت موجی با لايه های Presentation و Service مرتبط خواهد بود. تمام سه لايه گفته شده بهمراه بانك اطلاعاتی، اغلب بر روی يكدستگاه كامپيوتر قرار گرفته و اجرا خواهند شد. نرم افزارهائی با اين خصوصيت بسادگی طراحی شده و بكمك ابزارهای برنامه نويسی امروزی بسرعت نوشته خواهند شد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]در صورتيكه بخواهيم يك نرم افزار One-tire با چندين كاربر را طراحی نمائيم، می توان نرم افزار را بر روی چندين كامپيوتر اجرا و با به اشتراك گذاشتن بانك اطلاعاتی زمينه استفاده از داده های موجود در بانك را برای ساير كاربران نيز فراهم نمود. بانك اطلاعاتی را می توان بر روی يكدستگاه كامپيوتر معمولی در يك شبكه نظير به نظير ( Peer to Peer ) و يا بر روی يك سرويس دهنده فايل ( File Server ) نصب نمود. در اين حالت هر يك از كامپيوترهائی كه برنامه بر روی آنها اجرا می گردد می بايست دارای يك نسخه از Database Engine بوده تا قادر به استفاده از داده های موجود در بانك اطلاعاتی باشند. در اين مدل صرفا داده ها به اشتراك گذاشته شده و منطق بانك اطلاعاتی به اشتراك گذاشته نشده است. اين نوع از نرم افزارها ( چند كاربره One Tire ) تا زمانيكه تعداد كاربران كم باشد موفق عمل می نمايند ولی با افزايش تعداد كاربران، با مشكل مواجه می شوند.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]علت عمده بروز مشكل پايبند بودن اين نوع از نرم افزارها به انجام عمليات مربوط به بانك های اطلاعاتی بر روی هر يك از سرويس گيرندگان است. مثلا اگر برنامه ای از اين نوع نياز داشته باشد كه ليست تمامی كاربرانی را كه نام آنها Reza است، را نمايش دهد، می بايست تمامی اطلاعات ( ركوردهای داده و ايندكس های مربوطه ) بمنظور پاسخگوئی به درخواست واصل شده، بر روی شبكه فرستاده شود. در برخی حالا ت خاص و با توجه به پيچيدگی درخواست های صادر شده برای اطلاعاتی خاص، ممكن است تمامی بانك اطلاعاتی برای سرويس گيرنده ارسال گردد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]اگر از يك سطح فنی به مسئله فوق نگاه كنيم، مديريت Database Engine های مستقل بر روی سرويس گيرندگان بمنظور ممانعت از بروز تعارض ( Conflict ) بين دو سرويس گيرنده جهت تلاش برای دستيابی و يا بهنگام سازی برخی ركوردها مشكل است ( مسئله Record Locking ).[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]مدل Two Tire[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]بمنظور حل مشكل مطرح شده در مدل One-tire از بعد كارائی و مسائل فنی مربوطه، مدل فوق معرفی گرديد. نرم افزارهائی كه با اتكا بر مدل فوق طراحی و پياده سازی می گردنند در اغلب موارد دارای عملكردی مشابه مدل One Tire بوده با اين تفاوت مهم كه Database Engine بر روی سرويس گيرنده ها اجرا نخواهد شد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]در مدل فوق بانك اطلاعاتی بر روی سرويس دهنده اجرا می گردد. از روش های متعددی برای ارتباط بين لايه Application(Logic) و Database Service استفاده می گردد. SQL ( زبان ساختيافته پرس و جو ) از متداولترين روش های موجود در اين زمينه است. دستورات SQL به سرويس دهنده بانك اطلاعاتی ارسال شده و در آنجا عمليات مربوطه بصورت محلی انجام و نتيجه ( اطلاعات مربوط به درخواست ارسال شده ) برای سرويس گيرنده ها ارسال خواهد شد. در مدل فوق صرفا سرويس دهنده بانك اطلاعاتی از برنامه مجزا شده و لايه های Presentation و Busines Logic همچنان در هم تنيده هستند. دو لايه فوق همچنان دارای آگاهی اساسی ( محرمانه ) از بانك اطلاعاتی خواهند بود.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]نوشتن برنامه هائی از اين قبيل تا اندازه ای پيچيده تر از مدل قبل است. امروزه ابزارهای برنامه نويسی نيز مجهز به پتانسيل هائی شده اند كه طراحی و نوشتن اين نوع از برنامه ها را سرعت می بخشد. اغلب ابزارهای برنامه نويسی دارای امكاناتی جهت استفاده از DataBase Engines بوده كه می توان از آنها در طراحی برنامه های One-Tire استفاده كرد ( نظير Jet Engine كه توسط اكسس و ويژوال بيسيك استفاده می گردد) اما نرم افزارهای Two Tire نيازمند محصولات مجزای بانك اطلاعاتی نظير Oracle , IBM DB2 , Sybase و SQL Sever می باشند.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]مدل Three Tire[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]اين مدل همانگونه كه احتمالا حدس زده ايد تمامی سه لايه گفته شده را در بخش های مستقل قرار می دهد. در مدل فوق Business Logic يك سرويس است و می تواند بر روی كامپيوتر اختصاصی خود فعال و اجرا گردد. زمانيكه Business بصورت يك سرويس دهنده در نظر گرفته می شود با نام Application Server ناميده می شود. يك Application Server اغلب ممكن است بر روی همان كامپيوتری كه DataBase Engine قرار دارد، نصب گردد. شايد يكی از دلايل مهم جهت انجام اين كار افزايش كارآئی سيستم باشد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]يكی از مزايای مهم و كليدی، داشتن يك Application Server اين است كه بتوان آن را در محلی قرار داد كه به بهترين نوع ممكن خدمات خود را ارائه نمايد. در اين مدل مسئله حائز اهميت در اين است كه تمامی Application Serverها بتوانند و می بايست سرويس بانك اطلاعاتی خود را از يك كامپيوتر مركزی دريافت دارند. ( ممكن است در برخی حالات تعدادی از كاربران نرم افزار از يك Application Server كه بر روی يك كامپيوتر مجزا قرار گرفته است استفاده نمايند و يك كاربر از راه دور ممكن است Application Server را بر روی يكدستگاه كامپيوتر اختصاصی اجرا نمايد.) بهرحال محل Application Server و Database Server ارتباطی با كاربر نداشته و تمامی آنها با يك روش يكسان از نرم افزار و توانائی آن استفاده می نمايند.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]در مدل فوق لايه Presentation دارای آگاهی خصوصی از بانك اطلاعاتی نبوده و لايه فوق از طريق لايه Application Server و بكمك يك استراتژی خاص با بانك اطلاعاتی مرتبط خواهد بود. مرورگرها در حالت خاص دارای هيچگونه شناختی از ساختار بانك اطلاعاتی در سايت Amazon.com نمی باشند ولی با اين حال قادر به ارتباط با بانك اطلاعاتی و خريد يك كتاب هستند. در مدل فوق با نگرش وب، سرويس گيرنده از طريق يك پروتكل خاص با يك Application Server مرتبط می گردد. برنامه هائی از اين نوع ( مدل Three Tire ) پيچيده تر از مدل های قبلی بوده و هنوز ابزارهای برنامه نويسی خاصی در اين زمينه وجود ندارد و برنامه نويسان مجبور به نوشتن حجم بالائی از كدها خواهند بود.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]مدل N Tire[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]اين مدل امروزه بسرعت رايج و مطرح شده است. در حقيقت مدل Three Tire در حالت خاص به سمت N-Tire ميل خواهد كرد. در اين حالت يك Application Server می تواند درخواست خود را از چندين سرويس ديگر داشته باشد. هر يك از سرويس های صدا زده شده نيز خود می توانند سرويس های ديگری را جهت پاسخگوئی به درخواست واصل شده، فعال نمايند. واژه MiddleWare اغلب جهت تشريح ارتباط يك برنامه يا Business Logic بر روی يك Application Server استفاده می گردد.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]چه ميزان از Bussines Logic می بايست بر روی Application Server قرار گيرد؟[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]بدون شك يكی از بخش های مهم هر نرم افزار كه دائما می تواند دستخوش تغييرات گردد، مجموعه قوانينی است كه با اعمال آنها سياست عملكردی يك نرم افزار تعيين می گردد. مثلا در يك سيستم بازرگانی می توان قانونی را داشته باشيم كه برای خريدهای بالای يكصد هزار تومان مجوز مدير مربوطه فرض است. در اين حالت می توان قانون فوق را بصورت يك روتين ( سرويس ) و بصورت جامع طراحی و در لايه Application قرار داد، سرويس فوق می تواند توسط ساير سرويس های موجود در اين لايه و يا ساير لايه ها مورد استفاده قرار گيرد. بديهی است در صورتيكه اين سياست به نوعی تغيير نمايد و قرار شود از اين پس خريدهای بالای يكصد و پنجاه هزار تومان مكلف به تاييد مديريت مربوطه باشند، بسادگی با اعمال تغيير در روتين فوق و تزريق سياست جديد، زمينه استفاده اتوماتيك از آن برای ساير سرويس های استفاده كننده فراهم می گردد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]نحوه و زمان تغيير سياست فوق از ديدگاه استفاده كننده و لايه Presentation مهم نبوده و تغييرات بصورت خودكار در تمامی سرويس های موجود در ساير لايه ها حس خواهد شد. بنابراين مجموعه قوانين و سياست هائی كه در روند عملياتی يك نرم افزار نقش تعيين كننده ای را دارند، می بايست در لايه Application قرار گرفته تا بدينوسيله امكان درج تغييرات و اعمال سياست های جديد مركزيت يافته و مسائل مربوط به پشتيبانی و ارتقا يك نرم افزار با اطمينان خاطر و صرف كمترين زمان و هزينه صورت پذيرد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]در برخی از موارد می توان اين سياست ها را در قالب مجموعه ای از سرويس ها در لايه Presentation قرار داد. بررسی صحت داده های ورودی يك نمونه مناسب در اين زمينه است. در اين مورد اغلب قوانين جهت بررسی اعتبار و صحت داده های ورودی بر روی لايه Presentation قرار خواهد گرفت. بديهی است در چنين حالتی بجای ارسال اطلاعات بررسی نشده به لايه Application و بكارگيری يك روتين جهت بررسی صحت داده ها، می توان اين عمليات را در لايه Presentation قرار داد تا بدينوسيله از يكطرف ترافيك محيط انتقال داده ها افزايش نيابد و از طرف ديگر كاربران رودرو با لايه Presentation بازخوردهای سريعی را از سيستم داشته باشند. بهرحال در چنين حالاتی بخشی از منطق عملكرد يك نرم افزار را در لايه Presentation قرار داده ايم. در صورتيكه حجم Logic اضافه شده در لايه Presentation كم و ناچيز باشد، در اينصورت لايه فوق بصورت انحصاری مسئوليت های پيش فرض خود را دنبال خواهد كرد. در چنين وضعيتی سرويس گيرنده را Thin Client می گويند. در حالتيكه بر روی سرويس گيرنده، Logic بالائی قرار گرفته باشد، به آن Fat Client می گويند.بهترين نمونه از يك Thin Client، مرورگرهای وب بوده كه قادر به ارتباط با انواع نرم افزهائی است كه بر روی وب سايت قرار دارند.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]جمع بندی[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]واژه Client Server دارای معانی بمراتب بيشتری نسبت به جداسازی يك كامپيوتر سرويس گيرنده و سرويس دهنده از يكديگر است واژه فوق بسرعت در دنيای نرم افزار نيز مطرح و دارای جايگاه ويژه ای در اين زمينه شده است. از ديدگاه فوق يك روتين ( سرويس ) می تواند ارائه دهنده خدمات خاصی به ساير سرويس ها باشد. در چنين وضعيتی سرويس ارائه دهنده خدمات را Server و سرويس استفاده كننده از يك خدمات را Client می گويند. با تعميم سياست های طراحی نرم افزار از مدل های One Tire به Two-Tire و Three Tire و نهايتا N-Tire و تاكيد بر نگرش ساختيافته و اصولی به عملكرد هر يک از لايه ها، مفهوم روتين های سرويس دهنده ( Server ) و روتين های سرويس گيرنده (Client) جايگاه ممتازی را پيدا نمودند.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]يك سرويس می تواند در عين خدمات دهی به ساير سرويس های متقاضی، خود نيز از خدمات ساير سرويس ها استفاده نمايد. بنابراين يك سرويس دهنده در چنين حالتی بصورت اختصاصی صرفا رسالت سرويس دهی و يا سرويس گيری را انجام نخواهد داد. اگر از ديگاه هر لايه به عملكرد سرويس ها نظری داشته باشيم، قطعا تمامی آنها مسئوليت ارائه يك سرويس خاص را در لايه مربوطه برعهده خواهند داشته و قدرمطلق تمامی آنها ارائه خدمات است. مهمترين مزيت نگرش فوق حركت بi سمت توليد سرويس هائی خواهد بود كه اولا امكان استفاده از آنان در چندين نرم افزار فراهم شده و ثانيا زمينه تحقق اصل بسيار مهم استفاده مجدد از كدهای نوشته شده (Reusable Code) نيز فراهم می گردد. امروزه با توجه به نياز روزافزون به طراحی و پياده سازی نرم افزارهای متكی بر وب، مدل های Three Tire و N-Tire بشدت مورد توجه طراحان و پياده كنندگان نرم افزارهای متكی بر بستر وب قرار گرفته است.[/SIZE][/FONT]

    </TD></TR></TBODY></TABLE>

  7. #7
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post بررسی Clr

    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD colSpan=2>[SIZE=2][FONT=Arial][B]بررسی و آشنائی با محيط زمان اجرای دات نت يعنی CLR و ويژگيهای آن از جهت انتقال برنامه ها، بحث نسخه و مديريت حافظه[/B] [/FONT][/SIZE]
    [SIZE=2][FONT=Arial]<!--[URL="http://www.mycomputer.ir/index/content/view/494/51/#continue"]ادامه مقاله...[/URL] [/FONT][/SIZE]

    [SIZE=2][FONT=Arial]--><!-- Ads --><!-- <TABLE id=Table1 cellSpacing=0 cellPadding=1 align=center border=0> <TR> <TD align=center>[COLOR=#666666]آگهی[/COLOR]</TD></TR> <TR> <TD> [URL="http://senatorha.com/whatever/ads.aspx"][img]http://www.senatorha.com/forum/[/img][/URL]</TD></TR></TABLE> --><!-- Ads -->[/FONT][/SIZE]

    </TD></TR></TBODY></TABLE>

    [SIZE=2][FONT=Arial]<HR>[/FONT][/SIZE]
    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD vAlign=top>[FONT=Arial][SIZE=2]CLR يا Common Language Runtime در مرکز NET platform. واقع شده است. در حقيقت CLR عملی را که runtime ها در زبان های پيشين انجام می داند انجام می دهد. برای مثال ويژوال بيسيک 6 دارای يک Runtime مخصوص به خود بود که کارهای مديريت حافظه، فراخوانی فايلها و از اين دست اعمال را برای برنامه های بيسيک انجام می داد، همچنين ويژوال سی نيز دارای چنين ابزاری بود. CLR يک runtime مشترک است برای تمامی زبانهايی که بر مبنای NET. طراحی شده اند.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]نسخه[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]در ويژوال بيسيک 6 و کلا ً سيستم های قبلی که بر COM استوارند نسخه يک COM مساله بزرگی برای انتشار آن است. در حالی که شما می توانستيد نسخه های مختلفی از يک COM داشته باشيد ولی در استفاده از ProgID ها دارای محدوديت بوديد. برای مثال در ويژوال بيسيک هنگام استفاده از Word.Application نمی توانستيد نسخه آن را انتخاب کنيد، يعنی برای مثال Word.Application.9. در CLR تمام اجزا در GAC يا Global Assemblies Cache بار می شوند. بعبارت ديگر اطلاعات اسمبلی ها در GAC قرار می گيرند. در CLR دو ويژگی برای اسمبلی هايی که در GAC قرار می گيرند وجود دارد:[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Side-by-side versioning:[/B] بدين معنی که نسخه های مختلف يک اسمبلی در کنار هم بدون تداخل وجود دارند.[/FONT][/SIZE]
    [SIZE=2][FONT=Arial][B]Automatic QFE:[/B] اگر نسخه جديدی از يک اسمبلی که با نسخه قبلی سازگاری دارد در GAC قرار گيرد، CLR اين مساله را تشخيص می دهد و از آن لحظه به بعد از نسخه جديد استفاده می کند.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]نسخه ها در CLR از چهار قسمت Major.Minor.Revision.Build تشکيل شده اند. اگر در Major و Minor تغييری داده شود، اين بدين معناست که اين نسخه از اسمبلی ديگر با نسخه های قبلی سازگاری ندارد.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]انتقال[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]برنامه هايی که به زبان ويژوال بيسيک قديمی نوشته می شوند در هنگام انتقال به کامپيوترهای ديگر دچار مشکلات فراوان می شوند. تمامی اجزا بايد در رجيستری ثبت شوند. اگر نسخه جديدی ايجاد شود امکان دارد برنامه هايی که از نسخه قديمی استفاده می کردند را از کار بيندازد. ولی درNET. هم مساله نسخه ها تقريبا ً حل شده است و هم نحوه انتقال. کافی است در کامپيوتر مقصد NET Framework. نصب شده باشد. در اين صورت به راحتی با استفاده از دستور xcopy داس می توانيد برنامه خود را انتقال بدهيد![/FONT][/SIZE]
    [FONT=Arial][SIZE=2]شايان ذکر است که اين نوشته صرفا ً توضيح مختصری درباره هر کدام از قسمت های NET. می دهد و برای هر کدام از اين اجزا می توان يک مقاله مفصل نوشت.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]مديريت حافظه[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]درباره مديريت حافظه CLR بيشتر در زمينه VB بحث می کنيم.[/FONT][/SIZE]
    [SIZE=2][FONT=Arial][B]مديريت بهتر بر Garbage Collection:[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]Runtime در ويژوال بيسيک دارای سيستم خود کار برای Garbage Collection ها است. در ويژوال بيسيک 6، runtime به شکل خودکار منابع را از شئ هايی که ديگر توسط برنامه استفاده نمی شوند می گيرد. برای مثال فرض کنيد می خواهيم يک فايل LOG ايجاد کنيم، برای اين کار می توان از دو شئ Scripting.Stream و Scripting.FileSystemObject استفاده کرد. اگر اين دو شئ را در تابعی به کار ببريم، بعد از اتمام عمليات، runtime منابع اختصاص داده شده به اين دو شئ را می گيرد. اما مواردی وجود دارد که runtime به آسانی امکان تشخيص شئ و زمان بلااستفاده بودن آن را ندارد.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Cyclical References:[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]يکی از مهمترين زمانهايی که runtime مربوط به VB نمی تواند تشخيص بدهد که آيا يک شئ به منابعی احتياج دارد يا اينکه کارش به پايان رسيده زمانی است که در متن برنامه حالتی به نام Cyclical Reference بوجود بيايد. به عنوان مثال اگر شئ A به صورت reference از شئ B استفاده کند و همچنين شئ B از A.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]هر شئ COM مسئول نگهداری تعداد دفعاتی است که فعال شده است. بدين صورت که هر بار از روی آن ساخته شود با AddRef و هربار که يک برنامه آن را رها کند با Release از IUnKnown interface شمارنده ای را يکی افزايش يا کاهش می دهد. اگر آن شمارنده به صفر برسد شئ تمامی منابع خود را آزاد می کند، اما اگر هنگامی که يک شئ COM غير فعال شود ولی از Release استفاده نشود يک شئ بلا استفاده در حافظه می ماند.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]runtime مربوط به VB 6 اين کار را به صورت خودکار انجام می دهد، اما هنگامی که دو شئ به هم اشاره می کنند بحث فرق می کند و runtime به شکل حالت ساده نمی تواند يک شئ را از حافظه بردارد. برای مثال به قطعه برنامه زير توجه کنيد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]'Class : CCyclicalRef[/SIZE][/FONT]

    [SIZE=2][FONT=Arial]Dim m_objRef as Object[/FONT][/SIZE]

    [SIZE=2][FONT=Arial]Public Sub Initialize(objRef as Object)[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]Set m_objRef = objRef[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]End Sub[/FONT][/SIZE]

    [SIZE=2][FONT=Arial]Private Sub Class_Terminate()[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]Call Msgbox("Terminating.")[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]Set m_objRef = Nothing[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]End Sub[/FONT][/SIZE]

    [FONT=Arial][SIZE=2]در کلاس CCyclicalRef متدی با نام Initialize تعريف شده است که در پارامتر های خود يک شئ را می پذيرد و از روی آن يک شئ ديگر می سازد. حال از کلاس تعريف شده در کد زير استفاده می کنيم.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]Dim objA as New CCyclicalRef[/SIZE][/FONT]
    [SIZE=2][FONT=Arial]Dim objB as New CCyclicalRef[/FONT][/SIZE]

    [SIZE=2][FONT=Arial]Call objA.Initialize(objB)[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]Call objB.Initialize(objA)[/FONT][/SIZE]

    [SIZE=2][FONT=Arial]Set objA = Nothing[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]Set objB = Nothing[/FONT][/SIZE]

    [FONT=Arial][SIZE=2]ابتدا دو نمونه از روی کلاس CCyclicalRef با نامهای objA و objB ساختيم، حال هر دوی اين شئ ها يک بار ساخته شده اند و شمارنده آنها يک است. با استفاده از متد Initialize هر دوی شئ ها، آدرس حافظه يکديگر را مبادله می کنند و به اين شکل از روی هر دوی آنها يک بار ديگر ساخته می شود و شمارنده هر دو، 2 می شود. شماره يک مربوط به خود برنامه است و شماره دوم مربوط به شئ هايی که به هم اشاره می کنند. سپس هر دوی آنها را برابر nothing قرار می دهيم تا آنها را از حافظه حذف کنيم. در اينجا شمارنده هر دو يکی کم و برابر يک می شود. بنابراين برنامه terminate شده است ولی هنوز شئ در حافظه وجود دارد.[/SIZE][/FONT]

    [SIZE=2][FONT=Arial][B]Garbage Collector در CLR:[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]روش Garbage Collector در CLR با VB 6 Runtime تفاوت دارد. در روش جديد که خود ِ CLR و GC مسئول اجرای آن هستند، آخرين باری که از nothing استفاده می شود ولی هنوز شئ در حافظه مانده باشد، GC اين وضعيت را درک می کند و آن شئ را بعد از مدتی از حافظه خارج می کند. شئ هايی هستند که مانند COM مسئول غير فعال کردن خود نيستند، GC آنها را نيز تشخيص داده و اگر برنامه ای ديگر از آنها استفاده نکند، از حافظه حذف می شوند.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]Finalize:[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]GC متد Object.Finilize را قبل از اينکه هر شئ را از حافظه حذف کند صدا می زند. اين متد می تواند در هر زمانی بعد از اينکه برنامه ديگر از شئ استفاده نکرد صدا زده شود، لذا در هنگام استفاده از اين متد بايد نکته را در نظر گرفت. درNET. بهتر است قبل از اينکه يک شئ بوسيله nothing از بين برود از متد Dispose يا Close استفاده شود تا سريعا ً از حافظه حذف شود.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]روش سريعتر تخصيص حافظه به شئ ها[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial]هر زمان که يک برنامه يک شئ بسازد حافظه ای به آن اختصاص می يابد، آن حافظه در virtual memory است که برای هر برنامه اختصاص می يابد و به آن heap گفته می شود. CLR مفهومی به نام Managed Heap دارد بدين معنی که شئ ها را مديريت می کند و آنها را در يک Heap ِ مديريت شده قرار می دهد و CLR مسئول حفاظت آنهاست.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]از مزايای اين روش اين است که راندمان سرعت اختصاص دادن حافظه بالا می باشد. به طور کلی وقتی کُد های مديريت نشده در Heap های مديريت نشده قرار می گيرند، به دنبال جايی در حافظه می گردند که بتوانند خود را در آن قرار دهند. در CLR شئ‎ای که ساخته می شود هميشه در بالای آخرين شئ‎ای که ساخته شده در heap قرار می گيرد. تصوير مربوطه را در [/SIZE][/FONT][URL="mk:@MSITStore:D:\taimaz\1240\IranASP.NET.chm::/www.geocities.com/hamedbanaei/memorialoc.htm"][FONT=Arial][SIZE=2][U]اين آدرس[/U][/SIZE][/FONT][/URL][FONT=Arial][SIZE=2] مشاهده کنيد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]ابتدا CLR حافظه ای برای شئ های A، B و C بر روی Heap در نظر می گيرد. سپس شئ B از حافظه حذف می شود، در ادامه نيز برنامه يک شئ ديگری به نام D می سازد و آن را بر روی آخرين شئ‎ای که ساخته شده بود يعنی C قرار می دهد. اين روش برای اختصاص حافظه سريع است. اما اگر CLR به انتهای heap برسد چه عملی بايد انجام دهد؟ همان طور که مشاهده کرديد اين روش به شکل افزايشی شئ ها را در حافظه قرار می دهد. وقتی CLR ديگر نتواند از حافظه استفاده کند GC را فرا می خواند. GC هم فضاهايی مانند B را کاملا ً آزاد می کند و هم شئ ها را فشرده می کند و در پايين heap قرار می دهد تا بالای heap آزاد باشد.[/SIZE][/FONT]

    </TD></TR></TBODY></TABLE>

  8. #8
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post مروری بر ساختار برنامه های Net

    [SIZE=2][FONT=Arial][B]هر برنامه ای که بر مبنای دات نت تعريف می شود از سه قسمت مهم و اصلی تشکيل شده است: اسمبلی، ماژول و تايپ.[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial][B][/B] <!--[URL="http://www.mycomputer.ir/index/content/view/493/51/#continue"]ادامه مقاله...[/URL]

    --><!-- Ads --><!-- <TABLE id=Table1 cellSpacing=0 cellPadding=1 align=center border=0> <TR> <TD align=center>[COLOR=#666666]آگهی[/COLOR]</TD></TR> <TR> <TD> [URL="http://senatorha.com/whatever/ads.aspx"][img]http://www.senatorha.com/forum/[/img][/URL]</TD></TR></TABLE> --><!-- Ads -->[/FONT][/SIZE]
    [SIZE=2][FONT=Arial]<HR>[/FONT][/SIZE]<TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD vAlign=top>[FONT=Arial][SIZE=2]هر برنامه ای که بر مبنای NET. تعريف می شود از سه قسمت مهم و اصلی تشکيل شده است: Assemblies ، Modules و Types . اسمبلی ها اصلی ترين جز برای انتقال برنامه های NET. هستند (Deployment). ماژول ها فايلهايی هستند که اسمبلی از روی آنها ساخته می شود و تايپ ها، واحد های پايه برای تعريف داده ها، property ها و توابع هستند.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]اسمبلی ها[/B]
    اسمبلی تشکيل شده از manifest و يک يا چند فايل ماژول، XML يا HTML.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]Manifest نيز دارای اجزای زير است:[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]• اطلاعاتی درباره خود اسمبلی که به صورت text ذخيره شده است. نمونه اين اطلاعات، نام، ورژن، عمومی يا غير عمومی بودن اسمبلی و ... است.
    • نوع حفاظتی اسمبلی را توضيح می دهد. هر اسمبلی می تواند برای اجرا شدن نوع خاصی از لايه امنيتی داشته باشد که بر سه نوع است: Required ،Optional و Denied.
    • اطلاعاتی درباره اسمبلی های ديگر که يک اسمبلی به آنها وابسته است از قبيل نام و نسخه آنها.
    • اطلاعاتی از قبيل زبان محلی اسمبلی، تاريخ، واحد پول و غيره.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]ماژول ها[/B]
    ماژول ها يا فايلهای DLL هستند يا فايلهای EXE Windows PE (Portable Executable) که حاوی IL ، Meta Data و به صورت اختياری دارای manifest می باشد. هر اسمبلی فقط يک manifest می تواند داشته باشد، بنابراين اگر ماژولی حاوی manifest نيز بود فقط همان ماژول است که manifest دارد. CLR دو روش برای کامپايل هر فايل IL دارد، يکی install-time است که در زمان نصب برنامه فعال می شود و ديگری JIT يا کامپايلر just-in-time که به صورت method by method برنامه را کامپايل می کند. يعنی هنگامی که برنامه هر متد را صدا می زند کامپايل هم می شود . به صورت عادی برنامه ها به روش JIT کامپايل می شوند. Meta Data حاوی اطلاعات بيشتری درباره تعريف تايپ ها می باشد و به صورت IL است.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]تايپ ها[/B]
    تايپ ها دو نوع هستند، Value و Reference . هر تايپ دارای property ، method و field است. در ادامه درباره تايپ ها توضيحات بيشتری داده خواهد شد.[/FONT][/SIZE]
    </TD></TR></TBODY></TABLE>

  9. #9
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post ويژگيهای دات نت

    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD colSpan=2>[SIZE=2][FONT=Arial][B]آشنائی با مايکروسافت دات نت و شناخت قابليتها و بررسی ويژگيهای آن[/B] [/FONT][/SIZE]
    [SIZE=2][FONT=Arial]<!--[URL="http://www.mycomputer.ir/index/content/view/492/51/#continue"]ادامه مقاله...[/URL]

    --><!-- Ads --><!-- <TABLE id=Table1 cellSpacing=0 cellPadding=1 align=center border=0> <TR> <TD align=center>[COLOR=#666666]آگهی[/COLOR]</TD></TR> <TR> <TD> [URL="http://senatorha.com/whatever/ads.aspx"][img]http://www.senatorha.com/forum/[/img][/URL]</TD></TR></TABLE> --><!-- Ads -->[/FONT][/SIZE]
    </TD></TR></TBODY></TABLE>[SIZE=2]
    [FONT=Arial]<HR>[/FONT][/SIZE]<TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD vAlign=top>[FONT=Arial][SIZE=2]با اينکه مايکروسافت می دانست با ابزارهای قبلی شرکت می توان برنامه های اينترنتی نوشت ولی برای قبضه کردن بازار احتياج به تکنولوژی جديدی داشت . مايکروسافت از سال 1998 که ويژوال استوديو 6 را به بازار وارد کرد در پی حل اين مشکلات بود تا در سال 2000 NET. را در کنفرانس برنامه نويسان حرفه ای PDC به جهان معرفی کرد . از آن روز تا به حال مايکروسافت حدود 80 % از توانش را برای تکميل NET. مصرف کرده است . در همين راه پروتکلهای جديدی مانند SOAP يا Simple Object Access Protocol را ايجاد کرد . همچنين نسل جديدی از برنامه نويسی به عنوان Web Service را تهيه کرده است.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [B][FONT=Arial][SIZE=2]مهم ترين اهداف NET.[/SIZE][/FONT][/B]
    [SIZE=2][FONT=Arial][B]طراحی برنامه های اينترنتی بر سبک برنامه های Win32 GUI: [/B]همانطور که اشاره شد برنامه نويسی برای Win32 GUI از قدرت خوبی برخوردار است ، در NET. برنامه های اينترنتی نيز از همين قدرت برخوردارند .[/FONT][/SIZE]
    [SIZE=2][FONT=Arial][B]داشتن رابط گرافيکی خوب اينترنتي: [/B]به علت تغييرات اساسی که در برنامه در اين سيستم داده شده برنامه اينترنتی قابليت گرافيکی در حد برنامه های Win32 GUI دارند .[/FONT][/SIZE]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]انتقال ساده به سيستم های ديگر: [/B]در NET. براحتی می توان برنامه ها را با يک کپی ساده به کامپيوتر های ديگر انتقال داد .[/FONT][/SIZE]
    [SIZE=2][FONT=Arial][B]پشتيبانی از زبانهای مختلف: [/B]در NET. به زبانهای برنامه نويسی مايکروسافت مثل ويژوال بيسيک ، سی شارپ و يا ++C محدود نيستيم . به طوری که در حال حاضر نسخه های Cobol.NET و Pascal.NET در حال ساخته شدن است . اما شرکت مايکروسافت زبان ويژوال بيسيک را به عنوان زبان اصلی برگزيده است . اين مساله ريشه در تاريخ مايکروسافت دارد ![/FONT][/SIZE]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]Platform های آينده: [/B]هم اکنون NET. برای ويندوز نوشته شده است ولی در آينده نزديک نسخه های Unix و Linux و همچنين برای Mobile و PDA نيز ارائه خواهد شد . اين امر اين امکان را می دهد که برنامه ای که برای ويندوز در NET. نوشته ايد در تمامی سيستم عامل ها و دستگاه های بالا قابل اجرا باشد. در ادامه توضيحات کامل برای اين مبحث ارائه خواهد شد .[/FONT][/SIZE]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]ساختار NET.[/B]
    مهمترين ويژگی در NET. Framework اين است که تمام لايه های برنامه نويسی را در بالای سيستم عامل دربرمی گيرد . که اين شامل تمامی تکنولوژی های موجود که از طرف مايکروسافت يا شرکتهای ديگر ارائه شده است، می شود . در NET. تمام اعمال تخصيص حافظه و سازماندهی فايل برعهده NET Framework. است و همين اصل باعث می شود که بتوان برنامه هايی نوشت که به سيستم عامل متکی نباشد. در [/FONT][/SIZE][URL="mk:@MSITStore:D:\taimaz\1240\IranASP.NET.chm::/www.geocities.com/hamedbanaei/netframe.htm"][FONT=Arial][SIZE=2][COLOR=#009cff]اين آدرس[/COLOR][/SIZE][/FONT][/URL][FONT=Arial][SIZE=2] می توانيد تصوير ساختار NET. را مشاهده کنيد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]CLR زير ساختار NET.[/B]
    قلب NET Framework. همان CLR يا Common Language Runtime می باشد . CLR مسئول اجرای فايل ها ، فراخوانی آنها به حافظه و کامپايل کردن آنها به زبان MSIL يا Microsoft Intermediate Language است . بعدا ً کدهای IL در هنگام اجرا، بوسيله برنامه کامپايلر just-in-time به زبان ماشين تبديل می شود . اين بدين معناست که در NET. دو مرحله برای کامپايل شدن وجود دارد . اولين مرحله وقتی است که برنامه به هر زبان NET. که باشد به IL کامپايل می شود که اين کد کامپايل شده به IL قابليت پخش در تمام NET Framework. را دارد و بستگی به سيستم عامل ندارد . مرحله دوم زمان اجرا است که کامپايلر just-in-time کد IL را به زبان آن ماشينی که برنامه در آن می خواهد اجرا شود کامپايل می کند. CLR عهده دار برنامه نويسی شی گرا در سطح زبان های NET. است ، برای مثال شما می توانيد يک object در سی شارپ داشته باشيد و آن را در ويژوال بيسيک فرا بخوانيد و همچنين بوسيله وراثت تغييراتی در آن object بدهيد . همچنين CLR بر Garbage Collection ها نيز نظارت می کند . بحث کامل درباره CLR در ادامه خواهد آمد .[/FONT][/SIZE]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]کلاس های پايه در NET Framework.[/B]
    اين لايه حاوی تمامی کلاس ها و آبجکت هايی است که معمولا ً مورد نياز برنامه نويسان می باشد ، از جمله ADO.NET که نسل جديد ADO است ، XML که قسمت زيادی از NET. از اين تکنولوژی استفاده می کند ، Threading يا آبجکت هايی برای برنامه نويسی ِ هر thread .[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]ASP.NET و Windows Forms[/B]
    در مرحله بعدی دو روش کلی برنامه نويسی تحت اينترنت و تحت client قرار دارد که هر کدام خواص و آبجکت های مخصوص آن روش برنامه نويسی را دارا هستند .[/FONT][/SIZE]
    </TD></TR></TBODY></TABLE>

  10. #10
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Post چرا به دات نت احتياج داريم؟

    <TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD colSpan=2>[SIZE=2][FONT=Arial][B]آشنائی با دات نت و بررسی مشکلاتی که حل آنها سبب تولد دات نت گرديد.[/B][/FONT][/SIZE]
    [SIZE=2][FONT=Arial][B][/B] <!--[URL="http://www.mycomputer.ir/index/content/view/491/51/#continue"]ادامه مقاله...[/URL]

    --><!-- Ads --><!-- <TABLE id=Table1 cellSpacing=0 cellPadding=1 align=center border=0> <TR> <TD align=center>[COLOR=#666666]آگهی[/COLOR]</TD></TR> <TR> <TD> [URL="http://senatorha.com/whatever/ads.aspx"][img]http://www.senatorha.com/forum/[/img][/URL]</TD></TR></TABLE> --><!-- Ads -->[/FONT][/SIZE]
    </TD></TR></TBODY></TABLE>[SIZE=2]
    [FONT=Arial]<HR>[/FONT][/SIZE]<TABLE class=text cellSpacing=0 cellPadding=2 width="100%" border=0><TBODY><TR><TD vAlign=top>[FONT=Arial][SIZE=2]به طور معمول نسل های جديد زبان های برنامه نويسی به اين دليل متولد می شوند که زبان های قديمی تر دارای امکانات محدود بودند و يا قدرت استفاده از تکنولوژی های فعلی را به صورت مطلوب و ساده ندارند.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]مهمترين نيازی که به عنوان آخرين تکنولوژی وجود دارد، برنامه نويسی در محيط اينترنت است. اينترنت در مدت تقريبا ۸ سال جای خود را به عنوان يکی از مهمترين وسايل ارتباطی برای کارهای روزمره و تجارت باز کرده است. سيستم های برنامه نويسی قديمی تر امکان برنامه نويسی برای اينترنت را فراهم کرده بودند اما هر کدام دارای اشکالات بزرگی هستند، برای مثال تکنولوژی COM اولين بار در ويندوز به کار گرفته شد. در سال 1970 نيز سيستم هايی برای Unix نوشته شده بودند، جاوا نيز در اصل برای ابزارهای الکترونيکی بود و نه برای اينترنت.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]سپس برای اولين بار يک سيستم جامع برای برنامه نويسی تحت اينترنت ايجاد شد. اين سيستم -NET. از مراحل سطح پايين که به زبان ماشين می باشد تا بالاترين سطح که برنامه نويسی ويژوال آن می باشد برای استفاده در اينترنت طراحی شده است. البتهNET. فقط برای اينترنت نيست و با استفاده از آن می توان برنامه های کامل تحت Client نيز ايجاد کرد، اما بزرگترين مزيت آن دربرابر سيستم های ديگر امکانات اينترنت آن است.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]برای اينکه مزايای استفاده ازNET. را بهتر متوجه بشويم بهتر است در ابتدا معايب سيستم های پيشين را ذکر کنيم. شرکت مايکروسافت تا قبل از سال 1995 به برنامه نويسی در محيط های Client و Server می پرداخت، اما از آن سال به بعد توجه بيشتری به مساله برنامه نويسی در اينترنت کرد. مايکروسافت COM و +COM را ايجاد کرد و آنها را در ويژوال استوديوی 6 به کار گرفت. در سال 1999 حدود ۵۰ در صد از بزرگترين سايتهای تجارت الکترونيکی از محصولات مايکروسافت استفاده می کردند. اما هنوز هم مشکلات بزرگی در سيستم های مايکروسافت وجود داشت که يکی از آنها دشواری نوشتن برنامه در اينترنت با محصولات مايکروسافت بود. شرکت مايکروسافت برای راحتی کار برنامه نويس ها ASP يا Active Server Page را ايجاد کرد. با اينکه اين يک قدم بزرگ بود و کارها را بسيار ساده کرد ولی هنوز از برنامه نويسی شی گرا پشتيبانی نمی کرد. همچنين در ويژوال استوديوی 6 قسمتی برای Internet Application ايجاد شده بود و در آنها امکان ساختن Web Class وجود داشت ولی هيچ وقت به عنوان يک ابزار کار آمد برای برنامه نويسی وب درنظر گرفته نشد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]مدل برنامه نويسی DNA[/B]
    مايکروسافت يک مدل برنامه نويسی به نام Distributed interNet Application دارد که بر پايه برنامه نويسی n-tier و COM بنا نهاده شده است. مدل DNA از سه بخش اساسی تشکيل شده است.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2]بخش اول به نام Presentation tire معروف است. در اين بخش رابط تصويری کاربر وجود دارد و خود نيز به دو نوع Internet Browser و Win 32 GUI تقسيم می شود که هر کدام مشکلات خاص خود را دارند. در مدلی که از Win32 GUI يا همان نرم افزارهای معمولی استفاده می شود دو مشکل بزرگ وجود دارد ؛ دشواری بروز رسانی نرم افزار و ديگری DLL Hell که در ادامه توضيح داده خواهد شد. در نوع دوم مشکلاتی از قبيل نبود امکانات برنامه نويسی کافی در محيط مرورگر، نبود رابط قوی با کاربر، نبودن مرورگر های يکسان و... وجود دارد. همچنين هميشه يک اتصال به اينترنت يا اينترانت لازم است. در اين نوع از برنامه نويسی می توان از Java Applet ها يا ActiveX استفاده کرد ولی مرورگر بايد امکان استفاده از آن را داشته باشد، مخصوصا ً هنگام استفاده از ActiveX که بايد فقط از IE استفاده کرد.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]بخش دوم که Middle tier نام دارد، مکانی است که اطلاعات و قوانين تجاری در آن وجود دارد. منظور از قوانين ، متد ها و اجزائی هستند که اعمال کاربران را کنترل می کنند. مهمترين و آسان ترين زبان برای نوشتن اين اجزا از DNA ويژوال بيسيک است. برنامه نويسی که بخواهد در اين رده برنامه بنويسد بايد آشنايی کاملی با COM و پروتکل های رايج داشته، همچنين بايد مهارت کافی در استفاده از ADO و ADSI داشته باشد. مشخص است که يک اشتباه در اين لايه باعث بروز خطا و نقص در کل سيستم می شود.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2]بخش سوم يا Data tier مکانی است که اطلاعات سازمان در آن ذخيره می شود. معمولا ً در اين قسمت از بانکهای پيشرفته رابطه ای مانند SQL Server و Oracle استفاده می کنند.[/SIZE][/FONT]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]محدوديت های COM[/B]
    همانطور که ديديد مهمترين قسمت در DNA همان COM است که در جای جای آن استفاده می شود. در اينجا برخی معايب COM ذکر می شود : ( در ابتدای متن ذکر شد که برای درک نياز بهNET. بايد ابتدا معايب سيستم های قديمی را بشناسيم )[/FONT][/SIZE]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]DLL Hell:[/B] اگر کوچکترين تغييری در يک COM ايجاد شود، ديگر برنامه هايی که از ورژن قبلی استفاده می کردند قادر به فعال ساختن نسخه جديد نيستند. هنگامی که در ويندوز، يک COM نصب شود برايش در رجيستری يک GUID ثبت می شود که اطلاعات آن COM را در خود ذخيره می کند. اگر يک برنامه از نسخه اول يک COM استفاده کند و بعد از مدتی شما تغييراتی در نسخه اول بدهيد و بخواهيد آن را دوباره در سيستم نصب کنيد ويندوز به شما پيغام خطا می دهد چون ورژن آن تکراری است، اگر هم آن را به ورژن دوم ارتقا دهيد نرم افزار قبلی هنوز به دنبال نسخه اول می گردد. اين امر باعث می شود که شما مجبور شويد يکبار ديگر کل برنامه را کامپايل کرده و در کامپيوترتان نصب کنيد.[/FONT][/SIZE]
    [SIZE=2][FONT=Arial][B]کمبود در وراثت:[/B] در نسخه های COM که در حال حاضرهستند چيزی به نام وراثتی که در ++C وجود دارد نمی باشد، بلکه وراثت تنها در واسط يک COM می باشد، استفاده از آن هم چندان کمکی به برنامه نويسی نمی کند.[/FONT][/SIZE]
    [B][FONT=Arial][SIZE=2]برخی محدوديت های برنامه نويسی اينترنتی در مدل DNA[/SIZE][/FONT][/B]
    [SIZE=2][FONT=Arial][B]۱- وجود دو محيط برنامه نويسی برای اينترنت و Client[/B]
    نقصان در نوشتن برنامه هايی با رابط گرافيکی خوب که در اينترنت کار می کردند کاملا ً مشهود است، نمونه بارز آن اختلاف در برنامه نويسی در ويژوال بيسيک و ASP است. ويژوال بيسيک با رابط گرافيکی کاملا ً سطح بالا و ASP تقريبا ً رابط گرافيکی ندارد. همين امر باعث می شد که يک برنامه نويس مجبور باشد طيف وسيعی از تکنيک ها و زبان ها را فرابگيرد تا بتواند برنامه ساده ای در اينترنت بنويسد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]۲- نبودن حالت های ذخيره اطلاعات رابط گرافيکی در صفحه های اينترنتی[/B]
    نمونه اين حالت زمانی است که در يک textbox متنی وجود داشته باشد. در برنامه های Win32 GUI متن داخل textbox تا زمانی که کاربر يا برنامه آن را تغيير نداده بر جای خود وجود دارد. اما در محيط اينترنت و نوع ASP با هر بار refresh کردن صفحه کل اطلاعات ازبين می رود. البته اين مشکل با استفاده از شئ های Request و Response تقريبا ً قابل حل است ولی احتياج به برنامه نويسی برای هر تکه از صفحه ASP دارد.[/FONT][/SIZE]
    [FONT=Arial][SIZE=2][/SIZE][/FONT]
    [SIZE=2][FONT=Arial][B]۳- نداشتن Event Handler در محيط برنامه نويسی اينترنت[/B]
    يکی از مهمترين ابزاری که در برنامه نويسی Win32 GUI وجود دارد استفاده از Event ها است. با تکنولوژی که در حال حاضر وجود دارد تنها راه رسيدن به اين مهم استفاده از ActiveX است که به علت مسايل امنيتی در بيش از ۹۵ در صد مواقع توسط کاربر استفاده از آن رد می شود.[/FONT][/SIZE]

    [SIZE=2][FONT=Arial][B]معايب استفاده از API[/B]
    API ها توابعی هستند که از ويندوز نسخه 1 تا امروز در برنامه نويسی کاربرد داشته و دارند. مهمترين کاری که اين توابع انجام می دهند انجام کارهای سخت و سطح پايين سيستمی است که احتياج به برنامه نويسی زيادی دارند و يا حتی امکان ايجاد آن با زبان هايی مثل ويژوال بيسيک نيست. اما هر API از هر نسخه ويندوز تا نسخه ديگر آن می تواند دچار تغييرات بشود. برای مثال برنامه ای که در ويندوز 98 نوشته شده باشد می تواند در ويندوز 95 اجرا نشود. همچنين هم اکنون ابزارهای جديدی به بازار آمده است که برای آنها نيز می توان برنامه نويسی کرد، مانند تلفن های سيار، کيوسک تلفن، دستگاه های کامپيوتری جيبی و غيره. در اين نوع دستگاه ها ديگر ويندوز به مفهومی که در حال حاضر وجود دارد قابل اجرا نيست و در نتيجه API هم وجود ندارد. لازم به ذکر است که ويندوز CE برای دستگاه های مذکور می باشد ولی قابليت های آن با ويندوزهای ديگر تفاوت زيادی دارد.[/FONT][/SIZE]
    </TD></TR></TBODY></TABLE>

صفحه 1 از 3 123 آخرینآخرین

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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