وبلاگ تیم IranDNN

rss

در این وبلاگ آخرین رویدادهای ما را دنبال کنید و ما را در توسعه یاری دهید.

Specify Alternate Text

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

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

Specify Alternate Text

سطوح جزئیات نمودار مورد کاربرد به صورت زیر دسته بندی می شود:
 

سطح

گرایش

توضیحات

ابر

هدف

بالاترین سطح خلاصه می­ باشد. در این سطح use case نشان دهنده راه های رسیدن به هدف است، که به شدت خلاصه شده است، به عنوان مثال: پول

بادبادک

نیازمندی ها

این سطح هنوز در حالت خلاصه می­ باشد، اما کمی جزئیات بیشتری در آن مشاهده می­شود.

دریا

اهداف کاربر

در این سطح کاربران و چگونگی رسیدن به هدف در تعامل با هم اند. افرادی که با فرآیند RUP آشنا هستند، با این سطح از use case مانوس هستند. یک use case واحد در این سطح توصیف یک فرآیند کسب و کار ابتدایی واحد است.

ماهی

کارکردها

در این سطح، use case ها دوباره و دوباره به عنوان بخشی از سطح دریا مورد استفاده قرار می گیرند. از این سطح به عنوان سطح زیرین عملکرد اشاره شده است.

صدف

کارکردهای کوچک

use case ها در این سطح نباید به عنوان مورد کاربرد تعریف شوند، بلکه باید به عنوان مراحل دیگر  use caseها ظاهر شوند. به عنوان مثال قرار دادن مشتریان جدید در پایگاه داده. این سطح پایین ترین سطح می­باشد.

 
به طور کلی می توان سطوح مختلف موارد کاربرد را به صورت زیر توضیح داد:
  1. سطح ابر اهداف پروژه را در بر دارد که به صورت کلی نمایش داده می شود، این سطح فرآیندی سلسله مراتبی است.
  2. سطح بادبادک اهداف پروژه را با کمی جزئیات بیشتر نمایش می دهد، این سطح فرآیند زمانی را نشان می دهد.
  3. سطح دریا همان مدل موارد کاربرد می باشد که اکتور و use case ها را نشان می دهد.
  4. سطح ماهی را می توان موارد کاربرد باهوش نام برد که تمام رابطه های اکتور و use case ها را با جزئیات نشان می دهد.

استودیو دانش واتسون : گسترش مدل های سفارشی و آموزش واتسون با هزینه ای کمتر

آی بی ام یک شیوه برای توسعه ی اپلیکیشن های هوشمند به واسطه ی Watson Knowledge Studio فراهم کرده است که

که اهداف کلیدی آن شامل

  1. همکاری و ایجاد اجزاها  و ابزارهای مفسر به وسیله Watson Knowledge Studio
  2. شناسایی اشاره و روابط در متون بدون ساختار و بررس متون خاص مربوط به یک صنعت
  3. هزینه ی توسعه یک سیستم سفارسی تقریبا 80%, کاش یافته است از  $3500  در ماه به $800 در ماه.

آیا تابه حال از سیستم IBM Watson Knowledge Studio برای گسترش مدل های درک زبان طبیعی واتسون یا سرویس های کشف واتسون استفاده کرده اید؟

 

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

 

 

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

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

به علاوه این سیستم با تمام سیستم های دیگر آی بی ام به صورت متوالی میتواند کار کند تا بتواند با تمام جنبه های متون غیر ساخت یافته سازگاری کامل داشته باشد – از تعریف یک نوع سیستم تا گسترس یک مدل کاملا آموزش داده شده.

 

برای گسترس دامنه ی استفاده کنندگان از این سیستم که این شرکت فراهم کرده است ، این شرکت تصمیم گرفته است که هزینه ی استفاده از مدل سفارشی دامین خود را به مقدار زیادی کاهش دهد – از $3500  به  $800 در ماه .

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

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

Specify Alternate Text

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

نحوه کار با کتابخانه EPPlus

