c # เป็นภาษาแบบหลายแพลตฟอร์มจริงหรือไม่


20

C # (และแพลตฟอร์ม. net โดยทั่วไป) ดูเหมือนว่าจะกลายเป็นตัวเลือกที่ดีในแอปที่กำหนดเป้าหมายหลายตัว:

  • กรอบอย่างเป็นทางการของ MS. net: การพัฒนาแบบเต็มรูปแบบของ windows blow, asp.net dev, Windows phone Dev และอื่น ๆ
  • โมโนและทุกส่วนที่เกี่ยวข้อง: monotouch, monodroid: ส่วนที่เหลือของโลก เครื่องมือนี้เป็น RTM วันนี้

  • หมายความว่า C # กลายเป็นภาษาที่ดีสำหรับการกำหนดเป้าหมายแพลตฟอร์มยอดนิยม: เดสก์ท็อปเว็บและอุปกรณ์เคลื่อนที่หรือไม่

  • มันยังดีกว่าถ้าใช้ภาษา "ดั้งเดิม" ของแพลตฟอร์มเป้าหมาย (วัตถุประสงค์ C, Java และอื่น ๆ )
  • มันเป็นเพียงหน้าจอของควันและภาษาการตลาดเท่านั้น?

โปรดทราบว่าฉันมีสติจริง ๆ แล้วฉันจะไม่สามารถคัดลอก / วางรหัสระหว่างแพลตฟอร์มได้ แต่ฉันแน่ใจว่าแอปพลิเคชันเลเยอร์ที่ต่ำกว่า (โมเดลธุรกิจ ฯลฯ ) สามารถนำกลับมาใช้ใหม่ได้ แต่ฉันรู้ว่าฉันจะต้องปรับเลเยอร์ที่สูงขึ้น (Gui และอื่น ๆ ) ไปยังแพลตฟอร์ม เป้าหมายของฉันเน้นที่ทักษะที่จำเป็นมากกว่าการใช้รหัสทางเทคนิคร่วมกัน

[แก้ไข] ฉันเป็นผู้พัฒนา AC # ใน บริษัท ที่ใช้ c # อย่างหนาแน่น นั่นเป็นเหตุผลที่ฉันพูดคุยเกี่ยวกับ c # ในแผนการขยายขอบเขตของแพลตฟอร์มเป้าหมายใน บริษัท ของฉัน

คำตอบ:


12

โดยทั่วไปแล้ว. NET Framework นั้นยอดเยี่ยมสำหรับแอพที่กำหนดเป้าหมายไปยังอุปกรณ์หลากหลายประเภท แต่นี่ไม่ใช่เอกลักษณ์ของ. NET Java ทำมานานแล้ว สิ่งที่ต้องคำนึงถึงคือไม่มีทางเลือกอื่นที่แท้จริงสำหรับเครื่องมือเฉพาะสำหรับแพลตฟอร์มเฉพาะ

แอปพลิเคชัน Mac ที่คุณสร้างด้วย. NET จะไม่มีลักษณะเหมือนแอปพลิเคชัน Mac OS X ดั้งเดิมและถือว่าเป็นปัญหาจากผู้ใช้ OS X ส่วนใหญ่ นั่นอาจไม่สำคัญสำหรับคุณอย่างมีกลยุทธ์ทั้งนี้ขึ้นอยู่กับว่ารูปแบบธุรกิจของคุณให้ความสำคัญกับความอิ่มตัวของสีมากกว่าการเพิ่มความพึงพอใจของผู้ใช้ให้สูงสุด แต่ก็เป็นสิ่งที่คุณควรคำนึงถึงเมื่อเลือก

ระบบ GUI ใน Linux และ Windows มีความยืดหยุ่นมากกว่าในแง่ที่แอพพลิเคชั่นมีลักษณะ "ดั้งเดิม" และเหมาะสมกับแพลตฟอร์ม แต่ฉันโทษว่าส่วนใหญ่เกี่ยวกับการขาดแนวทางอินเตอร์เฟซที่ชัดเจนและความจริงที่ว่านักพัฒนาแอปพลิเคชันมีความเต็มใจที่จะเพิกเฉยต่อสิ่งที่มีอยู่ในอดีต ผู้ใช้ Mac หลายคนชอบใช้ Mac อย่างแม่นยำเนื่องจากส่วนต่อประสานผู้ใช้ที่สอดคล้องกัน

พิจารณาว่าคุณจะต้องปรับเลเยอร์ GUI กับแพลตฟอร์มเฉพาะ (และอาจจะเขียนในภาษาที่แตกต่างอย่างสิ้นเชิงเช่น Objective-C) ซึ่งจะทำให้คุณใช้แพลตฟอร์ม. NET สำหรับรหัสไลบรารีเท่านั้น แล้วในความคิดของฉันก็ไม่ชนะอย่างชัดเจนสำหรับ C # มากกว่า C ++

สำหรับการพัฒนาแอปพลิเคชันอย่างรวดเร็วมีทางเลือกน้อยกว่าดีกว่า C # และ. NET และการผลักดันแอพออกอย่างรวดเร็วและการมีแอพให้บริการบนแพลตฟอร์มที่หลากหลายนั้นเป็นข้อได้เปรียบทางธุรกิจอย่างแน่นอน แต่สำหรับแอพพลิเคชั่นหลายแพลตฟอร์มที่มีเป้าหมายเพื่อสร้างความพึงพอใจให้กับผู้ใช้อย่างแท้จริงไม่จำเป็นต้องเป็นโซลูชั่นกระสุนเงิน


