タグ付けされた質問 「.net」

.NET Frameworkは、Microsoft Windowsオペレーティングシステム用のソフトウェアフレームワークです。これには、基本クラスライブラリ、共通言語ランタイム、および動的言語ランタイムの実装が含まれます。C#、VB.NET、F#、C ++など、多くのプログラミング言語をサポートしています。

10
「はい、.NETはクロスプラットフォームです」と言うのによく使われます。その主張はどの程度有効ですか?[閉まっている]
では何がこの時点で、.NETとJava間のプロジェクトのために選びますか?「常にWindowsに展開しますか?」を検討すると言います。新しいWebプロジェクトで先行するための単一の最も重要な技術的決定であり、答えが「いいえ」であれば、.NETではなくJavaをお勧めします。 非常に一般的な反論は、「Linux / OS X / Whateverで実行したい場合は、Monoを実行するだけです」1です。これは表面的には非常に説得力のある議論ですが、理由。 OpenJDKとすべてのベンダーが提供するJVMは、Sun Sunの公式TCKに合格し、正常に機能することを確認しています。MonoがMicrosoft TCKを渡すことを知りません。 Monoは.NETリリースを追跡します。現在、どの.NETレベルが完全にサポートされていますか? すべてのGUI要素(WinForms?)はMonoで正しく機能しますか? 企業は、公式計画Bとしてオープンソースフレームワークに依存したくない場合があります。 オラクルによるJavaの新しいガバナンスでは、将来は安全ではないことを認識していますが、たとえばIBMは Linuxを含む多くのプラットフォームにJDKを提供しています。それらはオープンソースではありません。 では、Monoはどのような状況で.NETアプリケーションの有効なビジネス戦略ですか? 1 マーク・Hは、としてそれをまとめた「主張があることである場合:『私は.NETで書かれたWindowsアプリケーションを持っている』、それはモノで実行する必要があり、その後ではない、それは有効な請求ではありません-しかしモノは、このようなアプリケーションを移植作るための努力をしていますよりシンプルです。」
168 java  .net  mono 

6
固い原則とコード構造
最近の就職の面接で、私はSOLIDについての質問に答えることができませんでした-さまざまな原則の基本的な意味を提供する以外に。本当にバグです。数日かけて掘り下げましたが、まだ十分な要約を出していません。 インタビューの質問は: SOLIDの原則に厳密に従っていると言った.Netプロジェクトを見るとしたら、プロジェクトとコード構造の観点から何を期待しますか? 私は少しもがいて、質問に本当に答えなかったので、爆撃されました。 この質問をどのようにうまく処理できますか?
150 c#  .net  solid 

8
プロジェクトをどのように整理しますか?[閉まっている]
プロジェクトを整理する特定のスタイルはありますか? たとえば、現在ボリビアのいくつかの学校でプロジェクトを作成していますが、これが私がそれを整理した方法です。 TutoMentor (Solution) TutoMentor.UI (Winforms project) TutoMentor.Data (Class library project) プロジェクトをどのように整理しますか?あなたが組織し、誇りに思っているものの例はありますか?ソリューションペインのスクリーンショットを共有できますか? 私のアプリケーションのUI領域では、さまざまなフォームとそれらが属する場所を整理するための適切なスキーマを決定するのに苦労しています。 編集: .UIプロジェクトでさまざまなフォームを整理するのはどうですか?どこで/どのように異なるフォームをグループ化する必要がありますか?それらをすべてプロジェクトのルートレベルに配置するのは悪い考えです。

7
C#、. NET、ASP、ASP.NETなどの関係[終了]
C#、C#.NET、およびASPと他の '.NET'言語の同じものの違いについては、本当にわかりません。 私が理解していることから、.NETは...もののライブラリ/フレームワークです。フォーム要素などのWindowsデータに本質的にアクセスしていると思いますが、ASP.NETには適用されないようです。 さらに、「。NET」開発者と呼ばれている人もいます。これは、C#、ASP、および他の言語に堪能であることを意味しますか? 最後に、.NETが添付されていないC#は表示されません。C#は、それなしでは使用できないという点で.NETと密接に結びついていますか? 要約すると、.NETは正確に何を提供しますか?C#やASPなどとどのように関係していますか?「.NET開発者」とはどういう意味ですか?そして最後に、なぜ.NETなしでC#が表示されないのですか? [余談ですが、これらは複数の質問であることに気づきましたが、それらは非常に相互に関連していると思います(または少なくとも、プログラマやSOの閲覧が私に与えた印象です)。
143 c#  .net  asp.net 