EPPlus یکی از کتابخانه های دات نت است که کار اصلی آن خواندن و نوشتن فایلهای اکسل با فرمت XLSX در محیط دات نت می باشد. لذا با استفاده از این کتابخانه شما قادر خواهید بود تا فایل های اکسل را مطابق آنچه مدنظر دارید به صورت runtime تولید، ذخیره یا حتی برای دانلود آماده نمایید. همچنین شما می توانید فایل های اکسل موجود را توسط توابع این کتابخانه باز نموده و محتویات آنها را استخراج نمایید. در زیر مثالی ساده از نحوه تولید و آماده سازی جهت دانلود شرح داده خواهد شد.

مثالی از نحوه خروجی یک spreadsheet ساده

در ابتدا یک object از کلاس FileInfo ایجاد نموده و محل ذخیره سازی فایل را مشخص می نمایید.

// Set the file name and get the output directory
var fileName = "Example-" + DateTime.Now.ToString("yyyy-MM-dd--hh-mm-ss") + ".xlsx";
var outputDir = context.Server.MapPath("/media/generatedfiles/");

// Create the file using the FileInfo object
var file = new FileInfo(outputDir +fileName);

در مرحله بعدی یک object از کلاس ExcelPackage ایجاد و با افزودن ExcelWorksheet به آن کار اصلی آغاز خواهد شد.

// Create the package and make sure you wrap it in a using statement
using (var package = new ExcelPackage(file))
{
     // add a new worksheet to the empty workbook
     ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sales list - " + DateTime.Now.ToShortDateString());

    // --------- Data and styling goes here -------------- //

}

کدهای زیر می بایست در بلاک using قرار بگیرد. ایجاد ظاهری مناسب برای sheet بسیار ساده است.

// Add some formatting to the worksheet
worksheet.TabColor = Color.Blue;
worksheet.defaultRowHeight = 12;
worksheet.HeaderFooter.firstFooter.LeftAlignedText = string.Format("Generated: {0}", DateTime.Now.ToShortDateString());
worksheet.Row(1).Height = 20;
worksheet.Row(2).Height = 18;

اکنون وقت افزودن سطرها و ستون های فایل اکسل است که در مثال این فایل دارای دو سطر و دو ستون خواهد بود. با استفاده از حلقه های تکرار شونده (مثل foreach) می توانید سطرها و ستون های خود را به سادگی ایجاد نمایید.

// Start adding the header
// First of all the first row
worksheet.Cells[1, 1].Value = "Company name";
worksheet.Cells[1, 2].Value = "Address";

// Add the second row of header data
worksheet.Cells[2, 1].Value = "Vehicle registration plate";
worksheet.Cells[2, 2].Value = "Vehicle brand";

ایجاد ظاهری آراسته و مناسب برای سلول های این فایل امری است بسیار ساده. در این مثال، موارد تعریف شده از سطر اول و ستون اول تا سطر اول و ستون دوم (یعنی فقط سر ستون ها) برای نمایش دادن هدر اعمال خواهد شد. به همین ترتیب شما قادر خواهید بود تا برای سلول های دیگر نیز قالبی معین اعمال نمایید.

//Ok now format the first row of the heade, but only the first two columns;
using (var range = worksheet.Cells[1, 1, 1, 2])
{
    range.Style.Font.Bold = true;
    range.Style.Fill.PatternType = ExcelFillStyle.Solid;
    range.Style.Fill.BackgroundColor.SetColor(Color.Black);
    range.Style.Font.Color.SetColor(Color.WhiteSmoke);
    range.Style.ShrinkToFit = false;
}

در نهایت قبل از ذخیره سند، پیرایش و پیکربندی نهایی را اعمال کنید.

// Fit the columns according to its content
worksheet.Column(1).AutoFit();
worksheet.Column(2).AutoFit();
worksheet.Column(3).AutoFit();

// Set some document properties
package.Workbook.Properties.Title = "Sales list";
package.Workbook.Properties.Author = "Gustaf Lindqvist @ Ted & Gustaf";
package.Workbook.Properties.Company = "Ted & Gustaf";

// save our new workbook and we are done!
package.Save();

//-------- Now leaving the using statement
} // Outside the using statement

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

Byte[] bin = package.GetAsByteArray();

Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", Nombre_Del_Libro + ".xlsx"));
Response.BinaryWrite(bin);
Response.Flush();
Response.End();

