.:: محمدحسین فخرآوری ::.

با سلام و خسته نباشید به شما دوست عزیز به قسمت موضوعات وبلاگ مراجعه کنید. 09173700916

توابع ریاضی (math) در سی شارپ

برچسب‌ها: math , توابع ریاضی
محمدحسین فخرآوری ، شنبه ۱۴۰۳/۰۳/۲۶ ، 12:57

تشخیص عدد زوج و فرد

public static bool IsOdd(int value){return value % 2 != 0;}

public static bool IsEven(int value){return value % 2 == 0;}

برچسب‌ها: IsOdd , IsEven
محمدحسین فخرآوری ، چهارشنبه ۱۴۰۳/۰۳/۰۹ ، 8:41

تفاوت Build با Rebuild در Visual Studio

اگر برنامه نویس سی شارپ باشید و یا اینکه تجربه کار کردن با Visual Studio را داشته باشید، قطعا Build و Rebuild برای شما آشناست.
همانطور که می دانید ، بر روی هر پروژه ای در Visual studio اگر کلیک راست کنید ، یک منویی به شما نمایش داده می شود که از گزینه های اول این لیست Build و Rebuild می باشد. در این مقاله قصد داریم به صورت خلاصه در مورد تفاوت Build و Rebuild کردن پروژه ها مطالبی را بیان کنیم تا از این به بعد با داشتن آگاهی کامل اقدام به استقاده از آنها نمایید.

Build Solution

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

Rebuild Solution

تمامی اسمبلی های موجود را فارغ از اینکه تغییری در آنها وجود داشته است یا خیر مجدد Build میکند.
معمولا بعضی وقت های متوجه می شویم که Visual studio تغییراتی را که اعمال کرده ایم در خروجی اعمال نکرده است ، در این مواقع معمولا برای اینکه تغییرات را در خروجی مشاده نماییم Rebuild میزنیم. با Rebuild کردن تمامی فایل های خروجی حذف شده و اصلا بررسی نمی شود که کدام اسمبلی ها تغییر کرده اند، و سپس کل پروژه مجدد Build می شود و خروجی حاصل می شود.

محمدحسین فخرآوری ، چهارشنبه ۱۴۰۳/۰۳/۰۹ ، 8:25

غیر فعال کردن EnableBrowserLink

در وب کانفیگ در قسمت appSettings بزارید

< add key="vs:EnableBrowserLink" value="false">< / add>
برچسب‌ها: asp , vs 2022
محمدحسین فخرآوری ، سه شنبه ۱۴۰۱/۰۵/۲۵ ، 23:1

Visual Studio All Version Product Keys

Product

Year

Version

Product Keys

Visual Studio 2019

2019

16.x

Professional:

  • NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y

Enterprise:

  • BF8Y8-GN2QH-T84XB-QVY3B-RC4DF

Visual Studio 2017

2017

15.x

Test Professional:

  • VG622-NKFP4-GTWPH-XB2JJ-JFHVF

Professional:

  • KBJFW-NXHK6-W4WJM-CRMQB-G3CDH

  • 4F3PR-NFKDB-8HFP7-9WXGY-K77T7

Enterprise:

  • NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

  • N2VYX-9VR2K-T733M-MWD9X-KQCDF

Visual Studio 2015

2015

14.x

Professional:

  • HMGNV-WCYXV-X7G9W-YCX63-B98R2

Enterprise:

  • HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

  • 2XNFG-KFHR8-QV3CP-3W6HT-683CH

Team Foundation Server:

  • PTBNK-HVGCM-HB2GW-MXWMH-T3BJQ

Visual Studio 2013

2013

12.x

Professional:

  • XDM3T-W3T3V-MGJWK-8BFVD-GVPKY

Premium:

  • FBJVC-3CMTX-D8DVP-RTQCT-92494

Ultimate:

  • BWG7X-J98B3-W34RT-33B3R-JVYW9

Team Foundation Server:

  • MHG9J-HHHX9-WWPQP-D8T7H-7KCQG

Visual Studio 2012

2012

11.x

Professional:

  • 4D974-9QX42-9Y43G-YJ7JG-JDYBP

Premium:

  • MH2FR-BC9R2-84433-47M63-KQVWC

Ultimate:

  • YKCW6-BPFPF-BT8C9-7DCTH-QXGWC

  • RBCXF-CVBGR-382MK-DFHJ4-C69G8

  • YQ7PR-QTHDM-HCBCV-9GKGG-TB2TM

  • MMVJ9-FKY74-W449Y-RB79G-8GJGJ

  • YCFHQ-9DWCY-DKV88-T2TMH-G7BHP

Team Foundation Server:

  • BVGTF-T7MVR-TP46H-9Q97G-XBXRB

