Programming techniques

about every things that i''m learning and want learn to other people

Programming techniques

about every things that i''m learning and want learn to other people

روش بازخوانی view state از کد Html

Byte[] stringByte = Convert.FromBase64String(Our ViewState String);String decodedViewState = System.Text.Encoding.ASCII.GetStringstringByte);

تفاوت ViewState با Cookie یا Session چیست ؟

ابن از اون سوالایی که تا می گی  .Asp.net بلدی ازت می پرسن... 

ViewState چیزی نیست جز یک کنترل Hidden از نوع Html Controls ، که قادر است هر مقداری را در خود ذخیره کند ، دات نت از این کنترل برای ذخیره کردن مقادیر مختلف استفاده می کند تا بتواند حالت ماندگاری صفحه را در هنگام PostBack حذف نماید . مقادیر موجود در ViewState توسط دات نت کد شده و در هنگام بازخوانی دی کد می شوند .

به عنوان مثال :

1.<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="Wb2YxX5ub+WyZf12Rw+MtycHue7g==" />

با این تفاسیر واضح است که در صورتی که از صفحه ای به صفحه دیگر منتقل شوید مقادیر داخل ViewState حذف خواهند شد .

Cookie ها فایل هایی هستند که توسط مرورگر سرویس گیرنده (Client) در کامپیوتر او ذخیره می شوند ، تمامی مرورگر ها از کوکی پشتیبانی می کنند ، کوکی ها محل خوبی برای ذخیره اطلاعاتی مانند نام کاربری و رمز عبور و ....می باشد . کوکی ها دارای تاریخ انقضا بوده و میتوانید آن ها را به مدت طولانی نگه دارید ، همچنین با جابجا شدن از یک صفحه به صفحه دیگر و یا حتی بسته شدن مرورگر از بین نمی روند (البته به صورت پیشفرض با بسته شدن مرورگر از بین می روند ولی میتوان برای آن ها تاریخ انقضا تعریف کرد)

میتوانید در مرورگرتان کوکی ها را جستجو و مشاهده کنید .

Session برخلاف کوکی در سرویس دهنده (Server) ذخیره می شود مکان ذخیره Session را میتوان تغییر داد ولی به صورت پیشفرض در حافظه ذخیره می شود برای هم به سرعت قابل دسترسی است ، در هنگام ساخت یک جلسه (Session) یک کوکی هم در سرویس گیرنده با مقدار آیدی Session ایجاد می گردد ، این به این دلیل است که مقادیر Session عمومی نیست و باید به اضای هر کاربر ایجاد گردد .

نکته مهم این است که به این دلیل که Session در حافظه سرور ذخیره می شود و حافظه از منابع بسیار مهم سرور به حساب می آید استفاده نا بجا از آن می تواند به سرور لطمه وارد کند ، البته معمولا سرویس دهندگان میزبانی زمانی را جهت TimeOut شدن Session قرار میدهند تا مشکلی از نظر مدیریت حافظه پیش نیاید . بنابراین شما قادر نخواهید بود مقادیری را برای مدت طولانی در حافظه ذخیره کنید مگر اینکه محل ذخیره Session را تغییر دهید .

جمع بندی :

  1. اگر میخواهید مقداری را در یک صفحه از متدی به متد دیگر یا از رویدادی به رویداد دیگر منتقل کنید بهترین روش استفاده از ViewState است .
  2. اگر میخواهید اطلاعاتی را از صفحه به صفحه دیگر منتقل کنید بهترین روش استفاده از پست صفحه (متد Get یا QueryString و متد Post ) و Cookie است . 
  3. اگر میخواهید اطلاعاتی را بین صفحات جابجا کنید و این اطلاعات موقت بوده و همچنین نباید به دست کلاینت بیافتد از Session استفاده کنید .

ViewState چیزی نیست جز یک کنترل Hidden از نوع Html Controls ، که قادر است هر مقداری را در خود ذخیره کند ، دات نت از این کنترل برای ذخیره کردن مقادیر مختلف استفاده می کند تا بتواند حالت ماندگاری صفحه را در هنگام PostBack حذف نماید . مقادیر موجود در ViewState توسط دات نت کد شده و در هنگام بازخوانی دی کد می شوند .

به عنوان مثال :

1.<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="Wb2YxX5ub+WyZf12Rw+MtycHue7g==" />

با این تفاسیر واضح است که در صورتی که از صفحه ای به صفحه دیگر منتقل شوید مقادیر داخل ViewState حذف خواهند شد .

