SVC ファイル形式とは?
拡張子 .svc を持つテキストファイルには、WCF(Windows Communication Foundation)のサービスアクティブ化命令が含まれています。単一の .svc ファイルは、Microsoft IIS によって実行されるWCFデータ処理に特有の «@ServiceHost» ディレクティブ を保持します。マシン上でホストされているサービスは、着信メッセージを介してこの方法でアクティブ化されます。 .svc ファイルは任意のテキストエディタで開いて編集できますが、通常は Microsoft Visual Studio や同様のIDEが代わりに使用されます。
«@ServiceHost» ディレクティブはいくつかの属性をサポートしています。コアとなる Service 属性は、CLR (Common Language Runtime) サービス実装の名前を保持し、最初のリクエスト時にホスト上に動的にインスタンスを作成する役割を担います。追加の属性として、サービスが実装されている Language、Debug 設定、CodeBehind ソースコードパス、またはカスタムの Factory クラスを参照できます。さらに、 .svc ファイルにはインラインサービスコードを含めることも可能です。ファイルに加えられた変更は、次回のクエリ時に再コンパイルが必要になります。
IISでサービスをホストする場合、エンドポイントのアドレスは常に .svc ファイルのパスからの相対パスになります。たとえば、ベースとなるWCFサービスのアドレスが http://localhost/Application/Service.svc で、 web.config ファイルに <endpoint address="point" /> が含まれている場合、 http://localhost/Application/Service.svc/point がそのエンドポイントを指します。 .svc のURLを直接ブラウザで表示すると、WSDLコントラクト(?wsdl)へのリンクが含まれたサービスヘルプページが表示されます。
WCFはレガシーな技術であり、モダンな .NET (Core/5+) には含まれていません。これは、エンタープライズサービスホスティング用の古い .asmx 形式を置き換えたものです。 .svc ベースのサービスから移行するプロジェクトは、 ASP.NET Core の最小API、gRPC、または互換性ブリッジとしてのコミュニティ維持プロジェクト CoreWCF ライブラリをターゲットにできます。
セキュリティと安全性
リスク: LOW.svc ファイル自体は無害なプレーンテキストであり、実行可能コードは含まれていません(ロジックはコンパイルされたDLLにあります)。セキュリティ上の懸念はサーバー側にあり、ファイルではなく「サービス」に関するものです。公開されたWCFエンドポイントは適切なバインディングと認証を使用すべきであり、WSDLやメタデータを公開したままにするとサービスコントラクトが漏洩する可能性があります。ユーザーとして見つけた身に覚えのない .svc ファイルは不活性であり、開いても実行されるものはありません。
形式の詳細
概要SVC ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルタイプ | プレーンテキスト サービスアクティブ化ファイル - バイナリコンテンツや独自のデータペイロードなし |
| テキストエンコーディング | UTF-8 |
| ディレクティブ構文 | ASP.NET ページディレクティブ構文: `<%@ ServiceHost ... %>` |
| MIMEタイプ | `text/plain` |
| 一般的なファイルサイズ | 1 KB 未満 - 通常は1行のディレクティブのみ |
| ホスト環境 | ASP.NET WCFハンドラー(`svc-Integrated` または `svc-ISAPI` HTTPハンドラー)を介した Microsoft IIS |
| Service属性 | WCFサービスを実装するCLRクラスの名前(例:`MyNamespace.MyService`) |
| Factory属性 | オプション。サービスホストの構築方法を制御するカスタム `ServiceHostFactory` クラスを指定 |
| インラインコードのサポート | サービスの実装コードをディレクティブと共に `.svc` ファイル内に直接配置可能 |
| エンドポイントURLパターン | `.svc` ファイルのURLがサービスのベースアドレスとなり、サブパスがそれを拡張(例:`/Service.svc/methodName`) |
| WSDLの公開 | `.svc` のURLに `?wsdl` を追加すると、サービス用に自動生成されたWSDLコントラクトドキュメントを返す |
| ビジネスロジックの場所 | ウェブアプリケーションの `bin` ディレクトリにあるコンパイル済み `.dll` アセンブリ内。 `.svc` はIISのエントリポイントのみ |
| 実行時設定 | バインディング、エンドポイント、動作は `.svc` ファイル内ではなく `web.config` で宣言される |
| ファイルの識別 | マジックバイトなし。ファイルの先頭付近にある `<%@ ServiceHost` ディレクティブによって識別 |
| 先行フォーマット | `.asmx` (ASMX Web Services) - WCFの `.svc` は、エンタープライズおよびクロスプラットフォームのサービスホスティングにおいて ASMX を継承 |
| レガシーの状態 | WCFは .NET Core/5+ には存在しない。コミュニティの CoreWCF プロジェクトが既存の `.svc` ベースのサービスの移行パスを提供 |
| リリース日 | 2006 (Windows Communication Foundation, .NET Framework 3.0) |
| 最新バージョン | Tied to WCF on .NET Framework; WCF is not in modern .NET (Core/5+) - see CoreWCF |
| 仕様書 | learn.microsoft.com |
SVC の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。SVC ファイルについて最初の質問をしてみましょう。