8
悪いプログラミングの慣行は、ソフトウェア業界では一般的ですか?[閉まっている]
私は1ヶ月以上前にソフトウェア開発者として最初の仕事を始めました。OOP、SOLID、DRY、YAGNI、デザインパターン、SRPなどについて私が学んだことはすべて窓から捨てられます。 C#.NET Webformsを使用し、コードビハインド内のほとんどすべてを、オブジェクトとは呼ばない、ごく少数の外部クラスで実行します。カスタムコントロールを使用して再利用します。使用されるオブジェクトは、Entity Frameworkのみです。クライアントごとにコードビハインドを再利用します。それらには、すべての種類の処理を行う400行のメソッドがあります。新しいクライアントの場合、aspxとaspx.csを取得し、クライアントコードを削除して、新しいクライアント固有のコードの追加を開始します。 彼らの最初の言い訳は、それが追加のメンテナンスを追加し、より多くのコードがより多くのメンテナンスであることです。私を含む3人の開発者の小さなお店です。1人の開発者には30年以上の経験があり、もう1人の開発者には20年以上の経験があります。1つはゲーム開発者で、もう1つは常にCとC ++で働いていました。 これはソフトウェア業界内でどのくらい一般的ですか?OOPおよび関連する原則を確実に把握するにはどうすればよいですか?空き時間に練習していますが、OOPをより良くするためには、より経験豊富な開発者の下で働く必要があると感じています。

12
.NETでのローカリゼーションの効果的な戦略[終了]
近い将来、すべてのコンテンツの国際的なローカライズを必要とする.NET MVCアプリケーション用のUIを開発しています。私は一般的に.NETに非常に精通していますが、国際的なアクセシビリティにそのような重要な焦点を当てる必要のあるプロジェクトは一度もありませんでした。 投影は最初は英語で行われています。将来ローカライズを実装しやすくするために、この時点でどのような対策を講じる必要がありますか?

8
魔法の値を返す、例外をスローする、または失敗時にfalseを返す?
クラスライブラリのメソッドまたはプロパティを記述する必要が生じることがありますが、実際の答えがなくても失敗することは例外ではありません。何かを判断できない、利用できない、見つからない、現在不可能、または利用可能なデータがもうない。 このような比較的例外的ではない状況で、C#4の失敗を示す3つの解決策があると思います。 そうでなければ意味のないマジック値を返します(nullandなど-1)。 例外をスローします(例KeyNotFoundException)。 パラメータでfalse実際の戻り値を返し、提供しoutます(などDictionary<,>.TryGetValue)。 質問は次のとおりです。どの例外ではない状況で例外をスローする必要がありますか?そして、私が投げてはいけない場合:パラメータ付きのメソッドを実装する上で与えられた魔法の値を返すのはいつTry*outですか?(私にはoutパラメーターが汚れているようで、適切に使用するのはより手間がかかります。) 設計ガイドライン(Try*メソッドについては何も知りません)、使いやすさ(クラスライブラリを求めて)、BCLとの整合性、読みやすさなどの事実に関する答えを探しています。 .NET Framework基本クラスライブラリでは、3つのメソッドすべてが使用されます。 そうでなければ意味のないマジック値を返します。 Collection<T>.IndexOf -1を返します StreamReader.Read -1を返します Math.Sqrt NaNを返します。 Hashtable.Item nullを返します。 例外を投げる: Dictionary<,>.Item KeyNotFoundExceptionをスローします。 Double.ParseFormatExceptionをスローします。または パラメータfalseで実際の戻り値を返し、提供しoutます。 Dictionary<,>.TryGetValue、 Double.TryParse。 HashtableC#にジェネリックがなかったときに作成されたように、それが使用され、objectしたがってnullマジック値として返されることに注意してください。しかし、ジェネリックでは、で例外が使用されてDictionary<,>おり、当初はありませんでしたTryGetValue。どうやら洞察が変わります。 明らかに、Item- TryGetValueとParse-のTryParse二重性は理由があるので、非例外的な障害に対して例外をスローすることはC#4で行われていないと思います。ただし、Try*メソッドが存在した場合でも、常に存在するとは限りませんでしDictionary<,>.Itemた。

