مقالات اپلیکیشن

شرح مقالات اپلیکیشن

مقالات اپلیکیشن

شرح مقالات اپلیکیشن

چند راه برای بهبود عملکرد استفاده از Caching در ASP.Net MVC

Caching یک تکنیک طراحی اپلیکیشن در مشهد میباشد رایا پارس که به ما application در ذخیره سازی داده های خویش درجایی که از گذشته داریم ، امداد می نماید و در صورتی به به عبارتی داده مجدد نیاز داشتیم خواهیم توانست آن را از داده های ذخیره گردیده بگیریم. داده را قادر خواهیم بود در سمت کلاینت همچون سمت سرور ذخیره کنیم این مسئله تماما به احتیاجات شما بستگی داراست خیر تعیین شما. بدین ترتیب درین نوشته‌ی‌علمی سه راه و روش برای پیشرفت در عملکرد به کار گیری از Caching در ASP.NET MVC Applications را نظارت خوا‌هیم کرد.



امروزه بازدید از یک سایت با یک کامپیوتر رومیزی یا این که با گوشی از شغل های روزانه ی ماست هربار که ما از یک وب سایت یا این که اینترنت نرم افزار بازدید میکنیم انتظار داریم که با‌گاز میان 5 تا 10 ثانیه رندر خواهد شد البته متاسفانه تعداد اندکی از سایت ها وجود دارا‌هستند که به کمینه ی مجال برای گشوده شدن نیاز دارا‌هستند که دلایل آن به مورد ها پایین میباشد:


1.محتوای زیاد


2.تصاویر تعالی و چندگانه


3.منطق های غامض


4. request های زیاد از سرور


5. اتصالات ضعیف


6.لایه ی دسترسی به داده و غیره


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


Caching یک تکنیک میباشد که به ما در ذخیره سازی داده های خویش درجایی که از پیشین داریم، یاری می نماید و در صورتی‌که به به عبارتی داده مجدد نیاز داشتیم خواهیم توانست آن را از داده های ذخیره گردیده بگیریم. داده را قادر خواهیم بود در سمت کلاینت همچون سمت سرور ذخیره کنیم این مسئله تماما به احتیاجات شما بستگی دارااست خیر گزینش شما.


مزایای Caching


در‌صورتی‌که بخواهیم مزایای Caching را در یک واژه و کلمه تمجید کنیم قادر است \"کوشش\" باشد و میتواند در اختیار یابی به کمینه کردن مورد ها تحت استعمال شود:


-کمینه کردن round trip های سرور (سرور هاست گردیده یا این که سرور دیتابیس یا این که هر سرور دیگری)


-کمینه کردن ترافیک کانال (فراخوانی http به سرور)


-از تکرار یک منطق الحاق داده خودداری می‌کنیم


عملیات CRUD، آپلود و دانلود فایل در ASP.NET Core 2.0

در‌این نوشته‌ی علمی روش پیاده‌سازی عملیات CRUD یعنی Create (اضافه کردن طراحی اپلیکیشن در مشهد داده‌ها رایا پارس در مقر داده)، Read (اخذ داده از مقر داده)، Update (آپ تو دیت داده در مقر داده)، Delete (حذف داده از مقر داده) و روش application آپلود و دانلود فولدر با به کارگیری از Entity Framework Core و ASP.NET Core را گستردن می دهیم. همینطور طرز ساخت و ساز فولدر، روش رابطه مسیر به فایل و جایی که فولدر‌ها ذخیره میگردند (در پوشه wwwroot) را ذکر می کنیم.


معرفی

ما قصد داریم یک اپ خرد و بی آلایش net core 2.0. را انجام کنیم. ما یک مخاطب را اضافه میکنیم و با آپلود پوشه تصویری آن را بازنویسی میکنیم. تصویر را در فایل wwwroot در پایین فایل “UserFiles” اضافه می کنیم. نظارت می کنیم آیا این فایل از پیشین تاسیس شده است یا این که خیر، آن‌گاه آغاز آن را ساخت‌و‌ساز کرده و بعداز آن یک فایل دیگر به اسم id این استفاده کننده اضافه خوا هیم کرد، و پوشه داخلی آن را به اسم “images” اضافه میکنیم، جایی که پوشه‌های تصویری ما آپلود می شوند. آغاز نظارت می کنیم ببینیم آیا مجموع فولدرهای بالا اینک وجود دارا‌هستند یا این که خیر.

