ASP.NET MVC、Moonlight、およびAndroidのトライアルについてのMiguel de Icaza





InfoQポータルの最近のミゲルのインタビューを翻訳することをお勧めします。



Monoプロジェクトの創設者であり親会社のXamarinであるMiguel de Icasに連絡する機会があります。 MonoのASP.NET MVCの将来やMoonlightの廃止など、いくつかのトピックを取り上げました。



InfoQ :Monoは初期の時代からASP.NETをサポートしていました。 これはショーのためだけに行われたのですか、それともMonoプラットフォーム上のASP.NETに興味がありますか?



Miguel de Icaza :しばらく調査を行っていませんが、後者によると、 Unix上のASP.NETは依然として人々にとって重要な機能です。 MicrosoftがWindows Serverのライセンスポリシーを変更すると、関心が落ちたと思います。 このため、Monoの経済的魅力は何らかの形で低下しています。 現在、MonoでASP.NETを使用する主な理由は、ソフトウェアシステムの他のコンポーネントのLinuxへのバインドです。



InfoQ :ASP.NET MVCはしばらくの間、オープンフレームワークです。 過去を見ると、Monoとの互換性を得るためにどれだけの労力が必要でしたか?



Miguel :MVC 1とMVC 2は非常にシンプルにMonoで起動しました。 MVC3では、すべてが異なっていました。 MVC3は開いていましたが、いくつかのライブラリに依存していました。これらのライブラリは、その時点では開いていなかったか、過渡的でした。 したがって、サイト展開とは異なり、MVC3とMonoを直接組み合わせることは難しくありませんでした。 MVC3のサイトは、Monoで動作することはめったに見られず、非常に困難でした。



ASP.NETライブラリをオープンライセンスに最近移行した後、すべてが変更され、MVC3をそのままMonoで動作させることができました。



ただし、MVC4のしばらくの起動は失敗します。 MVC4では、非同期サポートを追加するためにASP.NETカーネルを更新する必要がありますが、現時点では誰も作業していません。 唯一の質問は、必要な変更をMonoに追加するのに十分な人が必要かどうかです。



InfoQ :あなたの意見では、ASP.NET MVCに直接変更を加える機能は、互換性を維持するための重要な利点ですか?



Miguel :ASP.NET MVCのソースコードを公開する主な利点はコミュニティです。イノベーションとバグ修正の痛みを伴う導入は、Microsoft開発者の能力、彼らがしたこと、実装または明らかにできることによって制限されていました。 現在、ASP.NETは、急速に開発され、変化に対応している他のオープンフレームワークと同等です。



InfoQ :WPF、Silverlight、Silverlight for Windows Embedded、Silverlight for Windows Phoneの4つの異なるXAMLベースのユーザーインターフェイステクノロジーがあります。 Windows 8の登場により、5番目のテクノロジーが登場しますか? そのような多様性に関するあなたの見解は何ですか?



Miguel :現在、Android、iOS、Mac向けのC#に焦点を当てているため、XAMLフレームワークとのやり取りにはあまり熱心ではありません。



XAMLには興味深いソリューションがありますが、マークアップ言語としてXMLをサポートしたことはありません。 長い間、マイクロソフトは、JsonやJavaFXの一部など、人々にとってより理解しやすい何らかのマークアップテクノロジーを採用することを夢見ていました。 それらは、ユーティリティを使用する場合と手動で使用する場合の両方で、同様に簡単に使用および保守できます。



ある時点で、Silverlight 3/4マークアップで動作するオープンレンダリングエンジンを実装しました。



現在、開発者にアプリケーションを2つの部分に分割するように指示しています。1つはすべての.NET / Monoプラットフォームで使用される共通層、もう1つはiOS、Android、MacおよびWindowsのネイティブインターフェイス、またはHTML-バージョン。



InfoQ :多くの開発者は、PhoneGapなどのプラットフォームに切り替えて、すべてのプラットフォーム間のインターフェイスを標準化しています。 iOS、Android、Windows Phone間で動作するC#用のUIライブラリーを持つ可能性を考えたことはありますか?



ミゲル :それらの混合物がそこにあります。



予算が少なく、一度だけ使用する場合は1回限りのプレゼンテーションレベルを使用する場合があります。 これがJavaの人気を高めた理由であり、Gtk#およびXwtライブラリを使用するユーティリティのいくつかでこのアプローチを使用しています。



