2010-06-19 24 views
8

Nếu ai đó bắt đầu với khuôn khổ .NET, mẫu khả thi nhất để bắt đầu là gì? Và bởi khả thi tôi có nghĩa là một trong đó có đường cong học tập thấp nhất và lợi nhuận cao nhất.Bắt đầu với .NET - ASP.NET, WPF, Silverlight hoặc Command Line C#?

Bắt đầu với:

  • lệnh ứng dụng Prompt trong C#?
  • Các ứng dụng web sử dụng ASP.NET?
  • Ứng dụng Silverlight trong XAML/C#?
  • WPF/Winforms Ứng dụng dành cho máy tính để bàn?

Tôi không muốn tập trung quá nhiều vào một miền cụ thể vào lúc này, thay vào đó hãy tìm hiểu một chút về mọi thứ trong .NET Framework 4.0. Theo thứ tự nào thì tốt hơn bạn nên học .NET?

Trả lời

12

Ứng dụng giao diện điều khiển rõ ràng là điểm khởi đầu: giao diện người dùng là một khu rừng rộng lớn, và không có ý thức cố gắng vượt qua nó cho đến khi bạn phát triển khả năng để tìm những con đường mòn trong vùng hoang dã. Ngoài ra, không có gì là bạn sẽ học cách làm các ứng dụng giao diện điều khiển không áp dụng được trong mọi thứ khác bạn làm trong C#.

Bước tiếp theo sau đó là tìm hiểu cách xây dựng giao diện người dùng. Tôi sẽ đưa ra vấn đề với những người cho rằng bạn chọn WinForms: Vâng, có rất nhiều thông tin về cách sử dụng nó, và có rất nhiều công cụ, và đơn giản nhất là nó khá dễ hiểu. Nhưng có hai vấn đề với WinForms.

Đầu tiên, rất nhiều thứ mà WinForms làm cho dễ dàng như vậy thực sự là thực hành lập trình cực kỳ kém. Việc kết hợp logic nghiệp vụ và thuyết trình trong cùng một lớp là tiêu chuẩn trong lập trình WinForms, và phải mất một lượng công sức để phá vỡ thói quen đó, đặc biệt là từ ràng buộc dữ liệu - một công cụ quan trọng trong việc tách mô hình dữ liệu khỏi bản trình bày. WinForms, trong khi đó là trung tâm của kiến ​​trúc của WPF. Có rất nhiều điều cần tìm hiểu với WPF - một số lô hàng nhiều hơn - nhưng bạn sẽ viết nhiều chương trình tốt hơn.

Thứ hai, WinForms sắp hết hạn sử dụng. Bạn sẽ không thấy Microsoft đổ thêm tài nguyên để cải thiện nó. Họ đã xong.Điều này hầu như không có nghĩa là nó sẽ không có ích trong tương lai - đó là - nhưng sự thâm nhập tổng thể của nó trong hệ sinh thái phát triển phần mềm là, ngay bây giờ, lớn như nó từng có.

Một lý do khác để đi với WPF là hầu hết những gì bạn học làm việc với WPF cũng được áp dụng cho Silverlight, mở ra một cánh cửa sẽ được đóng vĩnh viễn với WinForms.

Theo như ASP.NET là có liên quan, đó là một cái gì đó mà bạn không muốn tìm hiểu cho đến khi bạn cần.

+1

Tôi đồng ý. Tôi cũng sẽ thêm điều đó cho một người mới bắt đầu mà chưa bị hỏng bởi WinForms, WPF là một mô hình dễ hiểu và dễ làm việc hơn nhiều.Ví dụ, mã WinForms cơ bản nhất để thêm các nút vào một biểu mẫu lập trình yêu cầu bạn tính toán và thiết lập tọa độ của chúng. Với WPF bạn không phải đối phó với các tọa độ ở tất cả - các ItemsControl xử lý điều đó cho bạn. Có rất nhiều ví dụ khác tôi có thể đưa ra điều này. –

+1

Tháng trước, tôi đã giới thiệu 12 đứa trẻ với các khái niệm cơ bản về lập trình, C# và WPF, tất cả chỉ trong 7 giờ. Đến cuối lớp học của chúng tôi, họ đã viết mã C# thực với các điều kiện và vòng lặp, tạo và sử dụng các đối tượng, và thiết kế giao diện người dùng, bố cục và hoạt ảnh. Và họ thực sự hiểu những gì họ đang làm. Tôi đã dạy các kỹ năng tương tự cho người mới bắt đầu trở lại trong những ngày của WinForms. Thật tuyệt vời với tôi, tôi đã dạy cho người mới bắt đầu sử dụng WPF và Expression Blend một cách mượt mà và dễ dàng hơn nhiều. –