Visual Studio 2010

2010

10.x

Professional/Ultimate (built-in or below):

  • YCFHQ-9DWCY-DKV88-T2TMH-G7BHP

Visual Studio 2008

2007

9.x

Express: Not required

Professional:

  • XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT

  • WPX3J-BXC3W-BPYWP-PJ8CM-F7M8T

  • PYHYP-WXB3B-B2CCM-V9DX9-VDY8T

  • WPDW8-M962C-VJX9M-HQB4Q-JVTDM

Visual Studio 2005

2005

8.x

Express: Not required

Standard: Not required

Professional:

  • KGR3T-F2C26-RRTGT-D6DQT-QBBB3

Visual Studio 6.0

1998

6.x

  • 111-1111111

  • 0123456789

  • 1234567890

برچسب‌ها: Visual Studio , Product Keys
محمدحسین فخرآوری ، سه شنبه ۱۴۰۱/۰۵/۱۸ ، 7:24

visual studio 2022 serial key

visual studio 2022 serial key


Pro:
TD244-P4NB7-YQ6XK-Y8MMM-YWV2J

Enterprise:
VHF9H-NXBBB-638P6-6JHCY-88JWH

محمدحسین فخرآوری ، پنجشنبه ۱۴۰۰/۰۸/۲۰ ، 13:25

Force Nuget to Reinstall Packages without Updating

  • Update-Package -reinstall
  • Update-Package -reinstall -Project ProjectName
محمدحسین فخرآوری ، شنبه ۱۳۹۸/۰۷/۲۷ ، 11:34

12 کلید میانبر کارآمد Visual Studio

ویژوال استادیو یک IDE قدرتمند می باشد و ویژگی های زیادی را برای راحت تر کردن برنامه نویسان فراهم نموده است. در این مقاله با 12 کلید میانبر کارآمد ویژوال استادیو آشنا خواهیم شد.

12 کلید میانبر کارآمد Visual Studio

فنون و کلیدهای کارآمدی زیادی برای بالا بردن بهره وری وجود دارند. با استفاده از این کلیدهای میانبر می توانید با انرژی بیشتری به کدزنی مشغول شوید.

1- مرتب کردن کدها امری بسار مهم اما وقت گیر می باشد که بوسیله CRTL + K + D این کار به آسانی انجام می گیرد.

2- هنگام خطایابی و یا تست کدها کامنت کردن کدها استفاده زیادی دارد و با استفاده از CTRL+K+C/CTRL+K+U می توانید کدها را کامنت کرده و یا از کامنت درآورید.

3- با رفتن روی یک قسمت از کد و با استفاده از ALT+up/down می توانید آن خط کد را بالا و پایین ببرید.

4-با زدن کلید F12 به کلاس مورد نظر رفته و با استفاده از  - CTRL به محل قبلی بازگردید.

5-با نگه داشتن CTRL + کلیک موس به کلاس مورد نظر می روید.

6-از این پس برای عملیات Refactor کردن یا کلاس کردن می توان از کلید میانبر CTRL+R+M استفاده کنید.

7-برای پیدا کردن تمامی رفرنس ها کافی است از کلید میانبر Shift + F12 استفاده نمایید.

8-هنگامی که می خواهید یک تکه کد را داخل Try بیندازید می توانید از Ctrl + K + S استفاده نمایید.

9-برای انتخاب یک مربع از کد می توانیید ابتدا Alt را نگه داشته و با نگاه داشتن کلیک موس یک مربع دلخواه ترسیم نمایید.

10-با استفاده از کلید میانبر CTRL + M + O کدها را جمع کرده و و برای باز کردن آن از CTRL + M + X استفاده می نماییم.

11-کدهای زیادی بدون گروه بندی وجود دارند. می توانید از CTRL+M+H/CTRL+M+U استفاده نمایید.

12-برای بستن پنجره از ALT+F4 استفاده نمایید.

محمدحسین فخرآوری ، سه شنبه ۱۳۹۶/۰۸/۰۲ ، 9:51

معماری 3لایه(3Layer) در طراحی وب

وقتی صحبت از معماری 3 لایه میشه یعنی اینکه پروژه شما باید به 3لایه یا 3بخش تقسیم بندی بشه
لایه اول:InterFace Layer
لایه دوم:Business Logic Layer
لایه سوم:Data Acess Layer
درسته که ظاهرا کد نویسی زیاد میشه ولی در عوض کد ها بخش بندی و از هم جدا میشه که مزیت های زیادی داره مثلا هروقت که کار با پایگاه داده دارین سریعا به لایع سوم میرین و ...
اما توضیح کلی راجب لایه ها :
وقتی که داده ها از سمت کاربر ارسال می شه این داده ها به لایه دوم منتقل می شه.کار لایه دوم چک کردن مقادیر،و... هست
زمانی که داده ها از هر جهت "تمییز" و "سازگار" بودن به لایه سوم برای ذخیره در پایگاه داده منتقل میشه
این کلیت معماری 3لایه در طراحی وب سایت هستش
برای درک بیشتر و آسون تر با مثالی از Asp.Net این معماری رو توضیح میدم 