6
C#でFluentを使用するタイミング
多くの点で、Fluentインターフェイスのアイデアは本当に好きですが、C#の最新の機能(初期化子、ラムダ、名前付きパラメーター)のすべてで、「それだけの価値はありますか?」、「これは正しいパターンですか?」つかいます?"。Fluentパターンをいつ使用するかについて、少なくとも自分の経験や意思決定マトリックスを受け入れてもらえますか? 結論: これまでの回答からのいくつかの良い経験則: 呼び出しはコンテキストパススルーの恩恵を受けるため、Fluentインターフェイスはセッターよりもアクションが多い場合に非常に役立ちます。 流Fluなインターフェイスは、唯一の使用方法ではなく、APIの上のレイヤーと考える必要があります。 ラムダ、初期化子、名前付きパラメーターなどの最新の機能は、連携して動作し、流canなインターフェイスをさらに使いやすくします。 必要性を感じさせないモダンな機能の意味の例を次に示します。たとえば、次のような従業員を作成できる(おそらく悪い例の)Fluentインターフェイスを考えてみましょう。 Employees.CreateNew().WithFirstName("Peter") .WithLastName("Gibbons") .WithManager() .WithFirstName("Bill") .WithLastName("Lumbergh") .WithTitle("Manager") .WithDepartment("Y2K"); 次のような初期化子で簡単に記述できます。 Employees.Add(new Employee() { FirstName = "Peter", LastName = "Gibbons", Manager = new Employee() { FirstName = "Bill", LastName = "Lumbergh", Title = "Manager", Department = "Y2K" } }); この例のコンストラクターで名前付きパラメーターを使用することもできます。
78 c#  .net 

13
私の上司は、「ここでは発明されていません」という悪いケースを抱えています[非公開]
私の部門は、顧客データをデータベーススキーマに変換して、ソフトウェアを使用できるようにすることを専門としています。 IDataReader現時点では、99%の時間がかかるC#アプリケーションがあり、SqlDataReaderクリーニングとマッピングを実行してDataRowオブジェクトSqlBulkCopyに挿入し、a を使用してデータベースに挿入しています。 場合によっては(特にソースデータベースにvarbinaryオブジェクトとして画像が含まれている場合)、このプロセスはサーバーからアプリへのSQL転送で完全に停止し、その後すぐに向きを変えてサーバーに戻ることができます。 変換の一部をSSISパッケージとして書き直せば、大幅にスピードアップできると思います。しかし、私が直面し続ける最大の石垣は、上司がNot Invented Hereのように押し返し、「MicrosoftがSSISのサポートを終了したらどうなるでしょうか。この廃止されたコードはすべて手に入れられます。」 「もし彼らがその機能を削除したら...」を見つけたのはこれが初めてではありません。上司からの答え。古い方法で変換を記述したり、SSISを自己学習したり、利点を実証/テストする新しい方法を記述したりする時間がありません(SSISを使用したことがないため、使用方法を学習する必要があります)。 この状況ではどうすればよいですか?新しいテクノロジーの推進を停止しますか?彼が部門を去るまで待ってください(私は彼の後の部門で2番目にシニアの人ですが、彼が辞める/退職するまでに何年もかかる可能性があります)?彼がサードパーティのツールを恐れないようにする新しい方法を見つけましたか?

