Các vấn đề cần quan tâm khi xây dựng module:

Một phần của tài liệu Đồ án: " Tìm hiểu và xây dựng ứng dụng Web trên siêu thị trực tuyến với ASP.NET MVC " pps (Trang 52 - 55)

Để lưu trữ thông tin đăng kí nhận thư của người dùng ta chỉ cần lưu các thông tin như địa chỉthư điện tử của người dùng, tên, họ, định dạng thư nhận. Tất cả các

thông tin này có trong các bảng của module hồ sơ và thành viên ta hoàn toàn có

thể tận dụng.

Việc tạo và gửi thư điện tử của người dùng với vai trò là nhà quản trị có thể được

xây dựng sử dụng namespace System.Net.Mail (namespace này được định nghĩa trong thư viện System.dll) . Các lớp chính cho việc tạo và gửi thư là lớp

MailMessage, và lớp SmtpClient cung cấp các phương thức tạo và gửi thư bằng

việc kết nối với máy chủ SMTP đã được cấu hình.

Với lớp MailMessage ta có thể tạo toàn bộ thông tin đầy đủ của một thư điện tử như sau:

// create the message

MailMessage mail = new MailMessage(); // set the sender's address and display name

mail.From = new MailAddress("dangtienloc@gmail.com", "Loc Dang"); // add a first recipient by specifying only her address

mail.To.Add("doangquangminh@gmail.com");

// add a second recipient by specifying his address and display name

mail.To.Add(new MailAddress("nguyenducdan@gmail.com", "Dan nguyen")); // add a third recipient, but to the CC field this time

mail.CC.Add("mainga@gmail.com"); // set the mail's subject and HTML body mail.Subject = "Sample Mail";

mail.Body = "Hello, <b>my friend</b>!<br />How are you?"; mail.IsBodyHtml = true;

// set the mail’s priority to high mail.Priority = MailPriority.High; // add a couple of attachments mail.Attachments.Add(

new Attachment(@"c:\demo.zip", MediaTypeNames.Application.Octet)); mail.Attachments.Add(

Khi đối tượng MailMessage đã được tạo ta có thể gửi nó bằng phương thức Send

của lớp SmtpClient.

SmtpClient smtpClient = new SmtpClient(); smtpClient.Send(mail);

Trước khi có thể gọi phương thức Send ta cần thiết lập các thông tin cấu hình cho hệ thống để phương thức này có thể thực hiện được như địa chỉ của máy chủ

SMTP (thuộc tính SmtpClient Host) , cổng (thuộc tính port) và giấy chứng thực

của máy chủ này (thuộc tính credentials) , kết nối được mã hóa với SSL (thuộc

tính EnableSsl) và thời gian duy trì từ lúc bắt đầu cho tới khi kết thúc của việc gửi thư ( thuộc tính TimeOut , giá trị mặc định là 100 giây) . Một thuộc tính quan trọng

DeliveryMethod (đây là thuộc tính liệt kê của kiểu dữ liệu SmtpDeliveryMethod. Nó có thể nhận một trong các giá trị sau:

Network: Thư được gửi thông qua kết nối trực tiếp tới một máy chủ Smtp cụ thể

PickupDirectoryFromIs: Thư điện tử này được chuẩn bị và tệp thư này được lưu

vào thư mục mặc định là <drive>:\Inetpub\mailroot\Queue. IIS sẽ lấy thư này từ hàng đợi thư để gửi.

SpecifedPickupDirectory: Các tệp EML với thư điện tử sẽ được gửi được lưu

vào thư mục được chỉ định cho thuộc tính này của đối tượng SmtpClient. Thiết lập

này sẽ hữu ích khi ta có một ứng dụng ngoài (không phải IIS) xử lí việc chọn thư

và gửi

Cấu hình phần gửi thư của hệ thống thương mại trực tuyến

<system.net>

<mailSettings>

<smtp deliveryMethod="Network" from="dangtienloc@gmail.com">

<network defaultCredentials="true" host="MailServer" port="25"/> </smtp>

</mailSettings> </system.net>

Vấn đề thời gian trong xử lí gửi thư có thể là rất lâu khiến người dùng có thể nghĩ

hệ thống có lỗi. Việc gửi thư tới hàng ngàn khách hàng đăng kí nhận thư

(subscribers) thường phải mất hàng phút trong khi để xử lí một yêu cầu theo tiêu chuẩn chỉ nên trong vài giây.

Một giải pháp được đưa ra trong hệ thống đó là khi người dùng nhấn nút submit (tương đương với hành động gửi thư) thì ở phía máy chủ sẽ sinh ra một tiến trình xử lí nhiệm vụ gửi thư mất nhiều thời gian đó ở chế độ nền (backgroudn running

mode) và chuyển hướng người dùng về trang quản lí thư . Và ở trang đó người

dùng có thể thấy được trạng thái của tất cả các thư đã gửi trong đó có cả thư mới

tạo gần nhất và đang được gửi .

Để tránh việc phải có một nút refresh ở trang quản lí thư đó để biết được trạng thái thư mới gửi gần nhất ta sẽ sử dụng JQuery để yêu cầu dư liệu từ lớp điều khiển

$.ajax({

type: "GET",

url: "/Newsletter/UpdateStatus", dataType: "html",

sucess: function (result) { var domElement = $(result);

$("#Newsletter_Status_Table").replaceWith(domElement); }

});

Tạo các luồng tiến trình chạy nền – đa tiến trình

Các luồng tiến trình chạy nền hay luồng phụ được sử dụng để xử lí các nhiệm vụ

cần nhiều thời gian mà không ảnh hưởng tới tiến trình chính.

Với ASP.NET ta có thể tạo 250 tiến trình chạy cùng một thời điểm trên một CPU

Việc tạo mới một tiến trình không khó tuy nhiên ta phải quan tâm tới việc các tiến

trình có thể truy cập cùng lúc tới cùng một không gian nhớ. Để tạo tiến trình ta cần

namespace System.Threading trong thư viện mscorlib.dll . Dưới đây là một đoạn code tạo tiến trình phụ chạy nền

// create and start a background thread with some input parameters

object[] parameters = new object[]{"val1", 10, DateTime.Now};

ParameterizedThreadStart pts = new

ParameterizedThreadStart(ExecuteTask); Thread thread = new Thread(pts);

thread.Priority = ThreadPriority.BelowNormal; thread.Start(parameters);

// main thread goes ahead immediately …

// the method run asynchronously by the background thread

void ExecuteTask(object data) {

// extract the parameters from the input data object

object[] parameters = (object[])data;

string val1 = (string)parameters[0];

int val2 = (int)parameters[1];

DateTime val3 = (DateTime)parameters[2]; // execute time consuming processing here …

uc New sLetters Registered User (from Actors) Administrator (from Actors) Subscribe

Create New sletters

Edit New sletters Manage New sletters

Delete New sletters

«incl ude»

«i nclude»

4.3. Sơ đồ chức năng

Hình 3.11 – Sơ đồ chức năng của module

Một phần của tài liệu Đồ án: " Tìm hiểu và xây dựng ứng dụng Web trên siêu thị trực tuyến với ASP.NET MVC " pps (Trang 52 - 55)

Tải bản đầy đủ (PDF)

(122 trang)