فرض کنید یه پروژه نوشتین که دارای جدولی به نام MyUser هستش که اطلاعات کاربران در آن ذخیره میشه و دارای فیلد های Name,PassWord,...هستش و یه صفحه برای پروژتون طراحی کردین برای ثبت نام کاربران.
خوب چون جدول MyUser رو دارین باید یه کلاس به نام MyUser بسازید که دارای فیلد های این جدول باشه
(به طور کلی در معماری 3لایه برای هر جدول باید یه کلاس بسازید)
که من شبه کد های #C رو اینجا قرار میدم


Public Class MyUser

{

Private int _Id;

Private string_name;

Private string _Password;

public int Id

{

set{_Id=value;}

get{return _Id;}

}

public string  Name

{

set{_name=value;}

get{return _name;}

}

public string  PassWord

{

set{_Password=value;}

get{return _Password;}

}

}

حالا 2کلاس دیگه به نام هایBLL برای لایه دوم و DAL برای لایه سوم بسازید

Public Class BLL

{

DAL d;

public void RegisterBLL(string name,string pass)

{

d = new DAL();

MyUser m = new Myuser();

m.Name = name;

m.PassWord= Hash(pass);

d.RegisterDAL(m);

}

}

Public Class DAL

{

public void RegisterDAL(Myuser temp)

{

//وارد نمودن اطلاعات در دیتا بیس

}

}

 

 

 

وقتی کاربری به صفحه ثبت نام مراجعه میکنه و اطلاعات رو وارد میکنه، اطلاعات از صفحه (لایه اول) گرفته شده و برای لایه دوم(BLL) ارسال میشه

BLL bll = new BLL();

bll.RegisterBLL(name,Pass)

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

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

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

(و یه نصیحت دوستانه اینکه از تکنولوژی Linq برای برقراری ارتباط با پایگاه داده استفاده کنین دیگه نیازی به نوشتن

کلاس های مربوط به جدول های دیتا بیس نیس آخه Linq خودش از جداول و Store Procedure ها کلاس میسازه و معماری 3لایه خیلی آسون تر پیاده سازی میشه)

محمدحسین فخرآوری ، یکشنبه ۱۳۹۲/۰۶/۲۴ ، 18:42

سطح دسترسی Access Modifiers

ما در زبان سی شارپ بطور کلی دارای چهار سطح دسترسی بصورت زیر هستیم .

1-private  : دسترسی اختصاصی میباشد. در این حالت عضو مورد نظر از بیرون کلاس قابل مشاهده و دسترسی نخواهد بود و فقط در داخل کلاسی که تعریف میشود قابل دسترسی خواهد بود.

2-public  : دسترسی عام میباشد. عضوی که از نوع public است از بیرون کلاسی که در آن تعریف شده است ، توسط دیگر کلاسها کاملا قابل دسترسی و ویرایش خواهد بود.

3-internal  : تنها در داخل فایل یا اسمبلی فعلی قابل استفاده خواهند بود

4-protected  : تنها در کلاسی که تعریف در آن تعریف شده و کلاسهایی که از آن کلاس مشتق میشوند قابل دسترسی خواهد بود.

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

 

 

                           

 به شکل اول تصویرنگاه کنید همانطور که می بینید دایره سبز رنگ نشان دهنده سطح دسترسی متغیر public  است. می بینیم که این سطح دسترسی هم در خارج از کلاس و هم د ر خارج از پروژه ما قابل دسترسی است .

دایره های کوچک قرمز رنگ ، نشان دهنده متغیرها و فیلدهایی است با سطح دسترسی private  است همانطور که از شکل پیداست این متغیرها فقط در همان محدوه که تعریف شده اند . قابل دستیابی هستند .

دایره آبی رنگ نشان دهنده سطح دسترسی internal  است . یعنی کلاس یا متغیری از این نوع فقط در سطح همان پروژه قابل دسترسی است و اگر ما فرضا پروژه 2 را ایجاد کنیم و بخواهیم از کلاس با سطح دسترسی internal  در پروژه 2 استفاده کنیم ممکن نیست .

و سرانجام شکلهای نامنتظم قهوه ای رنگ را می بینید که نشان دهنده سطح دسترسی protected  است .