ただし、クラス最高のユーザーインターフェイスを提供したい場合は、独自のネイティブコードを記述する必要があります。 また、一部のユーティリティにもこのアプローチを使用しています。たとえば、Monoの新しいドキュメントシステムでは、各プラットフォームでネイティブインターフェイスが使用されています。



特に、MacとiOSで作業している人々は、完成品とネイティブインターフェイスの品質を高く評価しているため、クロスプラットフォームUIは最高の印象を残しません。



InfoQ :ノベルが買い戻される前に、一部の人々はAndroidタブレットでMoonlightの起動に取り組んでいました。 あなたはまだこの方向で働いていますか?



ミゲル :私たちはムーンライトの開発を放棄しました。



InfoQ :そのようなニュースを聞いて悲しいことに、Moonlightはとても有望だと思われました。 あなたは十分な人的資源を持っていなかった、またはあなたはもはやブラウザSilverlight / Moonlightが明るい未来であるとは思わない?



ミゲル :Silverlightはインターネット上で適切な配布を受けていなかったため、重要なテクノロジーにはなりませんでした。



さて、MicrosoftはSilverlightに人為的な制限を加えたため、デスクトップアプリケーションの構築には役に立たなくなりました。



今では、Silverlightが1回1回実行するあらゆる場所のテクノロジに適したプラットフォームであるとはもはや信じていません。 現時点では、C#の世界ではビューコードを分離するのが最善であると考えています。 プログラマーは、すべてのプラットフォームで1つのコアアプリケーションを使用し、ターゲットプラットフォームごとに個別のインターフェイスを作成します:MonoTouchを備えたiOS、MonoDroidを備えたAndroid、WPF / Winformsを備えたWindows、ASP.NETを備えたWeb、Gtkを備えたWindows / Linux



もちろん、これは一度だけ実行することはできませんが、結果はネイティブツールとプラットフォーム機能を使用するアプリケーションになります。



InfoQ :オープンソースのMonoの貢献者がもっといたら、プロジェクトのどの部分を最もやりたいと思いますか?



Miguel :おそらく今後のAPIバージョン4.5とWCFについて。



Microsoftは、C#5からの非同期をサポートするために.NETの多数のAPIを更新しました。基本クラスライブラリに取り組んでいたという事実にもかかわらず、個人的にSystem.Dataおよびその派生物(Sqliteプロバイダーなど)が非同期をサポートするようにしたいと思います。 ASP.NETスタック全体と同様に、非同期もサポートするようになりました。



ASP.NETを改善するには、Microsoftが最近ASP.NET用に公開したすべてのオープンソースコードを利用する必要があります。 これがないと、Monoはこの新しいオープンソースコードの半分しか実行できません。



InfoQ :Android APIをめぐるOracle / Googleの訴訟に従ったと思います。 現在の状況についてどう思いますか?



ミゲル :それは戦争のように見え、無実で「良い」ノーの最初のボレーの後。 両社の評判は大きく損なわれています。



InfoQ :APIが著作権として認識されている場合、MicrosoftはMonoプロジェクトを危険にさらすことを恐れていませんか?



ミゲル :いいえ。



GoogleとOracleの場合、コアAPIの一部は論争の的となっています。これは、この数十億ドル規模の戦いで高レベルAPIのいずれも有用になっていなかったためです。 基本的に、GoogleはAndroidに適した別のAPIセットが必要なため、高レベルの部分を使用しないことにしました。 Mono / .NETの場合、コアAPIの著作権は配布のためにECMA / ISOに移され、高レベルAPIは数十億ドル規模の産業での使用に関して非常に疑わしくなりました。 .NET / Monoの出現により数十億ドル規模のビジネスが発生した場合、おそらくカーネル(実行時およびBCL。 約Per。 )を使用し、MonoTouchおよびMonoDroidの場合と同様に、高レベルを拒否します。 :カーネルを使用しますが、高レベルのWindows APIを実装せず、代わりにAppleまたはAndroidのネイティブAPIに置き換えます。



これが私の最初の翻訳です。エラーが表示された場合は、午後に報告してください。



PS翻訳とスタイルの手助けをしてくれたkekekeks habrayuzerに感謝します。



All Articles