شایان ذکر است که این یکی از ساده ترین کتابخانه های دات نت برای استفاده در این زمینه می باشد.

Specify Alternate Text

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

  1. براحتی ریسک ها را حل و فصل می کند.
    فرآیند RUP معمولا به حل و فصل ریسک پروژه ها کمک می کند تا اطمینان حاصل شود که مشتری ها در راستای موارد مورد نیاز خود قرار گرفته اند. علاوه بر این منابع کمتری برای ادغام فرایندها در توسعه نرم افزارها استفاده می شود.
  2. تغییرات را کنترل می کند.
    این فرآیند هماهنگ سازی اجزای مختلف پروژه که توسط تیم های مختلف انجام می شود را آسان تر می کند. با این حال باید اطمینان حاصل شود که تغییرات را می توان به راحتی کنترل کرد.
  3. در برگیرنده الگوهای انعطاف پذیری است.
    توسعه نرم افزارها به مدیران این فرصت را می دهد تا از فرآیندهای رسیدگی به مشکلات رایج ، مجدد استفاده کنند. از آنجاییکه پروژه ها مشابه هم نیستند، امکان تغییر فرآیندهای خاص به منظور رسیدگی به نیازهای پروژه راه حلی کارآمد است.
  4. تحویل پروژه کارآمدتری دارد.
    در RUP ، فرآیند تحویل کارآمد است و به مدیران پروژه فرصتی برای برنامه ریزی و شروع پروژه را می دهد. فرآیند توسعه، منابع مورد نیاز کل پروژه را در اختیار مدیران می گذارد و بهترین شیوه هایی که در جهان پذیرفته شده است را در طول پروژه استفاده می کند.
  5. از توسعه تکرار شونده حمایت می ­کند.
    سیستم توسعه نرم افزار RUP، در مرحله ای می باشد که اطمینان می دهد در هر فرآیند، تکرار ها قابل اجرا هستند. البته نمی توان گفت فرآیند تکرار همیشه با موفقیت در سازمان ها استفاده شده است. بسیاری از برنامه نویسان این روش را آشفته و پیچیده دانستند. از سوی دیگر، پروژه هایی که نیازمند فن آوری جدیدی هستند به شما اجازه استفاده مجدد فرآیند ها و یا اجزاء را نمی دهد.

Specify Alternate Text

نکته مهمی که با توجه به آن می توان وب سایت موفقی داشت؟

ویژگی اصلی هر وب سایت پاسخ به سوالات است و بسیاری از وب سایت های از دست رفته این نکته کلیدی را فراموش می کنند.

در اینجا نمونه ای از پاسخ هایی که در وب سایت بازاریابی مشاهده می شود را ببینید:

  1. به سوالات مهم که در طول فرآیند خرید و فروش پرسیده می­ شوند، پاسخ دهید.
  2. پاسخ به این سوال: "چه چیزی باعث می شود که این شرکت بهترین انتخاب باشد؟"
  3. پاسخ به این سوال: "این شرکت بر چه پایه ای استوار است؟ به چه چیزی باور دارد؟"
  4. پاسخ به سوالاتی که دیگر شرکت ها تمایلی به پاسخ آنها ندارند.

وب سایت های موفق از یک گفتگوی تقلیدی بین نماینده و چشم انداز شرکت استفاده می­ کنند. چشم انداز، به سوالات خاص با نظم خاصی پاسخ می دهد. پیاده سازی این نکته باید به نرمی و با دقت انجام شود تا بهترین نتیجه حاصل شود.

سند نمودار مورد کاربرد سیستم های نرم افزاری از چه اجزائی تشکیل می شوند؟

  1. سناریوی اصلی
  2. سناریوی فرعی
  3. مورد کاربردها (Usecase)
  4. نمودار مورد کاربرد
  5. بسته مورد کاربرد
  6. کنش گرها
  7. پیش شرط ها
  8. پس شرط ها
  9. قانون مورد کاربرد
  10. نقاط توسعه

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

می توان گفت این سند زبان مشترک بین تحلیل گر سیستم و برنامه نویسان است.

 