سطح دسترسی دیگری نیز وجود دارد تحت عنوان protected internal  این سطح دسترسی در همان پروژه تعریف شده قابل دسترسی است و علاوه بر آن  اگر کلاسی از پروژه دیگر از آن ارث بری کند نیز قابل دسترسی است .

در واقع برابر با internal +protected  است . از اجتماع این دو در شکل بالا می توانید آن را مشاهده کنید قهوه ای به اضافه رنگ آبی .

محمدحسین فخرآوری ، پنجشنبه ۱۳۹۲/۰۶/۲۱ ، 18:36

تفاوت ADO و ADO.Net

هنگانی که برنامه های Client/Server می نویسید، Component هایی که یک ارتباط را با Database ایجاد می کنند و آن را تا زمانی که برنامه در حال اجراست بصورت Open نگهداری می کنند دارای معایب زیر می باشند 
ادامه نوشته
برچسب‌ها: تفاوت ADO و ADO , Net
محمدحسین فخرآوری ، جمعه ۱۳۹۲/۰۱/۱۶ ، 20:40

مخفف کلمات در برنامه نویسی

.NET ASP.NET – ACTIVE SERVER PAGES FOR .NET 

.NET B2B – BUSINESS TO BUSINESS 

ADO – ACTIVE DATA OBJECTS 

ADO.NET – ACTIVEX DATA OBJECTS 

AJAX – ASYNCHRONOUS JAVASCRIPT AND XML 

API – APPLICATION PROGRAMMING INTERFACE 

APPDOMAIN – APPLICATION DOMAIN 

ASP – ACTIVE SERVER PAGES 

B2C – BUSINESS TO CONSUMER 

BAL – BASE ACTIVITY LIBRARY 

BAML – BINARY APPLICATION MARKUP LANGUAGE 

BCL – BASE CLASS LIBRARY 

CAO – CLIENT ACTIVATED OBJECTS 

CAS – CODE ACCESS SECURITY 

CCW – COM CALLABLE WRAPPER 

CICS– Customer Information Control System                             

----------------------- Page 2-----------------------

CIL – COMMON INTERMEDIATE LANGUAGE 

CLI – COMMON LANGUAGE INTERFACE / COMMON LANGUAGE INFRASTRUCTURE 

CLR – COMMON LANGUAGE RUNTIME 

CLS – COMMON LANGUAGE SPECIFICATION 

CMMI – CAPABILITY MATURITY MODEL INTEGRATION 

CODEDOM – CODE DOCUMENT OBJECT MODEL 

COFF – COMMON OBJECT FILE FORMAT 

COM – COMPONENT OBJECT MODEL 

CSC – C# COMMAND LINE COMPILER 

CSDL – CONCEPTUAL SCHEMA DEFINITION LANGUAGE 

CSS – CASCADING STYLE SHEETS 

CTS – COMMON TYPE SYSTEM 

DBMS – DATABASE MANAGEMENT SYSTEM 

DCOM – DISTRIBUTED COMPONENT OBJECT MODEL 

DDL – DATA DEFINITION LANGUAGE 

DI – DEPENDENCY INJECTION 

DLL – DYNAMIC LINK LIBRARY 

DLR – DYNAMIC LANGUAGE RUNTIME                 

----------------------- Page 3-----------------------

DML – DATA MANIPULATION LANGUAGE 

DOM – DOCUMENT OBJECT MODEL 

DSI – DISTRIBUTED SYSTEM INITIATIVE / DYNAMIC SYSTEM INITIATIVE 

DTD – DOCUMENT TYPE DEFINITION 

DTO – DATA TRANSFER OBJECT 

ECMA – EUROPEAN COMPUTER MANUFACTURERS ASSOCIATION 

EDM – ENTITY DATA MODEL 

EIF – ENTERPRISE INSTRUMENTATION FRAMEWORK 

EXE – EXECUTABLE 

FCL – FRAMEWORK CLASS LIBRARY 

GAC – GLOBAL ASSEMBLY CACHE 

GC – GARBAGE COLLECTOR 

GDI – GRAPHICS DEVICE INTERFACE 

GDI+ - GRAPHICS DEVICE INTERFACE PLUS 

GUI – GRAPHIC USER INTERFACE 

GUID – GLOBALLY UNIQUE IDENTIFIER 

HTML – HYPERTEXT MARKUP LANGUAGE 

HTTP – HYPERTEXT TRANSFER PROTOCOL                            

----------------------- Page 4-----------------------

IDE – INTEGRATED DEVELOPMENT ENVIRONMENT 

IDL – INTERFACE DEFINITION LANGUAGE 

IIS – INTERNET INFORMATION SERVICES 

IL – INTERMEDIATE LANGUAGE 

