Çok kiracılı olan ServiceStack kullanarak API'ler oluşturuyoruz. Tersine bir proxy (nginx veya haproxy gibi) yoluyla işleri dikilmek yerine DNS tabanlı yük dengeleme ve yönlendirme yapmak istiyoruz.Birden çok kiracı ServiceStack API'si, farklı ana bilgisayar adlarındaki isteklere yanıt vermek için aynı dağıtım?
Kiracı parametresi olan DTO'lar isteğimiz var. ServiceStack (ve onun SwaggerFeature), özel yolları tanımlamamıza ve DTO'ları yol, sorgu, üstbilgi veya gövdeden değerler okuyabildiğimiz şekilde belgelememize izin verir.
Tel nesneleri, DTO özelliklerinin de bir ana makine adı deseninden değerleri okuyabilmesi için nasıl (en iyi) yapmalı? Bu nedenle, Rota'nın değerleri, ana makine adının yanı sıra yolun dışına çıkmasını sağlayın. DNS bölgesi hangi ortam içinde bulunduğumuz olarak değişecektir dışarı - - olmayan üretim için kullandığımız (diyelim) testing-foobar.com
Biz de
https://{tenant}.{DNS zone for environment}/{rest of path with tokens}
gibi URL'leri olmasını istiyorum ve üretim real-live.com
kullanıyoruz. İdeal olarak, her ikisini de tek bir rota bildirimi ile destekleyebildik (ve AppHost.Init
çalışma zamanında zorunlu bildirim yerine DTO isteğinin dekorasyonunu tercih ediyoruz).
İlk isteğim [istek ve yanıt filtrelerini] kullanmaktır (https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters) Bunları düşündünüz mü? –
Ben sadece bir "Kiracı" özelliği olan bir özel 'ITenant 'arayüzü uygulayan herhangi bir DTO Talep enjekte İste filtreler kullanın. Başka bir çözüm, AbsoluteUri veya RawUrl özelliklerini inceleyen tüm hizmetlerde yeniden kullanabileceğiniz bir 'IHttpRequest.Tennant()' uzantısı yöntemini kullanmaktır. – mythz
@mythz - ServiceStack'ta bunun nasıl uygulanacağını gösteren bir örnek var mı? – Marek