Caching یک راهکار برای ذخیره سازی داده هایی  که مکررا نیاز به فراخوانی آنها است در یک محل ذخیره سازی موقت میباشد. این تکنیک کارایی و مقیاس پذیری سایت را به مقدار زیادی افزایش میدهد . 

وقتی Chashing  اجرا میشود یه کپی از فایل اصلی در یک محل ذخیره سازی موقت ایجاد میشود و وقتی دفعات بعد که داده کش شده فراخوانی میشود سیستم با سرعت بیشتری نسبت به قبل اقدام به خواندن داده مربوطه میکند بنابراین با توجه به اهمیت این موضوع ASP.NET Core راهکار های مختلفی را برای کش کردن معرفی میکند مانند : 

In-Memory Cache, Distributed Cache و Response Cache که در این مقاله تمرکز ما بر In-Memory Cache میباشد.

In-Memory Cache داده ها را در memory وب سروری که سایت ما بر روی آن قرار دارد ذخیره میکند .

مراحل پیاده سازی:

پیکربندی :در ابتدا یک پروژه ی خالی ASP.NET Core را ایجاد نمایید و به طور پیش فرض پروژه ی ما فاقد هرگونه تنظیمات اولیه برای اجرای کش در اپلیکیشن میباشد بنابراین در ابتدا نیاز هست تغییراتی را در project.json ایجاد کنیم به مانند کد زیر

  "dependencies": { 

    "Microsoft.NETCore.App": { 

      "version""1.1.0"

      "type""platform" 

    }, 

    "Microsoft.AspNetCore.Diagnostics""1.1.0"

    "Microsoft.AspNetCore.Mvc""1.1.1"

    "Microsoft.AspNetCore.Razor.Tools": { 

      "version""1.0.0-preview2-final"

      "type""build" 

    }, 

    "Microsoft.AspNetCore.Routing""1.1.0"

    "Microsoft.AspNetCore.Server.IISIntegration""1.1.0"

    "Microsoft.AspNetCore.Server.Kestrel""1.1.0"

    "Microsoft.AspNetCore.StaticFiles""1.1.0"

    "Microsoft.Extensions.Configuration.EnvironmentVariables""1.1.0"

    "Microsoft.Extensions.Configuration.Json""1.1.0"

    "Microsoft.Extensions.Logging""1.1.0"

    "Microsoft.Extensions.Logging.Console""1.1.0"

    "Microsoft.Extensions.Logging.Debug""1.1.0"

    "Microsoft.Extensions.Options.ConfigurationExtensions""1.1.0"

    "Microsoft.VisualStudio.Web.BrowserLink.Loader""14.1.0"

    "Microsoft.Extensions.Caching.Memory""1.1.0"

    "BundlerMinifier.Core""2.3.327" 

  }, 

   

  "tools": { 

    "Microsoft.AspNetCore.Razor.Tools""1.0.0-preview2-final"

    "Microsoft.AspNetCore.Server.IISIntegration.Tools""1.0.0-preview2-final" 

  }, 

   

  "frameworks": { 

    "netcoreapp1.0": { 

      "imports": [ 

        "dotnet5.6"

        "portable-net45+win8" 

      

    

  }, 

   

  "buildOptions": { 

    "emitEntryPoint"true

    "preserveCompilationContext"true 

  }, 

   

  "runtimeOptions": { 

    "configProperties": { 

      "System.GC.Server"true 

    

  }, 

   

  "publishOptions": { 

    "include": [ 

      "wwwroot"

      "**/*.cshtml"

      "appsettings.json"

      "web.config" 

    

  }, 

   

  "scripts": { 

    "prepublish": [ "bower install""dotnet bundle" ], 

    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" 

  

}

 In-Memory caching یک سرویس هست که به وسیله ی تزریق وابستگی فابل فراخوانی میباشد و نیاز هست که  در ConfigureServices آن را ثبت نام کنیم 

public void ConfigureServices(IServiceCollection services) 

        

            services.AddMvc(); 

            services.AddMemoryCache(); 

        }

برای اجرای In-MemoryCaching  ما یک کنترلر به نام HomeController ایجاد میکنیم و سپس interface مربوط به ImemoryCache را ایجاد کرده و با استفاده از تزریق وابستگی سازنده آن را مقدار دهی میکنیم.

using Microsoft.AspNetCore.Mvc; 

using Microsoft.Extensions.Caching.Memory; 

using System; 

   

namespace MemoryCacheApplication.Controllers 

    public class HomeController : Controller 

    

        private readonly IMemoryCache memoryCache; 

   

        public HomeController(IMemoryCache memoryCache) 

        

            this.memoryCache = memoryCache; 

        

    

}

سپس یک action  تعریف کرده که در صورت وجود نداشتن داده ای درون کش آن را مقدار دهی میکند

public IActionResult Index() 

        

            DateTime currentTime; 

            bool isExist = memoryCache.TryGetValue("CacheTime"out currentTime); 

            if (!isExist) 

            {                

                currentTime = DateTime.Now;                 

                var cacheEntryOptions = new MemoryCacheEntryOptions() 

                    .SetSlidingExpiration(TimeSpan.FromSeconds(30)); 

   

                memoryCache.Set("CacheTime", currentTime, cacheEntryOptions); 

            

            return View(currentTime); 

        }

کد های بالا از بعضی از توابع سرویس InMemory cache استفاده مینماید که زیر آن ها را توضیح میدهیم

1.TryGetValue این متد مقدار را از کش خوانده و آن را درون پارامتری از نوع out  قرار میدهد و در صورت وجود داشتن مقداری درون کش مقدار True و در غیر این صورت False را بر میگرداند

2.Set این متد داده ها را درون کش مینویسد 

3.SetSlidingExpiration این متد تاریخ انقضا مورد نظر ما را برای کش قرار میدهد و اگر درخواستی بعد از این تاریخ برسد داده ها دوباره درون کش قرار میگیرند.

 

و در آخر ما یک View ایجاد کرده و نام آن را Index قرارداده 

@model DateTime? 

<div class="row"

    <div class="col-md-3"

        <h3> Current Time: @DateTime.Now.ToString()</h3

    </div

    <div class="col-md-3"

        <h3>Cached Time: @Model.Value.ToString()</h3

    </div>        

</div>

کد بالا زمان حال و زمان کش را نمایش میدهد.

شیوه حذف داده از In-Memory Cache

به دو روش خود به خود یا دستی میشود داده ها را از کش پاک کرد اینجا ما به  دو مورد برای حذف اتوماتیک داده ها اشاره میکنیم

1.Memory Pressure در صورت فشار از جانب حافظه سیستم به طور خود کار اقدام به حذف داده ها میکند مگر آن که اولویت برابر با CacheItemPriority.NeverRemove قرار گیرد

2.Sliding Expiration ما این مقدار را بر اساس timespan  قرار میدهیم که مشخص کننده آن است که چه مقدار زمان بعد از ایجاد ، کش مورد نظر معتبر میباشد.

کد های زیر نمونه ای از اجرای این دستورات میباشند

[HttpGet] 

        public IActionResult Index() 

        

            DateTime currentTime = memoryCache.GetOrCreate("CacheTime", entry => 

              

                  entry.SlidingExpiration = TimeSpan.FromSeconds(45); 

                  return DateTime.Now; 

              });             

            return View(currentTime); 

        }