ما آنها‌را آغاز تولید کرده و بعد از آن پوشه را آپلود می کنیم. در صورتیکه یک استفاده کننده آن را حذف نماید، پوشه مهم، زیرفولدرها و همینطور پوشه‌ها حذف خواهند شد.

برای تعقیب کردن این فرایند در ویژوال استودیو 2017 این فرآیند را ایفا می دهیم:

File --> New --> Project (1

2) گزینش ASP.Net Core Web Application

3) تهیه و تنظیم اسم و وضعیت

4) گزینش پوسته Web Application (Model – View – Controller) در ورقه آینده و تعیین No Authentication و کلیک روی OK

5) درحال حاضر می بایست تعدادی پکیج ما یحتاج NuGet را اضافه کنیم:

Tools --> NuGet Package Manager --> Package Manager Console.1

2. اجرای Install-Package Microsoft.EntityFrameworkCore.SqlServer

3. برای ابزارهای Entity Framework Core تا پاپگاه داده‌ای را از سبک EF Core خویش ساخت و ساز فرمائید

4. اجرای Install-Package Microsoft.EntityFrameworkCore.Tools
5. و برای ابزارهای اسکفلدینگ ASP.NET Core برای ساخت‌و‌ساز کنترلرها و ویوها

6. اجرای Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design

کلاس “User.cs” را به طور اوامر پایین اضافه نمایید:

public class User
{
public int UserId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Company { get; set; }
public string Introduction { get; set; }

}
کلاس “DataAccess.cs” را همچون امرها پایین اضافه نمائید:

public class DataAccess : DbContext
{
public DataAccess(DbContextOptions options)
: base(options)
{ }

public DbSet User { get; set; }
}
برای اینکه کنترلرهای MVC ما از DataAccess استعمال نمایند، ما آن را تحت عنوان خدمت تصویب میکنیم.

کد ذیل را به پوشه Startup.cs اضافه فرمایید:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();

// Custom code for Data Access
var connection = @\"Data Source=ATIQ;Initial Catalog=UserDB;Integrated Security=False; Persist Security Info=False;User ID=sa;Password=*****\";
services.AddDbContext(options => options.UseSqlServer(connection));
}
دو using را به پوشه Startup.cs اضافه نمایید:

using UserDemo.Models;
using Microsoft.EntityFrameworkCore;
در Tools --> NuGet Package Manager --> Package Manager Console، دو امر را اضافه نمایید:

Add-Migration InitialCreate

Update-Database
این فرمان مقر داده‌ای را با به کارگیری از Entity Framework Core ساخت می‌نماید.

روی Controllers راست کلیک کرده، Add Controller را زده و “MVC Controller with Views using Entity Framework” را گزینش کرده و نامی برای کنترلر بگذارید.

این فعالیت کنترلری را با کل ویوهای CRUD در فایل views برای آن کنترلر، که ما آن را \"Users\" نامیدیم، ساخت و ساز می‌نماید.

ما تغییرات کوچکی را باطن این ویوها تحت عنوان فولدر‌های منبع مربوطه ساخت‌و‌ساز خوا‌هیم کرد. کدهایی را داخل Views/Users/Edit.cshtml اضافه نمائید.




User Image

\"@Model.Name\"

@if (!string.IsNullOrEmpty(ViewBag.FileName))
{
Download

}




\"Upload\"



و در فولدر UsersController.cs کدهای سفارشی پایین را اضافه نمائید:

