Tôi có một lớp có sử dụng 'System.Net.Sockets.Socket' trực tiếp cho comunication mạng, và hiện nay tôi sử dụng hai giao diện sau đây để phá vỡ sự phụ thuộc vào các lớp Socket:Làm cách nào để mô phỏng đúng thời gian chờ cao trên thử nghiệm máy chủ socket C#?
public interface ISocketListener
{
void Listen(int backlog);
ISocket Accept();
void Bind(EndPoint endpoint);
}
public interface ISocket
{
void Connect (EndPoint ep);
Stream CommunicationStream { get; }
void Close();
void Close(int timeout);
void Shutdown();
}
Trong việc thực hiện sản xuất tôi chỉ chuyển hướng tất cả các cuộc gọi phương thức đến đối tượng Socket riêng. Trong môi trường thử nghiệm, tôi sử dụng MemoryStream làm đường truyền thông giữa các ổ cắm. Vì tôi có ít kinh nghiệm về chủ đề này, một số câu hỏi xuất hiện trong đầu tôi khi viết bài kiểm tra: Có bất kỳ thực hành tốt 'chính thức' nào trong thử nghiệm loại phần mềm này không? Khi thực hiện thử nghiệm tích hợp, làm cách nào để kiểm tra hiệu suất của máy chủ này trong nhiều kết nối/tình huống độ trễ cao (cụ thể hơn, cách mô phỏng các tình huống này)? Tại sao có các phiên bản không đồng bộ của Socket.Accept/Socket.Receive? Tôi có thể thay thế các phương thức không đồng bộ để xử lý các phiên bản đồng bộ của chúng trong các luồng riêng biệt không?
Cảm ơn lời khuyên, tôi sẽ xem xét cuốn sách. Tôi nghĩ rằng việc thiết lập một máy khác chỉ để thực hiện một số thử nghiệm tích hợp là một chút quá mức cần thiết. Tôi muốn thử nghiệm nhanh và chạy tất cả bằng cách nhấn một nút –
Bạn chắc chắn có thể thực hiện kiểm tra của mình từ cùng một hộp..nhưng..bạn sẽ chia sẻ cùng một ngăn xếp mạng. Vì vậy, kết quả của bạn sẽ hơi lệch. Nó không phải là một máy cắt giao dịch, bạn chỉ cần nhận thức được các tác dụng phụ có thể xảy ra ... thưởng thức. – Rusty