9
"แอปพลิเคชัน Mac ที่คุณสร้างด้วย. NET จะไม่มีลักษณะเหมือนแอปพลิเคชัน Mac OS X ดั้งเดิม, ... " ผมขอแนะนำคุณกับ MonoMac: mono-project.com/MonoMac

3
@Dimitris: เอาเป็นว่าฉันไม่แน่ใจ กลุ่มคน Qt ลองทำสิ่งนี้และผู้คนยังคงกระโดดขึ้นและลงเกี่ยวกับการประสบความสำเร็จ พวกเขาผิด: พวกเขาไม่ได้ แอปพลิเคชั่น Qt ดูไม่เหมือนแอพพลิเคชั่นดั้งเดิมของ OS X พวกเขาเป็นเพียง ... ผิด ฉันไม่เห็นภาพหน้าจอใด ๆ ในลิงก์ที่คุณแนะนำ แต่ถึงแม้ว่าพวกเขาจะได้รับ UI ที่สมบูรณ์แบบพวกเขาจะยังคงคิดถึงพฤติกรรมและรายละเอียดการใช้งานทั้งหมด ขอบคุณสำหรับการอ้างอิงแม้ว่า มันเป็นสิ่งที่จะมองโลกในแง่ดีเกี่ยวกับ
Cody Gray

7
@Cody Grey: MonoMac มีลักษณะและมีลักษณะเป็นพื้นเมืองเพราะไม่ใช่ API ข้ามแพลตฟอร์ม แต่จะใช้ Cocoa API แทน มันดูและทำตัวพื้นเมืองเพราะมันเป็นคนพื้นเมือง

1
@Cody Grey: MonoMac สำหรับ Mac MonoTouch คือ iOS คุณสามารถเขียนแอพแบบเนทีฟคุณเพียงแค่ใช้ C # แทน Obj-C ไม่ใช่ "ทำให้ WinForms หรือ Gtk ดูดีบน Mac"

2
เพิ่งต้องการชิพในการสนทนาข้างต้นเนื่องจากฉันอยู่ตรงกลางของการสร้างระบบที่ครอบคลุม iPad & Windows Phone, ASP.NET MVC3 และ NT Services ที่เชื่อมต่อกับระบบควบคุมหุ่นยนต์ Mono, MonoDroid, MonoTouch และอื่น ๆ ตามที่ Cody ระบุไว้ข้างต้นเป็นวิธีการเขียนโค้ดใน C # ที่ช่วยให้คุณสามารถใช้ประโยชน์จากพลังของ C # และ. NET Framework (รวมถึง Linq) ในขณะเดียวกันก็เพลิดเพลินกับการเข้าถึงของคุณได้อย่างอิสระ API ของ "native" ที่เลือกของแพลตฟอร์ม ... ขณะเดียวกันก็หลีกเลี่ยงปัญหาการจัดการหน่วยความจำจำนวนมากซึ่งมีอยู่ในโค้ด C / C ++ / ObjC
Richard Turner

6

Microsoft .NET เป็นการนำ CLR, DLR, BCL, CLI และ CLS อย่างเป็นทางการ บริษัท กลุ่มชุมชนหรือเวิร์กกรุ๊ปอื่น ๆ ไม่ได้เชื่อมโยงกับ Microsoft ในลักษณะที่สิ่งเหล่านี้สามารถมีการใช้งานเฟรมเวิร์กและภาษาเวอร์ชันล่าสุด 1: 1

โดยทั่วไปคุณต้องตรวจสอบคุณสมบัติภาษาและกรอบงานที่คุณต้องการใช้ประโยชน์ในโครงการที่เป็นรูปธรรมและตรวจสอบว่าสิ่งเหล่านี้มีอยู่ในการใช้งาน. NET อย่างไม่เป็นทางการหรือไม่

หากคุณคาดหวังว่าจะมีวิธีการรวบรวมและเผยแพร่ทุกที่คุณผิด: คุณต้องทำกรณีศึกษา


นั่นเป็นจำนวนมากของTLA !
Tamlyn

@tamlyn yeah hahahaha
Matías Fidemraizer

ตอนนี้ที่มากของ NET เป็นโอเพนซอร์สสิ่งมีการเปลี่ยนแปลง ....
เอียน

@Ian Sure .......
Matías Fidemraizer

2

ฉันใช้ C # กับเกมที่ทำงานบนเครื่อง XBOX และ Windows ฉันใช้มันในแอพ Compact Framework สำหรับโซลูชั่นหุ่นยนต์ฉันใช้ MonoTouch สำหรับการพัฒนา iPad ฉันมีเว็บแอปบางตัวที่ทำงานบน Linux และโซลูชันอื่น ๆ มักจะมีวิธีทำสิ่งที่คุณทำบนแพลตฟอร์มที่กำหนด ชั้นแกนกลางนั้นมีความใกล้เคียงกันสำหรับส่วนใหญ่ของพวกเขา (กรณีศึกษาที่จำเป็นจริง ๆ ) ปัญหา - และฉันถือว่าเป็นชุดที่หนึ่ง - คือสภาพแวดล้อมการพัฒนา ฉันคุ้นเคยกับ Visual Studio และคุณสมบัติต่างๆ แต่ MonoDevelop ยกตัวอย่างฉันทำให้ฉันบ้า


1
Novell เพิ่งเปิดตัวส่วนขยาย A VS 2010 เพื่อให้คุณสามารถพัฒนารหัสโมโนใน VS
Morgan Herlocker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.