همون طور که گفتند بهترین منبع MSDN هسته.
ارزش که داره. با توجه به این که انتقال پروژه از 2005 به 2008 خیلی آسونه و من تا حالا با مشکلی برخورد نکردم.
در کل مهمترین چیزی که به مجموعه دات نت اضافه شده LINQ است. که در راستای اون و به خاطر اون چیزای دیگه ای هم اضافه یا تغییر پیدا کردند.
اول بگم که برنامه ای که توی VS 2008 مینویسید رو میتونید براش نوع framework رو مشخص کنید. مثلا بگید این برنامه از Net Framework 3 استفاده کنه. میتونید بین 3.5 و 3 و 2 یکی رو انتخاب کنید (1 و 1.1 چون سیستمشون متفاوته نمیشه).
تغییرات توی خود VS2008 که اونقدر زیاده که اینجا نمیشه گفت. ADO.NET هم به خاطر LINQ یه سری تغییرات داشته. و ویژوال بیسیک
دو تا Option برای کمپایلر اضافه شده که یکیش برای تعریف وضعیت برای قابلیت Local Type Inference و اون یکی هم برای کار با قابلیت Friend Assemblies.
خود زبان بیسیک. چیزی که من تا حالا دیدم میگه که هفت تا قابلیت جدید(البته همه این قابلیت های جدی برای پشتیبانی LINQ ساخته شدند ولی در کل بصورت مفرد هم مفیدند):
1- Queries
که همون پشتیبانی از LINQ هسته. که بر اساسش کلمات From, Where, Select, Order By, Join, Group By, Skip, Take, Distinct هم به مجموعه کلمات رزرو شده پیوستند.
2- XML in Visual Basic
از این به بعد میتونید راحت توی کداتون و مستقیم XML بنویسید.
کد php:
Dim contact1 As XElement = _
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
ه
3- Local Type Inference
فارسش توی فرهنگ لغت AJL میشه "استنباط نوع داخلی". یعنی الان میتونید مثل زبان PHP با متغیرهاتون رفتار کنید. مقدارو بریزید توش و نوعش بصورت خودکار تعیین میشه. ( البته اگه نوعشو هنگام تعریف مشخص نکنید)
4- Object Initializers: Named and Anonymous Types
حالا میشه موقع ساخت یه شیئ به خصوصیاتش رو مقداردهی هم کرد.
کد php:
Dim b As New Bitmap("c:\ajl.png") With {.Tag = "test"}
ه
5- Anonymous Types
با این میتونید یه نوع داده رو درجا بسازید و استفاده کنید.
کد php:
Dim product = New With {Key .Name = "paperclips", .Price = 1.29}
ه
6- Extension Methods
اینم به دیکشنری AJL میشه توابع افزودنی.( بله از این به بعد توابع هم جزو افزودنی های مجاز به شمار میاند.). حالا شما میتونید یه( یا چند) تابع رو خیلی راحت به یه( فقط یه ;) نوع داده ای که وجود داره اضافه کنید. بدون این که یه نوع داده جدید بسازید.
7- Lambda Expressions
بوسیله این قابلیت میتونید یه تابعو تو یه خط تعریف کنید و همونجا ازش استفاده کنید یا بدید به یه متغیر و بعدا استفاده کنید.
یعنی اینجوری:
کد php:
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
یا اینجوری:
کد php:
Console.WriteLine((Function(num As Integer) num + 1)(5))
(فکر کنم توی سی یه چیزی به اسم macro شبیه به این بود؟)
(Visual Basic Features That Support LINQ رو توی MSDN سرچ کنید رابطه همه اینا رو با LINQ رو میده)
و در نهایت خود ویژوال بیسیک.
بخش ارتباط با پایگاه داده ها : چند مورد برای کار با LINQ و Dataset Designer و SQL Server Compact و ...
بخش IDE: تسهیلات کار با (XML(XML Axis Properties و XML Literals). چند تا نوع پروژه جدید ( بیشتر از چند تا. مجوعه WPF، مجوعه Web، مجموعه Office، مجموعه WCF، مجوعه Workflow و یه Reports Application). پشتیبانی از انتخاب فریمورک.
بخش Deployment: در ClickOnce Deployment پشتیبانی از WPF Web Browser و Visual Studio Tools for Office و یکی دو تا تغییر دیگه. و Windows Installer Deployment هم پشتیبانی از وین ویستا و فریمورک جدید.
یه چیزایی در مورد مثال ها و اینا هم گفته بود که من نفهمیدم قضیش چیه.
همین دیگه.
کامل توی MSDN هسته.
و LINQ رو یادم رفت توضیح بدم.
این توضیح از کتاب Professional LINQ (Programmer to Programmer)
نقل قول: LINQ یا زبان پرس و جوی یکپارچه (Language Integrated Query) تکنولوژی جدیدی است که شرکت ماکروسافت با عرضه نسخه ی سوم Net. آنرا معرفی نمود.
تا کنون مطالبی مختلفی در مورد آن شنیده اید از قبیل اینکه،
LINQ یک مدل عمومی برنامه نویسی برای هر نوع از داده هاست،
LINQ شما را قادر می سازد که داده ها را دستکاری و یا پرس و جوهایی مستحکم مستقل از منبع داده فراهم آورید،
LINQ به تعبیه کردن پرس و جوهای های SQL در کد کمک می کند،
LINQ یک لایه انتزاعی داده است.
تمامی این توصیفات تا حدی درست هستند اما هرکدام صرفا یک جنبه از LINQ را بیان می کند. LINQ قدرتی بسیار بالاتر از قراردادن کوئری های SQL دارد، بسیار ساده تر از استفاده یک مدل یکسان(uniform) برنامه نویسی است و بسیار فراتر ازمجموعه قوانین برای مدل سازی داده هاست.
اين زبان در پي پاسخدادن به مسئله پيچيدهاي در دنياي برنامهنويسي پيشرفته است كه مثلث راكس (ROX Triangle) ناميده ميشود.
مثلث راكس چيست؟
اين روزها اكثر برنامهنويساني كه با زبانهاي شيگرايي مثل سي شارپ يا جاوا كار ميكنند، از دو ابزار مهم ديگر نيز براي ساختن برنامههاي خود استفاده ميكنند:
يكي از اين ابزارها ديتابيس يا همان بانكاطلاعاتي، و ديگري XML است.
مشكلي كه برنامهنويسان با آن درگيرند اين است كه هر يك از اين سه ابزار از منطق و مدل دادهاي (Data Model) متفاوتي پيروي ميكنند. مدل دادهها در بانكهاي اطلاعاتي معمولاً زبان SQL است. در حالي كه هر زبان برنامهنويسي مدل دادهاي خاصي دارد. مثلاً پلتفرم داتنت از فناوري ADO.NET استفاده ميكند. واضح است كه مدل دادهها در ADO.NET و SQL تفاوتهاي زيادي با هم دارند. مدل دادهها در فرمت XML هم به Node و Element است. در XML بايد از زبان XQuery استفاده كنيد.
برنامه نويس در حين كار مرتباً نياز دارد دادههاي خود را از يك مدل به مدل ديگر منتقل كند. مثلاً در يك برنامه مديريت فروش محصولات، گاهي برنامهنويس لازم ميداند دادههاي مشتريان را از بانك اطلاعاتي (مثلاSQL Server ياMySQL ياORACLE ) بخواند و سپس به فرمت XML تبديل كند تا بتواند آن را از مجراي اينترنت (مثلاً از طريق وبسرويسها) عبور دهد. در اين صورت ناگزير است همزمان دادهها را ابتدا با منطق SQL بخواند، سپس با منطق Business Tier (مثل ADO.NET) پردازش كند و سپس با منطق XQuery تبديل كند.
اريك مير از متخصصانSQL Server در شركت مايكروسافت اين سه گانگي را مثلث ROX ناميده است كه سرنام عبارات Relations in data tier ،Objects in business tier وXML in presentation tier است.
در واقع LINQ متدولوژی است که به کارگیری هر نوع از دسترسی به داده ها را ساده و یکسان می کند. شما را محدود به پیروی از یک ساختار خاص نمی نماید و چندین ساختار برای دسترسی به داده ها را فراهم آورده است. مانند هر ابزار دیگری LINQ می تواند به درستی و یا به اشتباه استفاده شود برای شناخت تمام زوایای آن باید بر آن تسلط یابید.
امروزه داده های که توسط برنامه ها مورد استفاده می شود به حوزه های مختلفی تعلق دارد : آرایه، آبجکت، اسناد XML، دیتابیس، فایل متنی(Text)، کلید های رجیستری، پیغام ایمیل، محتوی پیام SOAP(Simple Object Access Protocol)، فایل Excel و . . . که بسیار زیاد هستند.
حال هر حوزه مدل دسترسی مخصوص به خود را دارد. برای نوشتن کوئری ها از SQL استفاده می کنید، برای استفاده از مستندات XML از XQuery یا DOM(Document Object Model) بهره می برید، با تکرار آرایه و ساخت الگوریتمها آبجکت ها را مورد استفاده قرار می دهید. برای برخی حوزه ها مثل فایلهای Excel، پیام ها ایمیل و ... از API ها کمک می گیرید. و در کل برای دسترسی به منابع داده ی مختلف مدلهای متفاوت برنامه نویسی را استفاده می کنید.
تکنولوژی یکنواخت سازی دسترسی به داده ها در یک مدل جامع به شیوه های متعددی آزمایش شده است. به عنوان مثال ابزار ODBC(Open Database Connectivity)، که با این روش به کمک زبان شبه SQL به داده ها به صورت رابطه ای دسترسی پیدا می کنید. گاهی ارائه داده ها به صورت مرتبه ای یا مدل گرفیکی ارائه شده کاراتر از حالت رابطه ایست، علاوه بر آن اگر مدل داده در زبان نباشد، مجبور به مدیریت سیستم نوعهای متفاوتی خواهیم بود، که این تفاوت ها باعث ایجاد خطاهای تطابق بین کد و داده می شود.
LINQ برای حل این مشکلات بوجود آمد به صورتی که شیوه یکسانی را برای دسترسی و مدیریت داده ها بدون پذیرفتن قیود و محدودیت های مدل های قبلی فراهم می آورد. LINQ به جای قراردادن ساختارهای متفاوت، عملیات(و عملگر های) مشترکی را در این مدل های داده به کار می گیرد.