2010-06-24 24 views
6

Kịch bản:Tôi có nên sử dụng .NET (System.Net.Mail) cho hàng loạt gửi email của ứng dụng web của tôi hoặc SQL (msdb.sp_send_dbmail) không?

1) Ứng dụng của tôi là một NET 3.5 C ứng dụng # web và cơ sở dữ liệu là SQL 2008.

2) email sẽ nằm trong khu vực từ 100 đến 1.000 một ngày và được kích hoạt bởi các tương tác người dùng web khác nhau với ứng dụng.

3) Hầu hết các email sẽ chứa tệp đính kèm trong khoảng từ 50KB đến 5MB. Một số email sẽ là HTML và một số sẽ là văn bản thuần túy.

4) Tất cả các tệp đính kèm sẽ được lấy từ thư mục trên máy chủ web.

5) Máy chủ SQL là một máy riêng biệt với Máy chủ Web. Tất cả các kết nối SQL từ ứng dụng đều thông qua đăng nhập SQL chứ không phải Windows Authentication.

6) Đối với giải pháp có thể mở rộng, Email được gửi sẽ được xếp hàng đợi trong một bảng cơ sở dữ liệu đã sẵn sàng cho một quá trình theo lô để đón. Email không thành công nên được thử lại tối đa 4 lần.

lưỡng nan:

Tôi không chắc liệu để viết một giải pháp máy chủ web để gửi email (ví dụ như một dịch vụ windows mà các cuộc thăm dò các email sẵn sàng để gửi) hoặc có thể sử dụng SQL cơ sở dữ liệu mail mà rất dễ dàng để thiết lập và sử dụng và không yêu cầu nhiều sự phát triển.

Thực tế các tệp đính kèm nằm trên máy chủ web đề xuất cho tôi sử dụng giải pháp máy chủ web nhưng tôi muốn biết liệu tôi có bỏ sót điều gì đó không.

+0

bất kỳ giải pháp cuối cùng nào có mẫu mã nguồn đầy đủ về nó? – Kiquenet

Trả lời

2

Trước tiên, hãy cảnh giác với việc gửi 1000 email mỗi ngày trong các lần phát. Đó là một cách hay để bị đưa vào danh sách đen từ các máy chủ thư khác hoặc thậm chí nhà cung cấp Internet của bạn. Thứ hai, tôi khuyên bạn nên đi theo thói quen .NET. Sự cố này của một dịch vụ. Ngay cả khi bạn không xây dựng nó như một dịch vụ ngày hôm nay, bạn có thể muốn làm như vậy tại một số điểm trong tương lai. Với .NET, bạn có thể cấu trúc lại giải pháp của mình để gửi email song song hoặc truy cập hàng đợi theo cách đa luồng. Tất cả điều này sẽ khó khăn trong SQL Server. Tóm lại, .NET cung cấp cho bạn khả năng tạo ra một giải pháp mở rộng hơn SQL Server.

3

Tôi nghĩ bạn đã trả lời câu hỏi của riêng bạn. Khi bạn đã chọn xếp hàng các email trong cơ sở dữ liệu IMO, sẽ có ít lợi thế khi tạo một giải pháp được quản lý trên máy chủ web để gửi email. Một điều tôi muốn xem xét là bạn lưu trữ các tệp đính kèm trên máy chủ web, điều này có nghĩa là sẽ có nhiều lưu lượng truy cập mạng hơn giữa máy chủ web và cơ sở dữ liệu hơn là máy chủ web gửi email (giả sử chúng chạy trên các máy chủ khác nhau). máy chủ vật lý). Sử dụng số liệu của bạn có thể là 5GB lưu lượng truy cập mỗi ngày trong tệp đính kèm. Tuy nhiên, tôi sẽ đi với giải pháp DB và kiểm tra nó một cách nghiêm ngặt để xem lưu lượng truy cập có trở thành vấn đề hay không. Nếu vậy, bạn đã không mất nhiều thời gian dev trên giải pháp DB.

+1

Tôi đồng ý với điều này, hãy đơn giản. – ChrisF

+0

Đây chắc chắn là một tùy chọn tôi muốn kiểm tra. Vấn đề của tôi là tôi thậm chí không chắc chắn rằng các máy chủ cơ sở dữ liệu sẽ có quyền truy cập vào các tập tin trên máy chủ web như giao tiếp giữa 2 máy chủ thông qua đăng nhập SQL không cửa sổ. – iandayman

+0

Nó sẽ phụ thuộc vào bản thân máy chủ SQL tài khoản Windows đang chạy. –

2

Tôi muốn sử dụng .NET thay vì gửi email từ DB. Gửi email trong .NET cũng rất đơn giản và sẽ không yêu cầu bất kỳ loại thiết lập mở rộng hoặc thời gian phát triển nào.

Trên ghi chú liên quan, tôi không biết tại sao SQL Server có thể gửi email vì chức năng này dường như không vừa với mô hình lưu trữ dữ liệu. SQL Server cũng có dựng hình 3D không?

+2

+1 cho dựng hình 3d lol, tôi có thể đoán rằng tính năng email có thể hỗ trợ quản trị viên SQL/nhà phát triển dễ dàng triển khai bất kỳ loại cảnh báo email nào mà không yêu cầu bất kỳ kiến ​​thức lập trình nào ngoài ngôn ngữ truy vấn mà họ đã biết – GenEric35

Các vấn đề liên quan