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

What is JSON?

  • JSON stands for JavaScript Object Notation
  • JSON is lightweight text-data interchange format
  • JSON is language independent *
  • JSON is "self-describing" and easy to understand 
  •  
  • Much Like XML

    • JSON is plain text
    • JSON is "self-describing" (human readable)
    • JSON is hierarchical (values within values)
    • JSON can be parsed by JavaScript
    • JSON data can be transported using AJAX

    Much Unlike XML

    • No end tag
    • Shorter
    • Quicker to read and write
    • Can be parsed using built-in JavaScript eval()
    • Uses arrays
    • No reserved words

    Why JSON?

    For AJAX applications, JSON is faster and easier than XML:

    Using XML

    • Fetch an XML document
    • Use the XML DOM to loop through the document
    • Extract values and store in variables

    Using JSON

    • Fetch a JSON string
    • eval() the JSON string 

    <h2>JSON Object Creation in JavaScript</h2>

    <p>

    Name: <span id="jname"></span><br> 

    Age: <span id="jage"></span><br>

    Address: <span id="jstreet"></span><br>

    Phone: <span id="jphone"></span><br>

    <select

    </p> 

    <script>

        var JSONObject = {

            "name": "John Johnson",

            "street": "Oslo West 16",

            "age": 33,

            "phone": "555 1234567"

        };

        document.getElementById("jname").innerHTML = JSONObject.name

        document.getElementById("jage").innerHTML = JSONObject.age

        document.getElementById("jstreet").innerHTML = JSONObject.street

        document.getElementById("jphone").innerHTML = JSONObject.phone 

    </script>

WCF چیست؟