Cookie ها فایل هایی هستند که توسط مرورگر سرویس گیرنده (Client) در کامپیوتر او ذخیره می شوند ، تمامی مرورگر ها از کوکی پشتیبانی می کنند ، کوکی ها محل خوبی برای ذخیره اطلاعاتی مانند نام کاربری و رمز عبور و ....می باشد . کوکی ها دارای تاریخ انقضا بوده و میتوانید آن ها را به مدت طولانی نگه دارید ، همچنین با جابجا شدن از یک صفحه به صفحه دیگر و یا حتی بسته شدن مرورگر از بین نمی روند (البته به صورت پیشفرض با بسته شدن مرورگر از بین می روند ولی میتوان برای آن ها تاریخ انقضا تعریف کرد)

میتوانید در مرورگرتان کوکی ها را جستجو و مشاهده کنید .

Session برخلاف کوکی در سرویس دهنده (Server) ذخیره می شود مکان ذخیره Session را میتوان تغییر داد ولی به صورت پیشفرض در حافظه ذخیره می شود برای هم به سرعت قابل دسترسی است ، در هنگام ساخت یک جلسه (Session) یک کوکی هم در سرویس گیرنده با مقدار آیدی Session ایجاد می گردد ، این به این دلیل است که مقادیر Session عمومی نیست و باید به اضای هر کاربر ایجاد گردد .

نکته مهم این است که به این دلیل که Session در حافظه سرور ذخیره می شود و حافظه از منابع بسیار مهم سرور به حساب می آید استفاده نا بجا از آن می تواند به سرور لطمه وارد کند ، البته معمولا سرویس دهندگان میزبانی زمانی را جهت TimeOut شدن Session قرار میدهند تا مشکلی از نظر مدیریت حافظه پیش نیاید . بنابراین شما قادر نخواهید بود مقادیری را برای مدت طولانی در حافظه ذخیره کنید مگر اینکه محل ذخیره Session را تغییر دهید .

جمع بندی :

  1. اگر میخواهید مقداری را در یک صفحه از متدی به متد دیگر یا از رویدادی به رویداد دیگر منتقل کنید بهترین روش استفاده از ViewState است .
  2. اگر میخواهید اطلاعاتی را از صفحه به صفحه دیگر منتقل کنید بهترین روش استفاده از پست صفحه (متد Get یا QueryString و متد Post ) و Cookie است .
  3. اگر میخواهید اطلاعاتی را بین صفحات جابجا کنید و این اطلاعات موقت بوده و همچنین نباید به دست کلاینت بیافتد از Session استفاده کنید .

ViewState چیزی نیست جز یک کنترل Hidden از نوع Html Controls ، که قادر است هر مقداری را در خود ذخیره کند ، دات نت از این کنترل برای ذخیره کردن مقادیر مختلف استفاده می کند تا بتواند حالت ماندگاری صفحه را در هنگام PostBack حذف نماید . مقادیر موجود در ViewState توسط دات نت کد شده و در هنگام بازخوانی دی کد می شوند .

به عنوان مثال :

1.<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="Wb2YxX5ub+WyZf12Rw+MtycHue7g==" />

با این تفاسیر واضح است که در صورتی که از صفحه ای به صفحه دیگر منتقل شوید مقادیر داخل ViewState حذف خواهند شد .

Cookie ها فایل هایی هستند که توسط مرورگر سرویس گیرنده (Client) در کامپیوتر او ذخیره می شوند ، تمامی مرورگر ها از کوکی پشتیبانی می کنند ، کوکی ها محل خوبی برای ذخیره اطلاعاتی مانند نام کاربری و رمز عبور و ....می باشد . کوکی ها دارای تاریخ انقضا بوده و میتوانید آن ها را به مدت طولانی نگه دارید ، همچنین با جابجا شدن از یک صفحه به صفحه دیگر و یا حتی بسته شدن مرورگر از بین نمی روند (البته به صورت پیشفرض با بسته شدن مرورگر از بین می روند ولی میتوان برای آن ها تاریخ انقضا تعریف کرد)

میتوانید در مرورگرتان کوکی ها را جستجو و مشاهده کنید .

Session برخلاف کوکی در سرویس دهنده (Server) ذخیره می شود مکان ذخیره Session را میتوان تغییر داد ولی به صورت پیشفرض در حافظه ذخیره می شود برای هم به سرعت قابل دسترسی است ، در هنگام ساخت یک جلسه (Session) یک کوکی هم در سرویس گیرنده با مقدار آیدی Session ایجاد می گردد ، این به این دلیل است که مقادیر Session عمومی نیست و باید به اضای هر کاربر ایجاد گردد .

