C#は実際にはマルチプラットフォーム言語ですか?


20

C#(および一般的な.netプラットフォーム)は、マルチターゲティングアプリからの優れたオプションになりつつあるようです。

  • 公式MS .netフレームワーク:フルブローウィンドウ開発、asp.net開発、Windows Phone開発など
  • モノとそのすべての派生物:モノタッチ、モノドロイド:世界の残り。このツールは現在RTMです。

  • これは、C#がデスクトップ、Web、モバイルなどの最も人気のあるプラットフォームをターゲットとするための優れた言語になりつつあることを意味していますか?

  • ターゲットプラットフォームの「ネイティブ」言語(客観的なC、Javaなど)を使用するのがさらに良いですか?
  • それはただの煙幕であり、唯一のマーケティング言語ですか?

プラットフォーム間でコードをコピー/貼り付けできないことを実際に意識していることに注意してください。しかし、アプリケーション(モデル、ビジネスなど)の下位層は再利用できると確信していますが、プラットフォームに上位層(Guiなど)を適応させる必要があることは知っています。私の目標は、技術的なコードの共有よりも必要なスキルに重点を置いています。

[編集]私 c#を大量に使用する会社のac#開発者です。そのため、会社のターゲットプラットフォームの範囲を拡大する計画でC#について話しました。

回答:


12

はい。一般に、.NET Frameworkは、幅広いデバイスを対象とするアプリに最適です。しかし、これは.NETに固有のものではありません。Javaはずっと前にそれを行っていました。念頭に置いておくべきことは、特定のプラットフォーム用のネイティブツールに代わる本当の代替手段がないことです。

.NETで作成したMacアプリケーションは、ネイティブのMac OS Xアプリケーションのように見えません。これは、大多数のOS Xユーザーによって問題と見なされています。ビジネスモデルがユーザー満足度の最大化よりも飽和の最大化を重視するかどうかによっては、戦略的には重要ではないかもしれませんが、選択を行う際に留意すべきことは確かです。

LinuxおよびWindowsのGUIシステムは、どのアプリケーションが「ネイティブ」に見え、プラットフォームに適しているかという点でいくぶん柔軟性があります。しかし、主に明確なインターフェースガイドラインの欠如と、アプリケーション開発者が歴史的に存在するものを無視してきたという事実に責任があると思います。多くのMacユーザーは、その一貫したユーザーインターフェイスのためにMacを好んでいます。

GUIレイヤーを特定のプラットフォームに適合させる必要があることを考慮して(そして、Objective-Cなどの別の言語で完全に書き換える必要がある場合)、ライブラリコードのみに.NETプラットフォームを活用できます。そして、私の意見では、C#がC ++に勝るという明確な勝利はありません。

迅速なアプリケーション開発のために、C#や.NETよりも優れた選択肢はほとんどありません。また、アプリをすばやくプッシュして、多様なプラットフォームですぐに利用できるようにすることは、ビジネス上の利点です。しかし、ユーザーを真に満足させることを目的とする真のマルチプラットフォームアプリケーションの場合、必ずしも特効薬ソリューションではありません。


9
「.NETで作成したMacアプリケーションは、ネイティブのMac OS Xアプリケーションのようには見えません...」MonoMacを紹介します:mono-project.com/MonoMac

3
@Dimitris:せいぜい懐疑的だと言っておきましょう。Qtの人々はこれを試してみましたが、人々はそれを達成したことについていまだに飛び跳ねています。彼らは間違っています:そうではありません。Qtアプリケーションは、ネイティブOS Xアプリケーションのように見えませ。彼らはただ...間違っています。提案されたリンクにはスクリーンショットは表示されませんが、UIが完璧になったとしても、動作や実装の詳細がすべて失われます。しかし、参考に感謝します。楽観的なことです。
コーディグレー

7
@Cody Grey:MonoMacは、クロスプラットフォームAPIではなく、基になるCocoa APIをネイティブにラップするため、外観と動作がネイティブです。ネイティブなので、見た目も動作もネイティブです。

1
@Cody Gray:MonoMacはMacに、MonoTouchはiOSに対応しています。ネイティブアプリを作成できます。Obj-Cの代わりにC#を使用します。「WinFormsやGtkをMacで見栄えよくする」ことではありません。

2
iPadとWindows Phone、ASP.NET MVC3、NT Servicesをロボット制御システムと接続するシステムを構築している最中であるため、上記の会話に参加したかっただけです。上記のCodyが指摘したMono、MonoDroid、MonoTouchなどは、C#でコードを記述し、C#と.NET Framework(Linqを含む)のパワーを活用しながら、自由にアクセスできるようにする方法です。選ばれたプラットフォームの「ネイティブ」API ...ほとんどのネイティブC / C ++ / ObjCコードに固有の多くのメモリ管理の問題を回避しながら。
リチャードターナー

6

Microsoft .NETは、公式のCLR、DLR、BCL、CLI、およびCLSの実装です。他の企業、グループ、コミュニティ、またはワークグループは、最新のフレームワークと言語バージョンの1:1実装が可能な方法でマイクロソフトと関連付けられていません。

基本的に、具体的なプロジェクトで利用したい言語とフレームワークの機能を確認し、それらが非公式の.NET実装に存在するかどうかを確認する必要があります。

コンパイル1回のソリューションを期待し、どこにでも配布する場合は、間違っています。ケーススタディを作成する必要があります。


それは多くのTLAです!
タムリン

ハハハハええ@tamlyn
マティアスFidemraizer

.NETの多くがオープンソースになったため、状況は変わり
イアン

@Ian確か.......
マティアスFidemraizer

2

XboxとWindowsマシンで実行するゲームでC#を使用し、ロボットソリューション用のCompact Frameworkアプリで使用します。iPad開発用にMonoTouchを使用します。Linux上で実行するWebアプリと他のいくつかのソリューションがあります。通常、特定のプラットフォームであなたのことをする方法があります。コア層はそれらのほとんどでほぼ同じです(実際にケーススタディが必要です)。問題-そして、私はそれをシリーズ1と考えています-は開発環境です。私はVisual Studioとその機能に慣れています。しかし、MonoDevelopの例は私を夢中にさせます。


1
ノベルは最近、VSでMonoコードを開発できるように、VS 2010拡張機能をリリースしました。
モーガンハーロッカー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.