11
抽象化(LINQなど)の使用がなぜタブーなのですか?[閉まっている]
私は独立した請負業者なので、新しいギグのために年に3〜4回インタビューしています。私は今、そのサイクルの真っin中にあり、インタビューがうまくいったように感じたにもかかわらず、機会を求めて断られました。今年も同じことが何度か起こりました。 今、私は完璧な人ではなく、すべての組織に適しているとは思っていません。とはいえ、バッティング平均は通常よりも低いので、最後の面接者に建設的なフィードバックを丁寧に尋ねると、彼は配達しました! インタビュアーによると、主なことは、低レベルの有機的に成長したアルゴリズムではなく、抽象化(LINQなど)の使用に過度に傾いているように見えたということです。 表面的には、これは理にかなっています-実際、これらのインタビューでもLINQについて口説き、インタビュアーが.NETであってもLINQについてあまり知らなかったため、他の拒否も理にかなっていますみんな)。 だから今、この質問が残っています:「巨人の肩の上に立つ」ことになっていて、私たちが利用できる抽象化(LINQのような)を使用することになっているなら、なぜそれをタブーと考える人がいるのでしょうか?追加のコストなしで同じ目標を達成する場合、「既製」のコードをプルすることは意味がありませんか? LINQは、それがあってもことを私には思われるで抽象化、単純にすべての抽象化で同じ 1は、まったく同じ目的を達成するために書くでしょうアルゴリズム。カスタムアプローチの方が優れているかどうかを確認できるのはパフォーマンステストだけですが、LINQのようなものが要件を満たしていた場合、そもそも独自のクラスを作成する必要はありません。 ここでLINQに注目するつもりはありません。私は、JAVAの世界には匹敵するものがあると確信しています。なぜ、一部の人々が抽象化を使用するという考えに非常に不快になり、彼ら自身が書いていないのかを知りたいのです。 更新 Euphoricが指摘したように、Javaの世界にはLINQに匹敵するものはありません。 したがって、.NETスタックで開発している場合、常にそれを使用してみてはどうでしょうか。人々がそれが何をするのかを完全に理解していない可能性はありますか?

17
巨大な「switch」ステートメントの代わりにオブジェクト指向アプローチを使用するのはなぜですか?
私は.Net、C#ショップで働いており、より多くのオブジェクト指向のアプローチではなく、多くの「ケース」を使用してコードで巨大なSwitchステートメントを使用することを主張し続ける同僚がいます。彼の主張は一貫して、Switchステートメントが「cpuジャンプテーブル」にコンパイルされ、したがって最速のオプションであるという事実に戻っています(他のことでは、速度については気にしないとチームに言われますが)。 正直なところ、これに反対する議論はありません...彼が何について話しているのかわからないからです。 彼は正しいですか? 彼はただお尻を話しているだけですか? ここで学ぼうとしています。

6
.Netで弱い参照を使用する場合
個人的に、.NetでWeakReference型を使用する必要がある状況に遭遇したことはありませんが、一般的な信念は、キャッシュで使用する必要があるということです。博士ジョン・ハロップは、彼の中にキャッシュ内WeakReferencesの使用に対して非常に良いケース与えた答えにこの質問を。 また、AS3開発者がメモリフットプリントを節約するために弱い参照を使用することについて話すことをよく耳にしましたが、私が持っていた会話に基づいて、意図した目標を必ずしも達成することなく複雑さを追加するようであり、ランタイムの動作はかなり予測不可能です。そのため、多くの人は単純にそれをあきらめ、代わりにメモリ使用量をより慎重に管理する/コードを最適化してメモリ集約度を下げます(またはCPUサイクルを増やしてメモリフットプリントを小さくします)。 Jon Harrop博士はまた、.Net弱参照はソフトではなく、gen0には弱参照の積極的なコレクションがあると彼の答えで指摘しました。MSDNによると、長い弱参照はオブジェクトを再作成する可能性を与えてくれますbut the state of the object remains unpredictable.! これらの特性を考えると、弱い参照が役立つ状況を考えることはできません。おそらく誰かが私を啓発できるでしょうか?