سپس یک ویو ایجاد کرد با نام Index 

@model DateTime? 

   

@using (Html.BeginForm("RemoveCache","Home")) 

    <div class="row"

        <div class="col-md-3"

            <h3> Current Time: @DateTime.Now.ToString()</h3

        </div

        <div class="col-md-3"

            <h3> Cache Time: @(Model!=null ? @Model.ToString() : "Cache is not available")</h3

        </div

        <div class="col-md-3"

            <input type="submit" class="btn btn-danger" value="Remove" /> 

        </div

    </div

}

برای حذف دستی یک کش از نمونه کد زیر میشود استفاده کرد

[HttpPost] 

        public IActionResult RemoveCache() 

        {             

            memoryCache.Remove("CacheTime"); 

            DateTime? currentTime = memoryCache.Get<DateTime?>("CacheTime"); 

            return View("Index",currentTime); 

        }

با سلام.

یکی از بهترین راه‌ها برای لزوم به کارگیری از تکنولوژی‌های جدید مقایسه آن‌ها با نسخه‌های قدیم است. در این پست تفاوت بین ASP.NET MVC و ASP.NET Core را بررسی می‌کنیم.

برای اینکه تفاوت بین این دو تکنولوژی را کاربردی درک کنیم، ساختار دو پروژه که یکی با ASP.NET MVC و دیگری با ASP.NET Core ایجاد شده است را مقایسه می‌کنیم.