WCF یا Windows Communication Foundation چیست؟ Windows Communication Foundation یا (WCF)، یک قالب کاری بر ای ساختن برنامه های سرویس گرا است. با استفاده از WCF می توانید داده ها را به صورت پیام هایی از یک درگاه سرویس به درگاهی دیگر ارسال کند. یک درگاه سرویس (service endpoint) می تواند بخشی از سرویس همیشه در دسترسی باشد که توسط IIS، میزبانی می شود، یا می تواند سرویسی باشد که توسط یک برنامه میزبانی می شود. یک درگاه می تواند client یک سرویس باشد که داده ها را از درگاه سرویس request می کند. پیام ها می توانند به سادگی یک کاراکتر واحد یا یک کلمه باشند که به صورت XML ارسال شده است. یا به پیچیدگی یک رشته از داده های binary. چند سناریوی نمونه شامل موارد زیر می شود: یک سرویس امن برای مبادلات تجاری سرویسی که داده های کنونی را برای دیگران مهیا می کند، از قبیل گزارش ترافیک یا دیگر سرویس های مانیتورینگ. یک سرویس چت که به دو نفر اجازه می دهد با هم در ارتباط باشند یا داده ها را به هم رد و بدل کنند. یک برنامه dashboard که داده های یک یا چندین برنامه را جمع آوری می کند و در یک presentation منطقی نمایش می دهد. Expose کردن یک workflow پیاده سازی شده با استفاده از Windows Workflow Foundation به صورت یک سرویس WCF. یک برنامه Silverlight برای جمع آوری آخرین فیدهای داده ها. در حالی که ایجاد چنین برنامه هایی قبل از وجود WCF ممکن بود، WCF توسعه درگاه ها را از قبل آسانتر می کند. به طور خلاصه، WCF جهت ارائه روشی قابل مدیریت برای ایجاد سرویس های وب و clientهای سرویس وب، طراحی شده است. ویژگی های WCF WCF شامل مجموعه ویژگی های زیر است. گرایش به سرویس یکی از نتایج استفاده از استانداردهای WS این است که WCF شما را قادر به ایجاد برنامه های سرویس گرا می کند. معماری های سرویس گرا (SOA) ،به معنای وابستگی به وب سرویس ها جهت ارسال و دریافت داده ها است. این سرویس ها مزیت loosely-coupled بودن بجای hard-coded بودن از برنامه ای به برنامه دیگر هستند. یک رابطه loosely-coupled بدین معناست که هر client ایجاد شده در هر plaftorm می تواند تا وقتی که contractهای لازم برآورده می شوند، به هر سرویسی وصل شود. Interoperability WCF، استانداردهای صنعتی مدرن را برای interoperability سرویس های وب پیاده می کند. الگوهای پیام چندگانه پیام ها با استفاده یکی از چندین الگو مبادله می شوند. یکی از رایج ترین الگوها، الگوی request/reply است، که یک درگاه داده ها را از یک درگاه دیگر request می کند، و آن درگاه پاسخ می دهد. الگوهای دیگری نیز وجود دارند، مانند یک پیام یک طرفه (one-way) که در آن یک درگاه واحد پیامی را بدون درخواست پاسخ ارسال می کند. الگویی پیچیده تر، الگوی تبادل دوگانه است که دو درگاه یک connection یرقرار می کنند و داده ها را ردوبدل می کنند، مانند یک برنامه پیام نگاری سریع. Service Metadata WCF، با استفاده از فرمت های معین شده در استانداردهای صنعتی از قبیل WSDL، XML Schema و WS-Policy، انتشار service metadata را ساپورت می کند. می توان از این metadata، بر ای پیکربندی و generate کردن اتوماتیک client بمنظور دسترسی به سرویس های metadata استفاده کرد. می توان metadata را با استفاده از استاندارد Web Service Metadata Exchange در HTTP یا HTTPS منتشر کرد. Data Contracts از آنجاییکه WCF با استفاده از .NET Framework ساخته شده است، متدهای code-friendly برای تامین contractهایی که می خواهید اجرا کنید را نیز در بر می گیرد. یکی از انواع جهانی contractها، data contract است. در واقع، هنگامی که سرویس تان را با استفاده از Visual C# یا Visual Basic کد نویسی می کنید، اسانترین راه یرای مدیریت داده ها، ایجاد کلاس هایی است که موجودیت داده ها را با propertyهایی که به موجودیت داده ها تعلق دارند، نمایش می دهند. WCF شامل یک سیستم جامع برای کارکردن با داده ها به روشی آسانتر است. بعد از اینکه کلاس هایی را که داده ها را نمایش می دهند، وارد کردید، سرویس شما به طور اتوماتیک metadata را generate می کند. امنیت می توان پیام ها را برای محافظت از حریم خصوصی رمزگذاری کرد و می توان کاربران را ملزم کرد قبل از مجاز شدن به دریافت پیا ها، خودشان را authenticate کنند. امنیت را می توان با استفاده از استانداردهای شناخته شده از قبیل SSL یا WS-SecureConversation پیاده سازی کرد. Transportها و Encodingهای چندگانه پیام ها را می توان با هریک از چندین پروتکل و رمزگذاری transport داخلی ارسال کرد. رایج ترین پروتکل و رمزگذاری، ارسال پیام های SOAP متنی رمزگذاری شده با استفاده از HTTP برای استفاده در WWW است. متناوباً، WCF به شما اجازه ارسال پیام ها در TCP، یا MSMQ را می دهد. این پیام ها را می توان به صورت متن یا با استفاده از یک فرمت binary بهینه شده، رمزگذاری کرد. داده ها binary را می توان با استفاده از استاندارد MTOM به طور موثری ارسال کرد. اگر هیچ یک از transportها یا encodingهای موجود، نیاز شما را برآورده نکنند، می توانید transport یا encodingهای دلخواه خودتان را ایجاد کنید. پیام های قابل اعتماد و به صف شده (queued) WCF با استفاده از sessionهای پیاده شده روی WS-Reliable Messaging، پیام های قابل اعتماد را ساپورت می کند. پیام های مدت دار (Durable) پیام مدت دار، پیامی است که در صورت وقوع اختلال در ارتباط، هرگز از دست نمی رود. پیام ها در الگوی پیام مدت دار، همیشه در database ذخیره می شوند. اگر اختلالی روی دهد، database به شما اجازه می دهد هنگامی که connection به حالت اول بازمی گردد، به تبادل پیام ادامه دهید. همچنین می توانید با استفاده ازWorkflow Foundation ، یک پیام مدت دار ایجاد کنید. تراکنش ها WCF، تراکنش ها را هم با استفاده از یکی از این سه مدل تراکنش ساپورت می کند: AtomicTtransactions، APIها در فضای نامی System.Transactions، و Microsoft Distributed Transaction Coordinator. Ajax و ساپورت Rest REST، نمونه ای از تکنولوژی وب 2 در حال تکامل است. می توان WCF را برای پردازش داده های XML ساده پیکربندی کرد. همچنین می توان WCF را برای ساپورت از فرمتهای خاص XML از قبیل ATOM، که یک استاندارد محبوب RSS است، و حتی فرمت های غیر XML از قبیل JavaScript Object Notation، گسترش داد. توسعه پذیری (Extensibility) معماری WCF دارای چندین نکته توسعه پذیری است. اگر نیاز به قابلیت اضافی باشد، نکاتی وجود دارند که به شما اجازه سفارشی کردن رفتار یک سرویس را می دهند. ادغام WCF با دیگر تکنولوژی های مایکروسافت WCF یک platform قابل انعطاف است. به علت وجود این انعطاف پذیری، WCF در چندین محصول دیگر مایکروسافت نیز قابل استفاده است. اولین تکنولوژی که با WCF شریک شد، Windows Workflow Foundation یا (WF) بود. Workflow، توسعه برنامه را از طریق کپسوله کردن مراحل در workflow به صورت "activities"، ساده می کند. در نسخه اول Windows Workflow Foundation، برنامه نویس مجبور بود یک هاست برای workflow ایجاد کند. نسخه بعدی Windows Workflow Foundation با WCF ادغام شد. این کار به هر workflow اجازه می داد براحتی در سرویس WCF ذخیره شود؛ می توان این کار را با انتخاب اتوماتیک WF/WCF بعنوان یک project type در Visual Studio 2010 انجام داد. همچنین Microsoft BizTalk Server R2 از WCF به عنوان یک تکنولوژی برای برقراری ارتباط استفاده می کند. BizTalk جهت دریافت و انتقال داده ها از یک فرمت استاندارد به فرمتی دیگر طراحی شده است. پیام ها باید به box مرکزی پیام ها یعنی جاییکه می توان با استفاد ه از یک مپینگ دقیق یا یکی از ویژگی های BizTalk، از قبیل موتور workflow، پیام ها را منتقل کرد. BizTalk الان از آداپتور WCF Line of Business یا (LOB) جهت تحویل پیام ها به box پیام استفاده می کند. Microsoft Silverlight، یک platform برای ایجاد برنامه های وب پیشرفته و interoperable است که به برنامه نویسان اجازه می دهد وب سایتهای حساس به رسانه (media-intensive) ایجاد کنند. نسخه دوم Silverlight، WCF را به عنوان یک تکنولوژی برقراری ارتباط جهت متصل کردن برنامه های Silverlight به درگاه های WCF، ترکیب کرده است. Microsoft .NET Services، یک برنامه محاسبه گر است که از WCF برای ساختن برنامه های تحت وب استفاده می کند. می توان از NET Services برای ایجاد سرویس های WCF استفاده کرد. ویژگی های میزبانی سرور برنامه Windows Server AppFabric بطور ویژه ای برای نصب و مدیریت برنامه هایی که از WCF جهت برقراری ارتباط استفاده می کند، ساخته شده است. این ویژگی ها شامل ابزارهایی پیشرفته و پیکربندی آپشن هایی است که بطور ویژه برای برنامه های تحت WCF طراحی شده اند.

روش بازخوانی 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 استفاده کنید .