ILDASM – INTERMEDIATE LANGUAGE DISASSEMBLER 

IOC – INVERSION OF CONTROL 

IWAM - INTERNET SERVER WEB APPLICATION MANAGER 

JIT – JUST-IN TIME COMPILER 

JSON – JAVASCRIPT OBJECT NOTATION 

LINQ – LANGUAGE INTEGRATED QUERY 

MARS – MULTIPLE ACTIVE RESULT SETS 

MBR – MARSHAL BY REFERENCE 

MBV – MARSHAL BY VALUE 

MIDL – MICROSOFT IDL COMPILER 

MIL – MEDIA INTEGRATION LAYER 

MMC – MICROSOFT MANAGEMENT CONSOLE 

MOSS 2007 – MICROSOFT OFFICE SHAREPOINT SERVER 2007 

MS –DTC – MICROSOFT DISTRIBUTED TRANSACTION COORDINATOR                                

----------------------- Page 5-----------------------

MSDE – MICROSOFT DATA ENGINE 

MSIL – MICROSOFT INTERMEDIATE LANGUAGE 

MSL – MAPPING SCHEMA LANGUAGE 

MSMQ – MICROSOFT MESSAGE QUEUING 

MVC – MODEL VIEW CONTROLLER 

MVP–MODEL VIEW PRESENTER 

NAML – .NET APPLICATION MODELING LANGUAGE 

NGSCB – NEXT GENERATION SECURE COMPUTING BASE 

OLAP – ONLINE ANALYTICAL PROCESSING 

OLE – OBJECT LINKING AND EMBEDDING 

OLTP – ONLINE TRANSACTION PROCESSING 

OOP – OBJECT-ORIENTED PROGRAMMING 

PDA – PERSONAL DIGITAL ASSISTANT 

PDB – PROGRAM DATABASE 

PE – PORTABLE EXECUTABLE 

PIAS – PRIMARY INTEROP ASSEMBLIES 

PINVOKE – PLATFORM INVOKE 

RAD – RAPID APPLICATION DEVELOPMENT                                         

----------------------- Page 6-----------------------

RCW – RUNTIME CALLABLE WRAPPER 

RDL – REPORT DEFINITION LANGUAGE 

REPL – REAL EVAL PRINT LOOP 

REST – REPRESENTATIONAL STATE TRANSFER 

RIA – RICH INTERNET APPLICATIONS 

RPC – REMOTE PROCEDURE CALL 

RSS – RICH SITE SUMMARY / REALLY SIMPLE SYNDICATION 

SAML – SECURITY ASSERTION MARKUP LANGUAGE 

SAO – SERVER ACTIVATED OBJECTS 

SAX – SIMPLE API FOR XML 

SBC – SERVER-BASED COMPUTING 

SCM – SERVICE CONTROL MANAGER 

SDE – SMART DEVICE EXTENSIONS 

SDM – SYSTEM DEFINITION MODEL 

SDPS – SHAREPOINT DEPLOYMENT SHARING SERVICES 

SEE – SECURE EXECUTION ENVIRONMENT 

SGML – STANDARD GENERALIZED MARKUP LANGUAGE 

SLAM – SPECIFICATIONS, LANGUAGES, ANALYSIS AND MODEL CHECKING                           

----------------------- Page 7-----------------------

SMTP – SIMPLE MAIL TRANSFER PROTOCOL 

SOA – SERVICE ORIENTED ARCHITECTURE 

SOAP – SIMPLE OBJECT ACCESS PROTOCOL 

SQL- Structured Query Language 

SSDL – STORE SCHEMA DEFINITION LANGUAGE 

STLC – SOFTWARE TESTING LIFE CYCLE 

TBS – TABULAR DATA SERVICES 

TCP – TRANSMISSION CONTROL PROTOCOL 

TDD – TEST DRIVEN DEVELOPMENT 

TFS – TEAM FOUNDATION SERVER 

TLB – TYPE LIBRARY 

UDDI – UNIVERSAL DESCRIPTION, DISCOVERY, AND INTEGRATION 

UDF – UNIFORM DATA FORMAT / USER-DEFINED FUNCTION 

URI – UNIFORM RESOURCE IDENTIFIER 

URL – UNIFORM RESOURCE LOCATOR 

VBC.EXE – VB.NET COMPILER 

VBL – VIRTUAL BUILD LABS 

VCS – VERSION CONTROL SYSTEM                       

----------------------- Page 8-----------------------

VDI – VIRTUAL DESKTOP INFRASTRUCTURE 

VES – VIRTUAL EXECUTION SYSTEM 

VS.NET – VISUAL STUDIO FOR >NET 

VSS – VISUAL SOURCE SAFE 

VSTS – VISUAL STUDIO TEAM SITE 

