Chúng tôi đang tạo API bằng cách sử dụng ServiceStack là người thuê nhiều người. Chúng tôi muốn thực hiện việc cân bằng tải và định tuyến dựa trên DNS, thay vì ghép các thứ lên thông qua proxy ngược (như nginx hoặc haproxy).API ServiceStack nhiều bên thuê, cùng triển khai để phản hồi các yêu cầu trên tên máy chủ khác nhau?
Chúng tôi có Yêu cầu DTO có tham số Người thuê. ServiceStack (và SwaggerFeature) cho phép chúng tôi xác định các tuyến tùy chỉnh và ghi lại các DTO sao cho chúng ta có thể đọc các giá trị từ đường dẫn, truy vấn, tiêu đề hoặc nội dung.
Làm cách nào để chúng tôi (tốt nhất) điều dây để các thuộc tính DTO có thể đọc các giá trị từ mẫu tên máy chủ lưu trữ? Vì vậy, làm cho Route lấy giá trị từ khớp với tên máy chủ cũng như đường dẫn?
Chúng tôi muốn có URL như
https://{tenant}.{DNS zone for environment}/{rest of path with tokens}
Ngoài ra - ra vùng DNS sẽ thay đổi tùy theo mà môi trường chúng ta đang ở - cho phi sản xuất chúng tôi sử dụng (nói) testing-foobar.com
và sản xuất chúng tôi sử dụng real-live.com
. Lý tưởng nhất là chúng tôi có thể hỗ trợ cả hai với một tuyên bố tuyến đường duy nhất (và chúng tôi thích trang trí Yêu cầu DTO thay vì khai báo bắt buộc tại thời gian chạy AppHost.Init
).
Độ nghiêng đầu tiên của tôi là sử dụng [bộ lọc yêu cầu và phản hồi] (https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters) Bạn đã cân nhắc chúng chưa? –
Tôi muốn sử dụng một bộ lọc yêu cầu tiêm bất kỳ yêu cầu DTO mà thực hiện một tùy chỉnh 'ITenant' giao diện mà chỉ có một' Tenant' tài sản. Một giải pháp khác là sử dụng phương thức mở rộng 'IHttpRequest.Tennant()' mà bạn có thể sử dụng lại bên trong tất cả các dịch vụ kiểm tra các thuộc tính AbsoluteUri hoặc RawUrl. – mythz
@mythz - có một ví dụ nào đó giới thiệu cách triển khai điều này trong ServiceStack không? – Marek