نکته مهم این است که به این دلیل که Session در حافظه سرور ذخیره می شود و حافظه از منابع بسیار مهم سرور به حساب می آید استفاده نا بجا از آن می تواند به سرور لطمه وارد کند ، البته معمولا سرویس دهندگان میزبانی زمانی را جهت TimeOut شدن Session قرار میدهند تا مشکلی از نظر مدیریت حافظه پیش نیاید . بنابراین شما قادر نخواهید بود مقادیری را برای مدت طولانی در حافظه ذخیره کنید مگر اینکه محل ذخیره Session را تغییر دهید .

جمع بندی :

  1. اگر میخواهید مقداری را در یک صفحه از متدی به متد دیگر یا از رویدادی به رویداد دیگر منتقل کنید بهترین روش استفاده از ViewState است .
  2. اگر میخواهید اطلاعاتی را از صفحه به صفحه دیگر منتقل کنید بهترین روش استفاده از پست صفحه (متد Get یا QueryString و متد Post ) و Cookie است . 
  3. QueryStringساده ترین و پر کابردترین و شاید بهترین راه انتقال اطلاعات بین صفحات 
  4. در حقیقت رشته ای از حروف هستند که به دنبال آدرس صفحه مورد نظر و بعد از کاراکتر ؟ ظاهر میگردند و در بردارنده یک متغیر به همراه یک مقدار اختصاص یافته میباشند )
  5. اگر میخواهید اطلاعاتی را بین صفحات جابجا کنید و این اطلاعات موقت بوده و همچنین نباید به دست کلاینت بیافتد از Session استفاده کنید .

آیا می خواهیداز برنامه های تحت ویندوز خود در وب استفاده نمایید؟

 راحل حل بسیار جالب Citrix

Citrix Systems, Inc .  در ویکی پدیا

 

 (NASDAQCTXS) is a multinational corporation founded in 1989, that provides server and desktop virtualization, networking, software-as-a-service (SaaS), and cloud computing technologies, including Xen open source products.

Citrix currently services around 230,000 organizations worldwide[3] and is based in Fort Lauderdale, Florida, in the South Florida metropolitan area, with subsidiary operations in California and Massachusetts, and additional development centers in Australia, India, Canada and the United Kingdom.

Following the acquisition of XenSource, Inc. in October 2007, Citrix spearheads the Xen open source hypervisor project.  

 

اصول Entity Framwork Code First

اصول  Entity Framwork Code First

یک مقاله خیلی عالی از همکارم آقای وحید حسنی

چگونه می توان یک تابع را به هر نوع کلاسی اضافه کرد ؟

 

Extension Methods

·         آیا به کلاس های  sealed می توان تابعی افزود ؟

·         چگونه می توان یک تابع را به هر نوع  کلاسی اضافه کرد ؟

·         آیا می توان یک کلاس را در خارج از بدنه کلاس تعمیم و یا این کار را در فضای نام همان کلاس یا خارج از آن انجام داد؟

 جواب این پرسش ها در Extension Methods می باشد

قبل از C# 3.0  فقط می‌شد یک کلاس را از طریق ارث‌بری از آن توسعه داد اما حالا اکنون میتوان با متد های توسعه این کار را انجام داد

توابع تعمیم یافته به اعضاء خصوصی کلاسی که تعمیم می‌یابد، دسترسی ندارند.

 شکل کلی توابع تعمیم یافته :

 

public static class ExtendingClassName

{

public static ReturnType MethodName(this   ExtendedMethod arg)

{

//دستورات درون متد

Return ReturnType;

}

}

 

 توجه کنید که:

1.       کلاس توسعه‌دهنده و تابع توسه‌دهنده باید استاتیک باشند.

2.       در داخل آرگومان تابع، کلمه کلیدی this  استفاده می‌‎‎شود.

3.       بعد از this عنوان کلاسی که قصد توسعه آن را داریم، ذکر می‌کنیم.

4.       در هرجا که خواستیم از قابلیت تعمیم داده شده استفاده کنیم باید فضای نام مربوط به آن را ذکر کنیم.

5.       با کلمه کلیدی static  نمیتوان کلاسی با متدهایvirtual  ، abstract  و override را توسعه داد. 

 

 public static class ExtendingString

    {

        public static string AddPrefix(this   string arg, string prefix)

        {

            return String.FormatFormat("{0}{1}", prefix, arg);

        }

    }

 

//call method

            var s = "Student";

            Console.WriteLine(s.AddPrefix("tbl"));

 

// خروجی

 tblStuden


 http://msdn.microsoft.com/en-us/library/bb383977.aspx

http://csharp.net-tutorials.com/csharp-3.0/extension-methods/