W3C – WORLD WIDE WEB CONSORTIUM 

WAP – WIRELESS ACCESS PROTOCOL 

WCAG - WEB CONTENT ACCESSIBILITY GUIDELINES 

WCF – WINDOWS COMMUNICATION FOUNDATION 

WCS – WINDOWS CARDSPACE 

WINFS – WINDOWS FUTURE SYSTEM 

WIQL – WORK ITEM QUERY LANGUAGE 

WKO – WELL KNOWN OBJECT 

WMI – WINDOWS MANAGEMENT INSTRUMENTATION 

WML – WIRELESS MARKUP LANGUAGE 

WPF – WINDOWS PRESENTATION FOUNDATION 

WPO – WHOLE PROGRAM OPTIMIZATION 

WSDL – WEB SERVICES DESCRIPTION LANGUAGE                                      

----------------------- Page 9-----------------------

WSE – WEB SERVICES ENHANCEMENTS 

WSUS – WINDOWS SERVER UPDATE SERVICES 

WWF – WINDOWS WORKFLOW FOUNDATION 

WWF – WINDOWS WORKFLOW FOUNDATION 

XAML – EXTENSIBLE APPLICATION MARKUP LANGUAGE 

XBAP – XML BROWSER APPLICATION 

XDR – XML DATA REDUCED 

XHTML – EXTENSIBLE HYPER TEXT MARKUP LANGUAGE 

XLINK – XML LINKING LANGUAGE 

XML – EXTENSIBLE MARKUP LANGUAGE 

XML POINTER LANGUAGE 

XOML – EXTENSIBLE OBJECT MARKUP LANGUAGE 

XPATH –XML PATH LANGUAGE 

XPOINTER –XML POINTER LANGUAGE 

XQL – XML QUERY LANGUAGE 

XSD – XML SCHEMA DEFINITION 

XSL – EXTENSIBLE STYLESHEET LANGUAGE 

XSLT – EXTENSIBLE STYLESHEET LANGUAGE TRANSFORMATIO 

 

محمدحسین فخرآوری ، جمعه ۱۳۹۱/۰۷/۲۸ ، 12:0

استفاده از IntelliSense

شاید یکی از ویژگیهای مهم Visual Studio  ، اینتل لایسنس (IntelliSense) باشد. IntelliSense ما را قادر می سازد که به سرعت به کلاسها و متدها و….دسترسی پیدا کنیم.وقتی که شما در محیط کدنویسی حرفی را تایپ کنید . IntelliSenseفورا فعال می شود.

کد زیرا را در داخل متد Main بنویسید.