+1

Một số điều cần ghi nhớ nếu bạn quyết định đi theo lộ trình WPF: Cần sử dụng phiên bản mới nhất của Visual Studio để được hỗ trợ tốt. Các phiên bản cũ hơn khá lỗi. Có thể không chạy trên phần cứng hoặc netbook cũ vì yêu cầu hỗ trợ video phần cứng Rất nhiều mã cũ vẫn sử dụng WinForms – daveangel

3

Dấu nhắc lệnh có lẽ là dễ nhất vì bạn có thể bỏ qua thư và những thứ tương tự nhưng tất nhiên bạn rất hạn chế. Tiếp theo sẽ là WinForms khá dễ dàng vì bạn có thể dễ dàng theo dõi trạng thái.

Nhưng nó có thể phụ thuộc vào kinh nghiệm hiện tại của bạn, nếu bạn đã có một số kinh nghiệm web, WebForms thể có ý nghĩa hơn đối với bạn hơn WinForms ví dụ

1

Nếu tôi được dạy một người mới (hoàn toàn mới để lập trình) sau đó tôi sẽ bắt đầu với các ứng dụng giao diện điều khiển. Điều này sẽ cung cấp cho bạn cơ hội để dạy các khái niệm lập trình OO cơ bản mà không cần thêm sự phức tạp của phát triển GUI hoặc các phức tạp tiềm năng của vòng đời trang ASP.Net.

Sau đó tôi sẽ chuyển sang phát triển WinForms và làm việc trên lập trình hướng sự kiện và GUI.

1

Bạn đã biết môi trường lập trình nào?

Tôi sẽ bắt đầu với một ứng dụng cửa sổ chuẩn (winforms) vì bạn có thể dễ dàng kéo và thả các thành phần trực quan vào cửa sổ và tạo một số tương tác khá nhanh chóng và dễ dàng.

Mặc dù hầu hết các dự án có thể dễ dàng được tạo và chạy ngay lập tức, các ứng dụng web yêu cầu cơ sở hạ tầng và kiến ​​thức một chút về web.

2

Bạn có ứng dụng mình cần hoặc muốn phát triển không?

Nếu bạn có, hãy cố gắng xác định nó một cách chi tiết và sau đó bạn sẽ có một bộ mục tiêu bạn cần đạt được.

Khi bạn có những mục tiêu này, bạn có thể tìm ra công nghệ tốt nhất sẽ giải quyết vấn đề là gì.

Ví dụ: nếu bạn có giao diện người dùng khá tĩnh, WinForms có thể là OK, nhưng nếu bạn muốn kết hợp hoạt ảnh và các hiệu ứng hình ảnh khác, bạn nên xem WPF/Silverlight.

1

"Và theo ý tôi là người có đường cong học tập thấp nhất và mức tăng cao nhất. Tôi không muốn tập trung quá nhiều vào một trường cụ thể vào lúc này, thay vào đó hãy tìm hiểu một chút về mọi thứ trong .NET Framework 4.0. "

Nếu bạn đã lập trình .NET. Trong một thời gian bạn biết rằng 2 câu trên là một oxymoron nếu tôi từng thấy một LOL.

Thời gian qua tôi đã kiểm tra NET chứa: Assemblies y = 15.1x + 17,3 108

Namespace y = 51.6x + 51 361

loại y = 2249.3x + 626,9 14123

viên y = 21343x + 7951.3 136009

Vì vậy, ngay cả khi bạn đã lập trình với .NET toàn thời gian trong một thời gian, bạn sẽ hầu như không làm xước bề mặt! Bạn thậm chí không đề cập đến nếu bạn đã thành thạo trong C# chưa nhưng nếu không bạn có thể đọc ebook miễn phí Petzold để có được tốc độ vì đó là ngôn ngữ được sử dụng nhiều nhất cho Silverlight, ASP, WinForms lập trình. Nếu dòng lệnh bores bạn thích nó làm tôi sau đó tôi đề nghị các "Head First C#" book mà sẽ cung cấp cho bạn một giới thiệu nhẹ nhàng để C# và những gì NET có khả năng.

0

Đối với các bước đầu tiên, tôi sẽ đề xuất các ứng dụng dòng lệnh.

Đối với mọi thứ khác, hãy theo dõi bằng các ứng dụng WinForm. Họ có một phạm vi bảo hiểm rộng trên web trong các giai điệu vv, và cung cấp một loạt các vấn đề và giải pháp bao gồm các tính năng C# cơ bản và nâng cao.