قبل از آن باید به این نکته توجه کنیم که:

ASP.NET Core یک چهارچوب (framework) کاملا متن باز (open source) برای ساخت برنامه‌های کاربردی تحت وب است.

تفاوت بین این دو تکنولوژی به صورت ساده عبارتند از:

1- یکپارچه کردن ASP.NET Web API در ASP.NET Core

همان‌طور که در شکل زیر می‌بینید گزینه Web API با انتخاب ASP.NET 5 یا همان ASP.NET Core غیر فعال است.

2- حذف فایل‌هایی مانند Web.config, Global.asax

همان‌طور که در شکل زیر می‌بینیم بسیاری از فایل‌ها از ساختار پروژه در نسخه Core حذف شده است.

از آنجا که در نسخه Core الزاما از IIS برای میزبانی استفاده نمی‌شود فایل‌های بالا که در نسخه‌های قبل برای استفاده از IIS در نظر گرفته شد از پروژه حذف شده است.

3- مستقل از چهارچوب شدن (cross-platform) 

از تغییرات مهمی که در نسخه Core ایجاد شده است مستقل از چهارچوب شدن (cross-platform) برنامه‌ها است. این بدین معنی است که می‌توان پروژه‌هایی را که با نسخه Core ایجاد می‌شود در سایر سیستم عامل‌ها مانند linux و macOS اجرا نمود.

4- اضافه شدن پوشه wwwroot

همان‌طور که در شکل زیر می‌بینیم در نسخه جدید پوشه‌ای به نام wwwroot اضافه شده است.

این پوشه ریشه وب‌سایت را نشان می‌دهد که فایل‌های ایستا را باید در این پوشه قرار داد. منظور از فایل‌های ایستا فایل‌هایی مانند html، CSS و JS است.

فایل‌های کد (#C و Razor) باید خارج از این پوشه قرار گیرند.

5- اضافه‌شدن ابزارهای جدید مدیریت بسته‌ها

در نسخه Core ابزارهای جدیدی برای مدیریت بسته‌ها در سمت مشتری (Client) و سمت (Server) ایجاد شده است.

در شکل زیر این نمونه‌ای از این ابزارها را می‌بینیم.

 

 

برچسب‌ها

واتسون Answers ASP.net asp.net core asp.net mvc asp.net webforms bms business management C# captcha EPPlus Excel HotCake In-Memory Caching portal RUP Scrum security code Successful Website support system use case leveling Usecase Model web portal zamanak آموزش مجازی اپلیکیشن های هوشمند ارتباط با مشتری استراتژی سایت استودیو دانش پاسپورت ایران پرتال پرتال مشتریان پرسشنامه پیام صوتی تحصیل در خارج توانایی پاسخ گویی جشنواره خرید آنلاین خودرو خودرو تویوتا دات نت نیوک زددگی زمانک سامانه bms سامانه پشتیبانی آنلاین سطوح ابر سطوح دریا سطوح ماهی سطوح نمودار موارد کاربرد سفر بودن ویزا سند نمودار مورد کاربرد سیستم ثبت سفارش خودرو شهرداری تهران طراحی وب فرآیند یکپارچه رشنال فرق بین متدولوژی RUP و اسکرام فهم زبان طبیعی فکس فکس خودکار گسترش مدل های سفارشی ماژول ماژول استخدام ماژول رزومه متدولوژی RUP متدولوژی اسکرام مخاطبین سایت مدیریت کسب و کار مزایای فرآیند RUP معماری سه لایه معماری نرم افزار میزکار مشتری نرم افزار نرم افزار LMS نرم افزار آموزش مجازی نوآور همراه هات کیک وب سایت موفق ویزا کار کپچا کلمه امنیتی
بالا