System.Console.WriteLine(“Welcome to Visual C# Tutorials!”);

اولین حرف را تایپ کنید تا IntelliSense فعال شود.

 intellisense-01

IntelliSense لیستی از کلمات به شما پیشنهاد می دهد که بیشترین تشابه را با نوشته شما دارند.شما می توانید با زدن دکمه tab گزینه مورد نظرتان را انتخاب کنید.

با تایپ نقطه ( . ) شما با لیست پیشنهادی دیگری مواجه می شوید.

 intellisense-02

اگر بر روی گزینه ای که می خواهید انتخاب کنید لحظه ای مکث کنید توضیحی در رابطه با آن مشاهده خواهید کرد مانند شکل بالا :

هر چه که به پایان کد نزدیک می شوید لیست پیشنهادی محدود تر می شود.برای مثال با تایپ حرف W ، IntelliSense فقط کلماتی را که دارای حرف W هستند را نمایش می دهد.

 intellisense-03

با تایپ حرف های بیشتر  لیست محدودتر شده و فقط دو کلمه را نشان می دهد.

 intellisense-04

اگر IntelliSense نتواند چیزی را که شما تایپ کرده اید پیدا کند هیچ چیزی را نمایش نمی دهد.برای ظاهر کردن IntelliSense کافیست دکمه ترکیبی Ctrl+Space را فشار دهید.برای انتخاب یکی از متدهایی که دارای چند حالتهستند، میتوان با استفاده از دکمه های مکان نما (بالا و پایین) یکی از حالت ها را انتخاب کرد. مثلا متد Writeline همانطور که در شکل زیر مشاهده می کنید دارای ۱۹ حالت نمایش پیغام در صفحه است.

 intellisense-05

IntelliSense به طور هوشمند کدهایی را به شما پیشنهاد می دهد و در نتیجه زمان نوشتن کد را کاهش می دهد.

 

برچسب‌ها: IntelliSense
محمدحسین فخرآوری ، چهارشنبه ۱۳۹۱/۰۶/۰۸ ، 13:56

تابع تشخیص Is Leap Year

public static bool IsLeapYear(int year)
{
int[] LeapYears33 = new int[] { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 };
return (LeapYears33[year % 33] == 1);
}

محمدحسین فخرآوری ، چهارشنبه ۱۳۹۰/۰۷/۲۷ ، 13:31

Interface   چیست ؟

Interface   چیست ؟

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

در حالت عادی ارث بری از چند کلاس به طور هم زمان امکان پذیر نیست ولی Interface ها این مزیت را دارند که به هر تعداد که لازم است ، کلاسهای مشتق شده  از آنها ارث بری کنند . این موضوع یکی از مهم ترین مزایای Interface می باشد .

هم چنین با استفاده از Interface کد ها قبلیت بهتری در نگهداری ، انعطاف و استفاده مجدد پیدا میکنند .
Abstract Class  چیست ؟

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

یک کلاس Abstract  شبیه Interface میباشد ولی با دیدی وسیعتر . این کلاسها می تواند دارای متدهای Abstract  باشد که شبیه Interface فقط اعلام میشوند و باید در کلاسهای مشتق شده ، بازنویسی شوند . البته میتوان در این کلاسها متد هائی داشت که Abstract نیستند و احتیاجی به پیاده سازی آنها در کلاسهای مشتق شده ندارند .

با توجه به تعاریف ذکر شده کلاس Abstract  حالتی بین کلاسهای معمولی و Interface ها میباشد و کلاسی میباشد که غیر قطعی و ناتمام میباشد که باید در سطح فرزندانش تکمیل شود .
 مزایای کلاسهای Abstract  چیست ؟

یکی از مزیت های کلاس Abstract  فراهم نمودن کلاس پایه برای  دیگر کلاسهای مشتق شده  می باشد با این توضیح متدهای آن می توانند کد نویسی شده باشند یا نه . از طرفی پیاده سازی تمام متدهای Abstract  در کلاس مشتق شده اجباری نیست .(برخلاف Interface)  .

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

1-      یک کلاس معمولی می تواند از یک کلاس Abstract ارث بری کند ولی همان کلاس میتواند از چندین Interface ارث ببرد .

2-      یک Interface  فقط میتواند اعلان متدها و خصوصیتها را داشته باشد اما یک کلاس Abstract  علاوه بر آنها میتوانید متدها و خصوصیتهایی با کدهای کامل داشته باشد .

3-      عناصر موجود در کلاس Abstract میتوانند مانند یک کلاس معمولی دارای سطح دسترسی باشند  ولی Interface  ها فاقد این امکان می باشند .

4-      وقتی شما متدی را به کلاس Abstract اضافه می کنید ، اگر این متد Abstract  نباشد به طور خودکار به همه زیر کلاسها اعمال می شود اما در Interface اگر متدی اضافه کنید باید در تمام زیر کلاسها آن را اعمال کنید .

5-      کلاس Abstract   مانند کلاسهای معمولی می توانند دارای فیلد و عناصر دیگری باشند در حالی که Interface  فاقد این امکان می باشد .

6-      Abstract  یکی از انواع کلاس است ولی Interface   کلاس نیست .

 
چه زمانی از Interface  ها یا کلاسهای Abstract استفاده کنیم ؟

با توجه به توضیحات ذکر شده  مواقعی که نیاز به وراثت چند گانه داریم باید از Interface استفاده کنیم ، به دلیل اینکه این امکان در کلاس های Abstract  وجود ندارد .

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

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

با توجه به اینکه به غیر از اعلان متدها و خصوصیتها امکان تعریف عناصر دیگر در Interface  ها وجود ندارد ، در صورتی که ملزم به استفاده  از این عناصر باشیم ، استفاده از کلاسهای Abstract  ضروری می باشد .

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

به طور کلی Interface ها چارچوب و قابلیتهای کلاس را مشخص میکند و یک قرارداد است  ولی کلاس Abstract  نوع کلاس را معین می کند . این تفاوت کمک بسیاری برای تشخیص زمان استفاده از این دو را  ، به برنامه نویسان میدهد .

برچسب‌ها: Interface چیست
محمدحسین فخرآوری ، چهارشنبه ۱۳۹۰/۰۷/۰۶ ، 20:28

جایگاه Entity Framework در معماری 3 لایه

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

  1-    Data access layer 

  2- Business layer  

  3- Presentation layer 

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

 

محمدحسین فخرآوری ، دوشنبه ۱۳۹۰/۰۶/۲۱ ، 18:37

مقایسه بین Linq to SQL و Entity Framework

شاید برای شما هم این سوال مطرح شده باشد که Linq To Sql  و Entity Framework  چه تفاوتهایی دارند ، در این تایپیک این دو مورد را از جنبه های مختلفی مقایسه خواهم کرد .


1-complexity  یا پیچیدگی : البته منظور از پیچیدگی از نگاه سخت و آسان بودن نیست بلکه از نگاه امکاناتی که در اختیار شما قرار می دهد . مسلما LINQ  امکانات و پیچیدگیهای کمتری دارد.


2-model    یا مدل سازی : ما در Entity Framework  براحتی می توانیم مدل سازی کنیم علاوه بر آن از تمام ارتباطات بین جدولها پشتیبانی می کند LINQ  از یک ارتباط یک به یک بین کلاسها و جدولهای بانک اطلاعاتی پشتیبانی می کند .


3-پشتیبانی از بانک اطلاعاتی : LINQ to SQL  فقط از بانک اطلاعاتی Sql_Server  پشتیبانی می کند در حالی که Entity Framework  می تواند از بانکهای اطلاعاتی مختلفی پشتیبانی کند .


4-زمان توسعه پذیری :To SQL LINQ   می تواند به راحتی استفاده شود و به سرعت کار شما را پیش ببرد . اما در نرم افزارهای پیچیده و بزرگ بدلیل داشتن امکانات محدود و کم دیگر جوابگو نیست .


5-وراثت : Entity Framework  از وراثت بین کلاسها براحتی استفاده و پشتیبانی می کند در حالی که این خاصیت در LINQ  وجود ندارد .


6-نوع فایل : LINQ  در فایلی با پسوند DBML  ذخیره می شوند در حالی که Entity Framework  در فایلهای EDMX  و CSDL ,SSDL  که با فرمت xml  است ذخیره می شوند .


7-نوع مرکب : ما در  Entity Framework می توانیم فیلدی مرکب complex type  تعریف کنیم . این فیلد چیزی شبیه به ساختار ها است . اما این امکان درTo SQL  LINQ  وجود ندارد


8-کویری : همانطور که در آموزشهای خودم نوشتم . Entity Framework  از چندین سبک برای اجرای کویری استفاده می کند . Linq to Entity , EntitySQL , Query With Method


9-کارایی : هر دو از نظر سرعت در اولین اجرا شاید بتوان گفت کند هستند . اما Eitity Framework از نظر کارایی بهتر عمل می کند .


10-توسعه آینده : مایکروسافت چندان علاقه ای به توسعه و ادامه راه LINQ to SQL  ندارد اما در عوض بیشتر تمرکز و توسعه را بر مبنای تکنولوژیهای دیگری گذاشته است از جمله Entity Framework


11-ساخت بانک اطلاعاتی از مدل : ما فقط در Entity Framework  می توانیم ابتدا مدل خودمان را طراحی کنیم و سپس با استفاده از آن مدل ، بانک اطلاعاتی را تولید کنیم. 


محمدحسین فخرآوری ، دوشنبه ۱۳۹۰/۰۶/۲۱ ، 18:36

تغییر ظاهر ویژوال سی شارپ

اگر موقعیت پنجره ها و یا ظاهر برنامه ویژوال سی شارپ را دوست نداشته باشید، می توانید به دلخواه آن را تغییر دهید.

برای این کار بر روی نوار عنوان (title bar) کلیک کرده و آنرا می کشید تا پنجره به شکل زیر به حالت شناور در آید.

 csharp-express-layout-01

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

 csharp-express-layout-02

منطقه ای که پنجره قرار است در آنجا قرار بگیرد به رنگ آبی در می آید.

 csharp-express-layout-03

پنجره در قسمت بالای محیط قرار داده شده است

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

 csharp-express-layout-04

کشیدن پنجره به مرکز صلیب راهنما باعث ترکیب آن با پنجره مقصد می شود که در مثال بالا شما به توانید به عنوان یک تب به پنجره Properties دست پیدا کنید.

 csharp-express-layout-05

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

 csharp-express-layout-06

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

 csharp-express-layout-07

بر روی این آیکون کلیک کنید تا ویژگی auto-hide فعال شود. برای دسترسی به هر یک از پنجره ها می توان با موس بر روی آنها توقف یا بر روی تب های کنار محیط ویژوال سی شارپ کلیک کرد.

 csharp-express-layout-08

برای غیر فعال کردن این ویژگی در هر کدام از پنجره ها کافیست پنجره را انتخاب کرده و دوباره بر روی آیکون مورد نظر کلیک کنید.

 csharp-express-layout-09

به این نکته توجه کنید که اگر شکل آیکون افقی بود بدین معناست که ویژگی فعال و اگر شکل آن عمودی بود به معنای غیر فعال بود ویژگی auto-hide می باشد.

محمدحسین فخرآوری ، سه شنبه ۱۳۹۰/۰۶/۰۸ ، 14:0