ASP.NET, Silverlight và WPF là các phần mở rộng khác của những điều cơ bản (Console và Winforms), thực tế thêm một bộ thư viện khung công tác khác. Đó là những đóng băng của chiếc bánh mà bạn có thể giải quyết một khi bạn quản lý những điều cơ bản.

Đừng làm cho tôi sai, bạn cũng có thể tìm hiểu các khái niệm cơ bản với ứng dụng Silverlight hoặc WPF. Nhưng WinForm được biết đến với hầu như bất cứ ai đã từng phát triển trong C#, vì vậy bạn có nhiều khả năng tìm thấy câu trả lời tốt cho các vấn đề khó khăn mà bạn có thể gặp phải trên web (trên SO hoặc ở nơi khác). Có rất nhiều người ở đây hiểu biết nhiều hơn tôi, những người có thể giúp bạn khám phá chiều sâu của khung công tác .NET

Một khi bạn đã nắm vững các phần này, hãy khám phá lãnh thổ mới - và chẳng bao lâu bạn sẽ là để trả lời các câu hỏi của tôi về WPF, mà tôi không biết gì về ;-)

+0

Tôi không đồng ý với tuyên bố của bạn rằng "bạn ... có thể tìm thấy câu trả lời hay" cho các câu hỏi của WinForms trên web. Hầu hết các lời khuyên của WinForms mà tôi gặp phải đều không tốt, đơn giản bởi vì mô hình và truyền thống của WinForms khuyến khích thực hành lập trình xấu. Ví dụ, WinForms thực sự có ràng buộc dữ liệu hoạt động (không phải cũng như WPF, nhưng nó hoạt động) nhưng trong mười năm tôi chỉ một lần tìm thấy bất kỳ mã ứng dụng thực tế nào sử dụng nó. Hầu như mọi ví dụ WinForms bạn tìm thấy trên web là thực hành lập trình khủng khiếp, và điều này được phản ánh trong các ứng dụng WinForms thực tế mà tôi đã thấy. –

+0

@Ray Burns: Để lại câu hỏi nếu WinForms dạy thói quen lập trình xấu sang một bên, có nhiều thông tin hơn có sẵn về cách lập trình cho chúng mà có cho Silverlight et. al. Đó là lý do tại sao tôi khuyên bạn nên đi cho họ. – Treb

2

Bắt đầu với command line/console ứng dụng.

lý do tại sao?

Điều đầu tiên là triển khai cho các khái niệm hướng đối tượng của bạn là cơ sở nhưng không xâm nhập vào sự phức tạp của ứng dụng/cửa sổ ứng dụng/dịch vụ web hoặc bao giờ.

Lập trình sử dụng mẫu Console application sẽ giúp bạn tránh xa những phức tạp không cần thiết và bạn có thể tập trung vào các hoạt động bên trong của khuôn khổ và tính năng.

Khi thực hiện xong và đã khám phá các tính năng/thư viện như nói System.Collections v.v ... thì bạn nên chọn từ các miền phát triển rộng lớn trên cơ sở sở thích và trải nghiệm phát triển trước đó của bạn.

Phát triển ứng dụng web i-e/Phát triển trên máy tính để bàn hoặc cách khác.

Điều này sẽ giúp bạn quyết định công nghệ nào cần tìm hiểu thêm, song song với sở thích của bạn. Giống như, nếu bạn quan tâm đến phát triển web-ứng dụng mà bạn có thể đi cho Asp.Net WebForms/Asp.Net MVC vv và không chấp cần phải lãng phí thời gian trên Windows Forms or WPF

hy vọng điều này giúp

0

Dưới đây là đánh giá của tôi dựa trên các tiêu chí bạn chỉ định:

  • Dòng lệnh rất nhanh để tìm hiểu, nhưng bạn không thể thực sự làm nhiều nhưng in văn bản, vì vậy sau khi chơi với một vài chương trình đơn giản, bạn sẽ nhanh chóng muốn tiếp tục.

  • WPF/Silverlight là thứ hai dễ dàng nhất sau dòng lệnh miễn là bạn bắt đầu bằng cách làm việc thông qua một vài ví dụ sử dụng DataTemplates và ItemsControl. Một khi bạn cảm thấy thoải mái với những điều này, bạn có thể tập trung vào việc học các phức tạp của C# và các thư viện lớp cơ sở của NET Framework, hoặc bạn có thể khám phá các phần tử đồ họa của WPF.

  • WinForms phải tránh vì khó hiểu hơn WPF/Silverlight: Trong WPF/Silverlight bạn tạo đối tượng dữ liệu và sau đó vẽ một khung nhìn hiển thị chúng, cộng với WPF/Silverlight xử lý tất cả vị trí và bố trí. Trong WinForms, bạn phải tự chuyển dữ liệu qua lại giữa các đối tượng dữ liệu và các đối tượng UI của bạn, và bạn phải định vị rõ ràng mọi thứ. Các cuộc đình công khác chống lại WinForms là nó nhanh chóng trở nên lỗi thời, và nó buộc bạn vào một số thực hành lập trình rất xấu.

  • Không nghi ngờ gì ASP.NET có đường cong học tập cao nhất của tất cả các công nghệ mà bạn liệt kê, và tôi sẽ làm cách xa nhất để tránh xa nó càng lâu càng tốt!

