問題タブ [servicestack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - OData と ServiceStack ?
ServiceStackを見たばかりで、それを使用してサービスを構築することを検討しています。
IQueryable を公開してクライアントからクエリできるように、OData フィードをサービス スタックで提供することはできますか?
c# - StructureMap: 特定のコンテキスト内でのカスタム ライフタイム スコーピング
を介して非同期プロセスを生成するループがいくつかありますConcurrentQueue<T>
。これらのプロセスは、データベースの対話にリポジトリを使用するいくつかのビジネス サービスの実装を呼び出します。サービスの実装はすべて、StructureMap を介して接続されています。
リポジトリの実装には、注意深い管理が必要な特性がいくつかあります。
- 使用されているデータベース技術はRedisです。
- この実装では、ServiceStack.net の Redis クライアントを ( 経由で
PooledRedisClientManager
) 使用します。 - いくつかのメソッドは、同じ RedisClient によって同時に作成できない (私が信じている) トランザクションを利用します。したがって、複数のトランザクションを同時に作成しようとするため、複数の非同期プロセスで単一のリポジトリ実装を共有することはできません。
- メモリとデータベース接続を解放するには、これらのオブジェクトを明示的に破棄する必要があります。そのため、リポジトリ クラスに IDisposable を実装しました。
- 同時要求/トランザクションがないため、個々の非同期プロセスの範囲内でリポジトリ インスタンスを共有できない理由はありません。
上記を念頭に置いて、単一のリポジトリ インスタンスのスコープを各非同期プロセスの有効期間に設定したいと思います。
覚えておくべきことの 1 つは、非同期プロセスのスコープで使用されるサービスは、異なる有効期間特性を持つシステムの他の部分でも使用されるということです (たとえば、リポジトリがページの有効期間にスコープされている Web サイト内)。リクエスト)。
いくつかのコード(私のコードから簡略化したもの)で説明しようとします:
IAsyncResult
キューを管理する (および呼び出しを実行するイベント ハンドラーを接続する) プログラム:
非同期の結果によって呼び出される実装。メソッド内でスコープを管理したいProcessItem( ... )
:
それが状況と目標を説明していると思います。私の質問は次のとおりです。
- 上記のように、StructureMap を使用して、単一プロセスのコンテキスト内で別のスコープを使用できますか。
- ドメイン/サービス層に StructureMap の直接的な依存関係を含めたくありません。したがって、この段階で別のスコープを使用できる場合、プロセス自体から StructureMap を直接呼び出さずにこれを行う簡単な方法はありますか?
- プロセスの最後にリポジトリを破棄するように DSL 構成を介して StructureMap に指示できますか? またはコードで明示的にこれを行う必要がありますか?
testing - サービススタックとモッキング、チュートリアルはありますか?
現在、ServiceStack を評価しています (.Net で REST ベースのサービスを作成するため)。関心のある分野の 1 つは、テスト側です。私の休息サービスには、多数のアプリ サービスが注入されます (現在 Autofac を使用しています)。私が必要としているのは、残りのレイヤーをテストし、(MOQ を介して) アプリ レイヤーでの期待を定義するメカニズムです。そのため、統合テストではなく、このレイヤーの単体テストを行っていますか?
これを行う方法についてのアイデアはありますか?
c# - 配列をデシリアライズできません
クライアントから送信されたデータは逆シリアル化されません。
クライアント:
DTO:
サーバ:
何が問題なのですか?コメント配列が入力されていないのはなぜですか。コメントからわかるように、servicestack json シリアライザーで文字列を生成しました。
多分私はここでいくつかの明らかなものを見逃していますか?
編集 フィドラーの送信内容を見ると、次のように表示されます。
そしてfirebugで:
よろしく
ラルシ
c# - ServiceStackRESTfulWebサービスとメッセージ本文でのデータの受け渡し
現在、ServiceStackを評価しています。たくさんのRESTfulWebサービスを作成する必要があります。私は最初のコードを実行していますが、非常に満足しています。私が少し苦労していたのは、本文にデータを含むPOST(またはPUT)HTTPリクエストを消費できるサービスを作成する方法でした。
ServiceStackフォーラム(http://groups.google.com/group/servicestack/browse_thread/thread/693145f0c3033795)でこのスレッドを見つけ、それをフォローして、SO(Jsonコンソールアプリケーションからサービススタックにデータをフォーマットします)が、実際には役に立ちませんでした-リクエストを作成する方法について説明しましたが、そのようなHTTPリクエストを消費できるサービスを作成する方法については説明していませんでした。
(HTTPメッセージ本文で)追加のデータを渡そうとすると、次のエラー(HTTP 400)が返されました。
これでhttps://github.com/ServiceStack/ServiceStack/wiki/Serialization-deserializationにたどり着きました。やってみようと思いIRequiresRequestStream
ました。現在、私のコードは次のとおりです。
およびサービス自体:
私のルート:
それは機能しますが...同様の例が見つからなかったので、これがメッセージ本文に追加情報が含まれているPOST要求を処理できるサービスを作成する正しい方法であるかどうかを尋ねたいと思います。私は何か間違ったことをしていますか?見逃したことはありますか?
また、私が提供したSOスレッドリンクで、DTOを使用することがServiceStackベースのサービスにデータを渡すための好ましい方法であると述べられました。クライアントが大量のデータを送信する必要があると仮定すると、どうすればそれを達成できますか?URIでJSONオブジェクトとしてデータを渡したくありません。私はここで何か間違った仮定をしていますか?
- クライアントはC#/.Netで記述されません。まったく異なる技術が使用されます。これが、RESTfulWebサービスの理由の1つでした。
- 文字列としてxmlを返すのは最善の方法ではないかもしれないことを私は知っています。現時点では、これは単なるサンプルコードです。これは後で変更されます。
- 最も重要な部分は、私に提供されたソリューションが、本体にxmlデータが添付されたHTTPリクエストを使用できるWebサービスを作成する適切な方法であるかどうかです。私があなたと共有したことは、これが私の目標を達成するための最良の方法であると100%確信しているわけではありません。
2012年3月8日木曜日に編集:
回答とコメントを読んだ後、コードを少し変更しました。シリアル化を使用する場合は、名前空間を使用する必要があると確信していました(HTTPメッセージ本文のデータをサービスに渡す場合)。
私は以前http://localhost:53967/api/servicestack.task/xml/metadata?op=Task
、自分が作成したサービスに関する詳細情報を入手していました。
RESTパス:
HTTP + XML:POST / xml / asynconeway / Task HTTP / 1.1ホスト:localhostコンテンツタイプ:application / xmlコンテンツ長:長さ
私がチェックしたかったのは、REST URIを「混合」して、残りのデータをxmlとして渡すことが可能かどうかでした。
Fiddlerを使用して、次のPOSTリクエストを作成しました。
リクエストヘッダー:
リクエスト本文:
現在の私のDTOは次のとおりです。
そして私のサービスコードは次のとおりです。
では、これはXMLデータをサービスに渡す適切な方法ですか?含まれているxml名前空間に非常に満足していると思います。これにより、サービスの開発がさらに簡単になります。
c# - ServiceStack サービスが例外をスローするのはなぜですか?
キーと値のペアのリストを返すServiceStack (素晴らしい)を使用して、単純な Rest サービスを構築しました。
私のサービスは次のようになります。
私の応答は次のようになります。
残りの URL を次のようにマッピングしました。
サービスを呼び出すとき
次の例外が発生します (サービスの最初の行のブレークポイントにヒットしません)。
NullReferenceException オブジェクト参照がオブジェクトのインスタンスに設定されていません。ServiceStack.Text.XmlSerializer.SerializeToStream(オブジェクト obj、ストリーム ストリーム) で ServiceStack.Common.Web.HttpResponseFilter.<GetStreamSerializer>b_ 3(IRequestContext r、オブジェクト o、ストリーム s) で ServiceStack.Common.Web.HttpResponseFilter.<> c _DisplayClass1.<GetResponseSerializer>b__0(IRequestContext httpReq、オブジェクト dto、IHttpResponse httpRes) ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToResponse(IHttpResponse 応答、オブジェクト結果、ResponseSerializerDelegate defaultAction、IRequestContext serializerCtx、Byte[] bodyPrefix、Byte[] bodySuffix)
呼び出しにパラメーターを含めるかどうかに関係なく、例外がスローされます。また、同じプロジェクト内の同じラインに沿って、正常に動作する他の多くのサービスも作成しました。これが何を意味するかについて、誰かが私を正しい方向に向けることができますか?
android - MonoTouch / MonoDroid サービス層の非互換性?
Cross platform Android/iOS apps
以前は MonoTouch のみでビルドしていた をビルドし始めました。を評価していますMonoDroid
。
アプリは消費する必要がありJSON
、使用したいと考えていますServiceStack
。Xamarin には、私たちが使用している ServiceStack ブランチがあります - https://github.com/xamarin/ServiceStack
JSON の GET と POST を担当する共通のプロジェクトが必要です。Xamarin による ServiceStack にはdifferent DLLs for Android and iOS
. single project
ServiceStack を使用して JSON を取得するにはどうすればよいでしょうか?
統一された方法で JSON を取得するための他のオプションを受け入れますか?
servicestack - ServiceStackでサービスへのURLを生成する
ServiceStackで定義された特定のサービスへのURLを生成するにはどうすればよいですか?
応答DTOの一部として、他のエンドポイントへの完全なURLまたは相対URLを含めたい。RestServiceBase
が含まれていますRequestContext.AbsoluteUri
が、それは完全にリクエストに依存しています。
c# - カスタムシリアライゼーション/デシリアライゼーションを使用したサービススタックサービスの単体テスト
独自の逆シリアル化メカニズムが提供されている Web サービスのテストに問題があります。
で使用されている私のサンプルTask
クラスTaskService
:
シリアライゼーション/デシリアライゼーション コードは、 http ://www.servicestack.net/ServiceStack.Northwind/vcard-format.htmおよびhttps://github.com/ServiceStack/ServiceStack.Examples/blob/master/src/に基づいています。 ServiceStack.Northwind/ServiceStack.Northwind.ServiceInterface/VCardFormat.cs
私の基本テストクラスは次のとおりです。
そして、失敗する単体テスト:
nUnit テスト ランナーを使用するときに発生する例外は次のとおりです。
Testing.SimpleTest.TestMetodRequiringServer:
System.Runtime.Serialization.SerializationException : Error in line 1 position 9. Expecting element 'ArrayOfTask' from namespace 'http://schemas.datacontract.org/2004/07/ServiceStackMVC'.. Encountered 'Element' with name 'Tasks', namespace ''.
カスタムのシリアライゼーション/デシリアライゼーション コードに関する情報を に渡すにはどうすればよいXmlServiceClient
ですか?
c# - レガシーシステムの置き換えとServiceStack+カスタムシリアル化を使用した新しいサーバーコードの作成
放棄してServiceStackを使用して新しいサーバーコードを開発したいレガシーサーバーコードがあります。既存のクライアントは.Netで書き込まれません。クライアント側で.Netを使用する予定はありません。
クライアントとサーバー間のデータはXMLとJSONを使用して交換されています。現時点では、JSONは応答の戻り形式としてのみ使用されています(利用可能なサービスの一部のみ)。XML形式は、サーバーソリューションの最初のバージョンが数年前に作成されたときに定義されました。変更したくありません。
ServiceStackを使用して、過去に設計された形式にデータをシリアル化および逆シリアル化する新しいRESTful Webサービスを構築するにはどうすればよいですか(クライアントはC#/。Netで書き込まれないことに注意してください)。シリアル化と逆シリアル化の両方を制御する必要があります。DTOを使用しても、これらのオブジェクトをどのようにシリアル化/逆シリアル化するかを制御することは可能ですか?