6
依存関係を取ることへの恐怖に対処する方法
私が所属するチームは、当社のプラットフォームと統合するために会社のパートナーが使用できるコンポーネントを作成します。 そのため、(サードパーティの)依存関係を導入する際には細心の注意を払う必要があることに同意します。現在、サードパーティの依存関係はなく、フレームワークの最も低いAPIレベルを維持する必要があります。 いくつかの例: フレームワークの最も低いAPIレベル(.NET標準)を維持する必要があります。この背後にある理由は、その非常に低いAPIレベルのみをサポートする新しいプラットフォームがいつか登場する可能性があるということです。 JSONを(デ)シリアライズするための独自のコンポーネントを実装しており、JWTでも同じことを実行中です。これは、フレームワークAPIの上位レベルで利用可能です。 標準ライブラリのHTTP実装に依存したくないため、標準ライブラリのHTTPフレームワークのラッパーを実装しました。 同じ理由で、XMLとの間でマッピングするためのコードはすべて「手作業で」記述されます。 私たちはそれをやりすぎだと感じています。これは私たちの速度に大きな影響を与えると思うので、これにどう対処するのか疑問に思っています。

2
C#で「void」がジェネリック型として許可されないのはなぜですか
void構築可能でなく、ジェネリック型として許可されないことを支持して設計上の決定は何でしたか?結局それだけで特別な空であるstructと明確な持つの合計PITA避けているだろうFuncし、Actionデリゲートを。 (C ++は明示的なvoid戻り値を許可voidし、テンプレートパラメータとして許可します)

3
.NETでのログとトレースのベストプラクティス
私はトレースとログについて多くのことを読んでおり、問題のベストプラクティスの黄金律を見つけようとしましたが、何もありません。優れたプログラマーは優れたトレースを生成すると言いますが、それはそのように言えます。それは経験からもたらされなければなりません。 また、ここやインターネットで同様の質問を読んだことがありますが、質問が詳細を欠いているためか、私が尋ねているものと同じものではなく、満足のいく答えもありません。 そのため、デバッガーをアタッチできない場合、トレースはアプリケーションのデバッグの経験をある程度再現すべきだと人々は言います。アプリケーションの各コントロールポイントでどのパスが使用されているかを確認できるように、十分なコンテキストを提供する必要があります。 さらに詳しく説明すると、「イベントログは、詳細な制御フローではなく主要な状態をキャプチャするという点でトレースとは異なる」という点で、トレースとイベントログを区別することもできます。 ここで、System.Diagnostics名前空間にある標準の.NETクラスのみを使用して、トレースとロギングを実行したいとします。TraceSourceクラスは静的Traceクラスよりもジョブに適していると考えました。トレースレベルを区別し、TraceSourceクラスを使用すると、イベントタイプを通知するパラメータを渡すことができ、Traceクラスを使用する必要があるためです。Trace.WriteLineIfその後、のようなものを確認するSourceSwitch.TraceInformationとしSourceSwitch.TraceErrors、それはさえのような性質がないTraceVerboseかをTraceStart。 これらすべてを念頭に置いて、次のようにすることをお勧めします。 メソッドを開始するときに「開始」イベントをトレースします。これは、メソッドに渡されるパラメーター値のストリング表現とともに、単一の論理操作またはパイプラインを表す必要があります。 データベースにアイテムを挿入するときに「情報」イベントをトレースします。 重要なif / elseステートメントで1つのパスまたは別のパスを取るときに「情報」イベントをトレースします。 回復可能なエラーであるかどうかに応じて、catchブロックで「クリティカル」または「エラー」をトレースします。 メソッドの実行が終了したら、「停止」イベントをトレースします。 また、VerboseおよびWarningイベントタイプをトレースする最適なタイミングを明確にしてください。優れたトレース/ロギングを備えたコードの例があり、共有したい場合は、それが優れているでしょう。 注:ここでいくつかの良い情報を見つけましたが、探しているものはまだ見つかりません:http : //msdn.microsoft.com/en-us/magazine/ff714589.aspx
53 .net  logging 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.