public async Task Edit(int? id)
{
if (id == null)
{
return NotFound();
}

var user = await _context.User.SingleOrDefaultAsync(m => m.UserId == id);
if (user == null)
{
return NotFound();
}

string webRoot = _env.WebRootPath;
string img_p = \"\";
string fileName = \"\";
if (System.IO.Directory.Exists(webRoot + \"/UserFiles/\" + user.UserId.ToString() + \"/Image/\"))
{
string[] strfiles = Directory.GetFiles(webRoot + \"/UserFiles/\" + user.UserId.ToString() + \"/Image/\", \"*.*\");

if (strfiles.Length > 0)
{

for (int i = 0; i < strfiles.Length; i++)
{
fileName = Path.GetFileName(strfiles[i]);

string _CurrentFile = strfiles[i].ToString();
if (System.IO.File.Exists(_CurrentFile))
{
string tempFileURL = \"/UserFiles/\" + user.UserId.ToString() + \"/Image/\" + Path.GetFileName(_CurrentFile);
img_p = tempFileURL;
}

}

}
}

if (!string.IsNullOrEmpty(img_p))
{
ViewBag.ImgPath = Convert.ToString(img_p);
ViewBag.FileName = Convert.ToString(fileName);
}
else
ViewBag.ImgPath = \"/Images/default.jpg\";

return View(user);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Edit(int id, [Bind(\"UserId,Name,Email,Password,Introduction\")] User user)
{
if (id != user.UserId)
{
return NotFound();
}

if (ModelState.IsValid)
{
try
{
_context.Update(user);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!UserExists(user.UserId))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(user);
}
و کدی را برای آپلود پوشه اضافه فرمایید:

[HttpPost]
public async Task UploadImage(IFormCollection form)
{
if (form.Files == null || form.Files[0].Length == 0)
return RedirectToAction(\"Edit\", new { id = Convert.ToString(form[\"UserId\"]) });

var webRoot = _env.WebRootPath;
string userId = Convert.ToString(form[\"UserId\"]);

if (!System.IO.Directory.Exists(webRoot + \"/UserFiles/\"))
{
System.IO.Directory.CreateDirectory(webRoot + \"/UserFiles/\");
}
if (!System.IO.Directory.Exists(webRoot + \"/UserFiles/\" + userId + \"/Image/\"))
{
System.IO.Directory.CreateDirectory(webRoot + \"/UserFiles/\" + userId + \"/Image/\");
}

//Delete existing files first and then add new file
DeleteFiles(userId);

var path = Path.Combine(
Directory.GetCurrentDirectory(), \"wwwroot\" + \"/UserFiles/\" + userId + \"/Image/\",
form.Files[0].FileName);

using (var stream = new FileStream(path, FileMode.Create))
{
await form.Files[0].CopyToAsync(stream);
}

return RedirectToAction(\"Edit\", new { id = Convert.ToString(form[\"UserId\"]) });
}
و همینطور کد مرتبط با دانلود را:

public async Task Download(string img, string userId)
{
string filename = img;
if (filename == null)
return Content(\"filename not present\");

var path = Path.Combine(
Directory.GetCurrentDirectory(),
\"wwwroot\" + \"/UserFiles/\" + userId + \"/Image/\", filename);

var memory = new MemoryStream();
using (var stream = new FileStream(path, FileMode.Open))
{
await stream.CopyToAsync(memory);
}
memory.Position = 0;
return File(memory, GetContentType(path), Path.GetFileName(path));
}

private string GetContentType(string path)
{
var types = GetMimeTypes();
var ext = Path.GetExtension(path).ToLowerInvariant();
return types[ext];
}

private Dictionary GetMimeTypes()
{
return new Dictionary
{
{\".png\", \"image/png\"},
{\".jpg\", \"image/jpeg\"},
{\".jpeg\", \"image/jpeg\"},
{\".gif\", \"image/gif\"}
};
}
در اینجا مباحث جدیدی را در ارتباط با مپ کردن تصویر با مسیرها و فایل‌های root مطرح می کنیم.

آحاد فولدر‌های استاتیک (.css, .js and images) به طور پیش‌فرض در پوشه wwwroot ذخیره گردیده‌اند.

ما از \"Request.Files\" به کار گیری می کنیم، هم اکنون ما از \"Request.Form.Files\" برای تصاحب کردن فولدر‌ها از هیبت در کنترلر به کار گیری می کنیم.

)”\"/Server.MapPath(\"~/UserImages\" همینطور به \"var webRoot = _env.WebRootPath;\" تغییر تحول پیدا می‌نماید، جایی که ما _env را اضافه کردیم مانند:

private readonly DataAccess _context;
private readonly IHostingEnvironment _env;

public UsersController(DataAccess context, IHostingEnvironment env)
{
_context = context;
_env = env;
}
تغییر و تحول دیگری که می بایست به آن دقت گردد این میباشد که کلمه و واژه کلیدی \"HttpFileCollectionBase\" در CORE استعمال نشده میباشد، در ازای ما از \"IFormFileCollection\" برای دریافت کردن پارامترهای تیم فولدر‌ها استعمال می کنیم.

همینطور کلمه و واژه کلیدی \"HttpPostedFileBase\" به \"IFormFile\" برای به دست آوردن یک فولدر واحد تغییر تحول می‌نماید.

زمانی که استفاده کننده تک تک فولدرها و زیرفولدرها را حذف می‌نماید، پوشه تصویر نیز همچون کد تحت حذف می شود:

[HttpPost, ActionName(\"Delete\")]
[ValidateAntiForgeryToken]
public async Task DeleteConfirmed(int id)
{
var user = await _context.User.SingleOrDefaultAsync(m => m.UserId == id);
_context.User.Remove(user);
await _context.SaveChangesAsync();

//Delete User Files as well
var dirPath = Path.Combine(
Directory.GetCurrentDirectory(),
\"wwwroot\" + \"/UserFiles/\" + Convert.ToString(id) + \"/\");
Directory.Delete(dirPath,true);
return RedirectToAction(nameof(Index));
}
ممکن میباشد توضیحات بی نقص نباشند البته می توانید کد را با یه خرده سعی به خیر فهم و شعور نمایید.

حرف اخر

این یک نرم‌افزار ماهر وجود ندارد بلکه صرفا یک اپلیکیشن مقدماتی و آموزشیبرای Asp.Net Core 2.0 میباشد. کل کدهای مایحتاج مرتبط با فولدر‌ها درین نوشته ی علمی مو جود می‌باشند،صرفا آنان‌را در روت پروژه خویش اسکن پیس نمایید.لطفا connection stringمربوط به Sql Server خودتان را در پوشه Sratrup.csتغییر دهید. همچنینnamespacesرا با اعتنا به اسم پروژه خویش تغییر‌و تحول دهید.

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

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

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

MedleyText

 



این ابزار برای مواردی میباشد که میخواهید درخصوص استایل در نرم افزار نویسی یادداشت برداری نمایید. این ابزار موردها متعددی برای ارائه کردن داراست برای مثال، مدد از syntax های چندگانه بدین مفهوم که میتوانید از یک‌سری syntax اپلیکیشن نویسی در یک یادداشت به کارگیری فرمائید. این نرم افزار از بیشتراز 40 لهجه اپ نویسی تامین می نماید به این ترتیب گزینش های متعددی دارید.

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

با MedleyText از shortcut های قابل تهیه و تنظیم نیز لذت خواهید موفقیت. این نرم افزار با تعداد متعددی shortcut قابل تهیه یار و همدم میباشد که با به کارگیری از آن‌ها میتوانید به راحتی با به کار گیری از کیبورد یادداشت های فوق العاده بسازید.

چند کامپوننت فوق العاده سودمند React (کتابخانه ها و ابزارها)

React کتابخانه ای open source و بر پایه ی طراحی اپلیکیشن در مشهد جاواسکریپت، رایا پارس تشکیل شده application بوسیله فیسبوک میباشد که برای تشکیل داد رابط های کاربری توسعه یافته بکار میرود. عاملی که react را به ابزاری دیدنی تبدیل کرده امکان تهیه نماهای گوناگون برای یک کامپوننت یا این که یک نرم افزار براساس state (موقعیت) آن میباشد. هنگامی که state تغییر می کند، به مکان بار گذاری مجدد ی تک تک اپلیکیشن (application)، خویش کتابخانه قسمتهایی که نیاز به تغییرات دارا هستند را تغییر تحول می دهد که سبب ساز به ارتقاء سرعت تجارب ی استفاده کننده(UX) می گردد.درین نوشته‌ی علمی لیستی از کامپوننت ها را مهیا کرده ایم.



ما با کاوش فی مابین کامپوننت های حالا حاضر برای تشکیل داد رابط کار کشته، لیستی از شایسته ترین ها را مهیا کرده ایم:

-UI-Router for React

UI-Router for React مسیردهی مبنی بر state را برای اپ ها آماده میاورد. بطور نمونه این کامپوننت بجای ایجاد کرد یک وب سایت از طریق مرسوم، گذار میان state های گوناگون یک نرم افزار مبنی بر React - با درنظر تصاحب کردن محتوای جداگانه برای هر شیت - را راحت میسازد. لحظه ای که مخاطب در حالا گشتن فی مابین صفحه های باشد، نرم‌افزار URL را تغییر‌و تحول می دهد – این به استفاده کننده اذن می‌دهد تا هر برگه را جدا بوکمارک نماید. سود ی این فعالیت سهولت و سرعت بالا در انتقال فی مابین صفحه ها گوناگون خواهد بود.

چگونه با کلاس ها در Typescript کار کنیم؟

فهم و شعور کلاس ها

پیشین خیس ها در جاوااسکریپت ES 2015 بسط طراحی اپلیکیشن در مشهد دهندگان رایا پارس مفهومی application به اسم کلاس نداشتند و شایسته ترین راهی که می توانستند جایگزین خوی کلاس ها نمایند توابع بود. توابع مکانیسمی به گروهی از صفات و سیاق های مرتبط به یکدیگر میدهد. اسلوب ها، هم میتوانند به طور داخلی به توابع اضافه شوند و هم می‌توانند با واژه و کلمه ی کلیدی prototype اضافه شوند. قطعه کد ذیل مثالی از اینگونه توابعی میباشد:

function Name (firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.fullName = function() {
return this.firstName + \' \' + this.lastName ;
};
}
در نمونه گذشته تابع fullName در تابع Name کپسوله سازی شد‌ه‌است. روش دیگر افزودن توابع با واژه ی کلیدیprototype است که در کد ذیل آرم داده گردیده است:

function Name (firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Name.prototype.fullName = function() {
return this.firstName + \' \' + this.lastName ;
};
این خصوصیت های توابع اکثری از خطاها نداشتن کلاس را حل می نماید البته اکثری از جامعه ی پیشرفت دهندگان با این بینش شل نیستند.

کلاس ها این پروسه را بی آلایش خیس می نمایند. کلاس ها یک انتزاع خلال اخلاق های معمول ارائه می نماید به این ترتیب کد را قابل به کارگیری ی دوباره می نماید. به دنبال syntax تمجید کلاس در TypeScript را داریم:



Syntax کلاس برای خوانندگانی که پیش موضوع ی شئ گرایی را دارا هستند بایستی بسیار آشنا باشد. برای تمجید یک کلاس از واژه ی کلیدی class که بعد اسم کلاس نوشته میشود استعمال می‌کنیم. کلاس News سه صفت و یک اسلوب دارااست به هر عضو یک نوع تخصیص داده گردیده است و همینطور یک سطح دسترسی برای معین کردن محدوده ی دسترسی نیز دارااست. در خط 10 یک شئ از کلاس با کلمه و واژه ی کلیدی new ساخته ایم. کلاس ها در TypeScript مفهومی به اسم constructor (آفریننده) نیز دارا هستند که می‌توانیم بعضی از صفات را در به عبارتی فرصت تشکیل داد شئ مقدار دهی کنیم.