2011/08/18

Converting an ASP.NET website to web application project in Visual Studio 2010

During converting a large ASP.NET website (more than 500 aspx page and 750 ascx user control) to a Web Application Project in Visual Studio 2010, I encountered many problems and found solutions for them. I'd like to share them with all.


1. Website does not have namespace in projects. While Webproject does have. It's better to add namespace for all pages and user controls. Namespaces must match physical path of file in the project tree. If you have not enough time to do it for all items you can just find items with same name and change class names only for them. I have added "Page" in the end of class names of pages that were residing in Pages folder.

2. App_code does work. Better to renamed it to something unreserved like WebCode. Check if build action is set to "compile" not to "content".

3. Take special care for class name of master files.

4. You need to select "convert to web application" by right clicking the web project. It will add designer file for all items. This process is very slow.

5. rdlc reports files (MS SQL Reporting Services client reports) may produce many problems. web.config and other locations must be corrected with newer versions of Reporting Services.

6. Some datasets must be corrected via editing web project csproj file correctly. You must add an entry like following for designer file too.

     
      True
      True
      DataSet1.xsd
    

You can also add a dummy dataset to project and see how it is.

7. Consider having all user controls in the project. In my special case "common" folder added to project too.

8. If you encounter errors like “Element 'x' is not a known element” in Visual Studio 2010  you may try this solution.

9. You may need additional tricks. For example create a dummy user control and drag it on the page.

10. Seems all user controls must have namespace

11. Total process may need many tricks. So turn on your innovation!




2011/08/10

کمک به ترجمه کتاب اصول برنامه‌نویسی

می‌خواهم یک کتاب الکترونیکی ۷۹ صفحه‌ای به نام «اصول برنامه‌نویسی» را به فارسی ترجمه کنم. هر چند اعتقاد دارم که یک برنامه‌نویس خوب باید بتواند از منابع اصلی استفاده کند. اما حدس می‌زنم ترجمه فارسی یک منبع خوب بتواند افراد بیشتری را به خواندن منبع ترغیب کند. حجم کتاب خیلی کم است اما از طرفی مشغله‌های من کم نیستند و از طرفی دیگر هم دوست دارم به این بهانه هم که شده چند دوست جدید پیدا کنم. بنابراین از هر کسی که وقتش را دارد و به موضوع کتاب علاقه‌مند است دعوت می‌کنم ترجمه یک یا دو فصل حدوداً ۸ صفحه‌ای کتاب را به عهده گرفته و به اینجانب کمک نماید.

برای کسب اطلاعات بیشتر راجع به کتاب به این نوشته مراجعه کنید. خود کتاب با اجازه نامه Creative Commons منتشر شده است. پس بنابراین ترجمه و انتشار مجدد آن مشکلی نخواهد داشت. بدیهی است که ترجمه کتاب نیز تحت همین مجوز منتشر خواهد شد. فصل اول و دوم کتاب ترجمه شده است. به خاطر آن که کار نظم و ترتیب داشته باشد به ترجمه‌هایی که بعد از چهارشنبه ۱۶ شهریور ( ۴ هفته بعد) به دستم برسد ترتیب اثر داده نخواهد شد. برای پرهیز از دوباره کاری از قبل هماهنگ شود. علاقه‌مندان به من (afshar dot mohebbi atsign gmail dat kam) ایمیل بزنند.


به روز رسانی:
کار ترجمه با همکاری تعدادی از دوستان شروع شده است. برای کسب اطلاعات بیشتر راجع به روند کار به پروژه Foundation of Programming in Persian در کدپلکس مراجعه کنید. 




2011/08/06

‫کتاب اصول برنامه‌نویسی (Foundation of Programming)

کتاب «اصول برنامه‌نویسی» که یک کتاب الکترونیکی ۷۹ صفحه‌ای است، توسط یکی از فعالان CodeBetter منتشر شده. کلیت مطالب کتاب راجع به مفاهیم نسبتاً جدید تولید نرم‌افزار مثل Persistence، DI، DDD، Unit Test و غیره است. نویسنده در ابتدای کتاب اظهار داشته که این کتاب برای پشتیبانی از حرکت ALT.NET نوشته شده است. این کتاب همچون خود ALT.NET بیشتر روی مفاهیم و تکنیک‌ها مانور می‌دهد چون معتقد است برنامه‌نویسان به اندازه کافی به API دات‌نت مسلط شده‌اند پس حالا وقت آن است که اصولی‌تر برنامه بنویسند.

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


عناوین فصول کتاب:
۱- ALT.NET: معرفی جبهه ALT.NET و تفاوت آن با MSDN Way
‫‫۲-‫ Domain Driven Design: معرفی الگوی DDD‎
‫۳- ‫Persistence: ارتباط با دیتابیس و ذخیره داده‌ها‎
‫‫۴-‫ Dependency Injection: معرفی و ابزارها‏
۵- Unit Testing: تست واحد
۶- Object Relational Mappers: معرفی و استفاده از NHibernate
۷- کار با Memory به طور اصولی
۸- مدیریت Exceptionها
۹- Proxy و استفاده از آن
۱۰- جمع‌بندی


تاریخ این کتاب ۲۰۰۸ بوده و کمی قدیمی می‌باشد. اما با این وجود خواندن و به کارگیری آن به همه برنامه‌نویسان توصیه می‌شود.




‫ALT.NET و MSDN Way‫

از زمانی که با NHibernate آشنا شدم متوجه یک جبهه جالب در دنیای دات‌نت شدم. جبهه کسانی که علاقه زیادی به port کردن پروژه‌های معروف جاوا به دات‌نت، استفاده از design patternهای شی‌گرایی و دنیای Open Source داشتند. نمونه بارز این جبهه خود NHibernate است. پروژه‌ای کاملاً open source برای تزریق OOP به کدهای دسترسی به دیتابیس بر اساس پروژه جاوایی Hibernate.

چند وقت پیش حین خواندن کتاب Foundation of Programming متوجه شدم که اسم این جبهه ALT.NET است. علایق این جبهه علاوه بر موارد بالا شامل unit test و CI و دیگر موارد مشابه هم می‌شود. طرفداران ALT.NET در عین حالی که روی سکوی دات‌نت متمرکز هستند از مایکروسافت و روش‌های مایکروسافتی گریزان هستند. آنها سعی می‌کنند برای هر تکنولوژی و ابزار مایکروسافتی، یک جایگزین open source ارائه دهند.

در مقابل ALT.NET روش MSDN Way قرار دارد. در روش MSDN Way عمده تمرکز افراد بر استفاده از APIهای تکنولوژی‌های مختلف دات‌نت است. کدهای برنامه‌نویسان MSDN Way شباهت زیادی به نمونه‌های معرفی شده توسط مایکروسافت در MSDN دارد. اصلاً اسم MSDN از همین جا آمده. یکی از نشانه‌های گروه MSDN استفاده از DataSet به جای ORMهاست.

برای کسب اطلاعات بیشتر به فصل اول کتاب Foundation of Programming مراجعه نمایید.



شما خودتان را بیشتر از پیروان ALT.NET می‌دانید یا MSDN Way؟