Khi bạn sẵn sàng tốt nghiệp từ dòng lệnh (có thể trong vòng một tuần), bạn không cần phải chọn WPF hay Silverlight. WPF dễ triển khai hơn một chút và kỹ năng chuyển giao tốt nên tôi có thể bắt đầu ở đó.

Bắt đầu bằng cách tạo một ứng dụng WPF đơn giản có một cửa sổ đơn với Nút, Hộp danh sách và Hộp văn bản hoặc hai. Tạo thuộc tính trong UserControl của bạn và liên kết chúng. Sau đó bắt đầu chơi. Có nhiều hướng dẫn sẽ giúp bạn bắt đầu. Tôi đã tìm thấy cuốn sách "WPF Unleashed" của Adam Nathan là một nguồn tài nguyên tuyệt vời cho người mới bắt đầu.

Lấy bản sao của Expression Blend nếu có thể. Có phiên bản dùng thử 30 ngày bạn có thể tải xuống. Nó rất hữu ích trong việc chơi với các khía cạnh giao diện người dùng của WPF và tìm hiểu cách chúng hoạt động, đặc biệt là tài nguyên, mẫu và hoạt ảnh.

Một mẹo cuối cùng: Nếu bạn đã bao giờ tìm thấy một cuốn sách hay blog có chứa mã như thế này, chạy cho cuộc sống của bạn:

for(int i=0; i<10; i++) 
{ 
    Button b = new Button(); 
    ... 
    panel.Add(b); 
} 

(Trừ khi, tất nhiên, tác giả chỉ sử dụng mã như vậy để cho bạn thấy những gì KHÔNG làm.)

0

Tôi khuyên bạn nên xây dựng các chương trình dòng lệnh đơn giản chỉ để có được cảm giác về ngôn ngữ + Khuôn khổ .NET. Tuy nhiên điều này có thể là một chút không hài lòng trong một thế giới hướng UI. Rất nhiều công nghệ dựa trên giao diện người dùng sẽ giới thiệu cho bạn khái niệm tích hợp với một khung bên ngoài, đó là một trải nghiệm quan trọng trong chính nó. Thường thì điều này rất bổ ích vì người khác đã làm xong đã làm công việc khó khăn và bạn chỉ đơn giản là có thể vui vẻ.

Cá nhân tôi muốn giới thiệu ASP.NET cuối cùng - nó chỉ là một chút lạ và bạn sẽ phát triển những thói quen xấu.

Dựa trên đề xuất đó, tôi khuyên bạn nên sử dụng WinForms tiếp theo, nó sẽ hướng dẫn bạn nhiều hơn về các sự kiện và tương tác giao diện người dùng, nhưng vẫn không có mẫu mã nghiêm ngặt. Trong những ngày đầu của tôi, tôi đã viết một số mã WinForms gây sốc. Bạn có rất nhiều quyền lực nhưng ít hướng dẫn.

Tôi đã thấy một số công việc tốt với WPF, nhưng nó đòi hỏi rất nhiều đọc lên phía trước. Như là một điểm khởi đầu ít nhất bạn thường có thể làm cho một số thiết kế tiên tiến với ít mã - có ít đi sai và bạn có thể phát triển thành nó.

Đề xuất giao diện người dùng đầu tiên của tôi, sau khi chơi với ứng dụng bảng điều khiển, sẽ là khung ASP.NET MVC. Nó rất dễ dàng để viết mã, có một mẫu thiết kế hợp lý chặt chẽ để bạn không thể đi quá sai, và bạn có thể xây dựng trang web khá tốt trong một thời gian tương đối nhỏ. Cá nhân tôi đã chọn nó rất nhanh so với các công nghệ khác, nhưng đã tìm thấy các điểm mở rộng tuyệt vời để giữ cho tôi quan tâm.