Khóa luận Sử dụng công nghệ windows communication foundation trong các ứng dụng trên diện rộng

MỤC LỤC

LỜI MỞ ĐẦU 6

1. Tính cấp thiết của đề tài: 6

2. Mục tiêu của đề tài: 8

CHƯƠNG 1: CÔNG NGHỆ WINDOWS COMMUNICATION FOUNDATION 11

1.1. Tổng quan về Windows Communication Foundation 11

1.1.1. Windows Communication Foundation là gì? 11

1.1.2. Tại sao sử dụng WCF? 12

1.2. Kiến trúc của Windows Communication Foundation 14

1.2.1. Hợp đồng (Contracts) 15

1.2.2. Dịch vụ thực thi (Runtime service) 16

1.2.3. Bản tin (Message) 17

1.2.4. Chứa và kích hoạt (Host and activation) 17

1.3. Các tính năng của WCF 17

1.3.1. Giao dịch (Transaction) 17

1.3.2. Chứa (Host) 18

1.3.3. Bảo mật (Security) 18

1.4. Mô hình lập trình với WCF 18

1.4.1. Các phương pháp lập trình 19

1.4.2. Nguyên lý ABCs 24

1.4.3. Địa chỉ (Address) 24

1.4.4. Liên kết (Binding) 27

1.4.5. Hợp đồng (Contract) 31

CHƯƠNG 2: GIỚI THIỆU GIẢI PHÁP CRM CHO DOANH NGHIỆP 43

2.1. CRM là gì? 43

2.2. Lịch sử học thuyết CRM 45

2.3. Các khái niệm liên quan trọng trong CRM 47

2.3.1. Tiềm năng 47

2.3.2. Tổ chức 47

2.3.3. Liên hệ 47

2.3.4. Cơ hội 47

2.3.5. Chiến dịch 47

2.3.6. Hợp đồng 47

2.3.7. Tình huống 47

2.3.8. Sản phẩm 48

2.3.9. Đối tác 48

2.3.10. Đối thủ 48

2.4. Lợi ích của CRM 48

CHƯƠNG 3: SỬ DỤNG CÔNG NGHỆ WCF ĐỂ XÂY DỰNG HỆ THỐNG CRM WCF 2010 50

3.1. Vấn đề đặt ra 50

3.2. Tổng quan về CRM WCF 2010 52

3.3. Quy trình tác nghiệp của CRM WCF 2010 54

3.3.1. Quy trình tiếp thị 54

3.3.2. Quy trình Bán hàng 55

3.3.3. Quy trình dịch vụ sau bán hàng 56

3.4. Các use case chính của hệ thống CRM WCF 2010 57

3.4.1. Quản lý tổ chức 57

3.4.2. Quản lý cơ hội 58

3.4.3. Quản lý hợp đồng 59

3.4.4. Quản lý tiềm năng 60

3.4.5. Quản lý chiến dịch 62

3.4.6. Quản lý báo cáo 63

3.5. Biểu đồ tuần tự của hệ thống 64

3.5.1. Thêm, sửa tổ chức 64

3.5.2. Xóa tổ chức 64

3.5.3. Thêm, sửa tiềm năng 65

3.5.4. Xóa tiềm năng 65

3.5.5. Thêm, sửa cơ hội 66

3.5.6. Xóa cơ hội 66

3.5.7. Thêm, sửa hợp đồng 67

3.5.8. Xóa hợp đồng 67

3.5.9. Thêm, sửa liên hệ 68

3.5.10. Xóa liên hệ 68

3.5.11. Thêm, sửa chiến dịch 69

3.5.12. Xóa chiến dịch 69

3.5. Kiến trúc và công cụ phát triển CRM WCF 2010 70

3.5.1. Kiến trúc của CRM WCF 2010 70

3.5.2. Môi trường phát triển CRM WCF 2010 71

3.6. Giao diện minh họa các phân hệ chính của CRM WCF 2010 71

3.6.1. Phân hệ Tổ chức 71

3.6.2. Phân hệ liên hệ 73

3.6.3. Phân hệ cơ hội 74

KẾT LUẬN 76

TÀI LIỆU THAM KHẢO 77

 

 

doc79 trang | Chia sẻ: maiphuongdc | Lượt xem: 2151 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Khóa luận Sử dụng công nghệ windows communication foundation trong các ứng dụng trên diện rộng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ụng đang chạy dịch vụ cũng như đường dẫn đến dịch vụ đó. Định dạng của một địa chỉ dịch vụ có cấu trúc như sau: scheme://[:port]/path Trong đó: Thành phần Mô tả Scheme Giao thức của máy chủ chạy dịch vụ Machine name Tên miền của máy chủ dịch vụ Port Đây là thành phần không bắt buộc, xác định cổng giao tiếp trên máy chủ. Giao thức HTTP mặc định là cổng 80 Path Đường dẫn tới dịch vụ Các kiểu địa chỉ Địa chỉ điểm cuối (endpoint address): Địa chỉ điểm cuối giống như ở ví dụ trên, một địa chỉ điểm cuối quy định địa chỉ của một điểm cuối dịch vụ cụ thể. Máy khách (chương trình khách) có thể truy nhật dịch vụ qua địa chỉ điểm cuối. Ví dụ qua địa chỉ sau: Khi máy khách truy nhập dịch vụ thông qua địa chỉ điểm cuối, máy khách có thể nói chuyện với dịch vụ và mọi liên lạc từ dịch vụ và đến dịch vụ đều thực hiện thông qua địa chỉ này. Địa chỉ cơ sở (base address): Địa chỉ cơ sở cung cấp một cách để xác định một địa chỉ đơn nhất cho một dịch vụ và gán các địa chỉ tương đối cho từng điểm cuối riêng lẻ. Ví dụ, giả sử ta có một dịch vụ với ba điểm cuối, ta có thể gán cho dịch vụ đó một địa chỉ cơ sở như sau Với địa chỉ cơ sở được gán cho dịch vụ, ta có thể gán cho ba điểm cuối các địa chỉ tương đối sau Địa chỉ siêu thông tin (mex address): Địa chỉ MEX cho phép một máy khách thu thập các thông tin về một dịch vụ nào đó. MEX, nghĩa là metadata exchange (trao đổi siêu dữ liệu), là một địa chỉ điểm cuối HTTP được sử dụng để lấy thông tin về dịch vụ. Ví dụ địa chỉ sau là một địa chỉ MEX: Thông tin về dịch vụ cung cấp cho máy khách thông qua địa chỉ MEX được lấy từ siêu dữ liệu của dịch vụ. Siêu dữ liệu này chính là những mô tả về dịch vụ. Các định dạng địa chỉ Khi phát triển một dịch vụ bạn cần lưu ý các điểm sau: Môi trường chứa dịch vụ. Môi trường có thể bắt buộc hoặc đòi hỏi địa chỉ phải được định dạng theo cách này hay cách khác. Nơi địa chỉ được xác định. Bạn có các tuỳ chọn để lưu nó ở tệp cấu hình hoặc bạn có thể lưu luôn trong mã nguồn của chương trình của bạn. Phần này sẽ giới thiệu với bạn các định dạng địa chỉ khác nhau để bạn có thể hình dung về tính linh hoạt và các tuỳ chọn có thể có khi phát triển và phân phối dịch vụ. Địa chỉ có cấu trúc chung nhưng có nhiều định dạng địa chỉ khác nhau, phân biệt qua chính giao thức trong địa chỉ. Bảng các định dạng địa chỉ Địa chỉ Đặc điểm Ví dụ HTTP Là định dạng địa chỉ hay dùng nhất HTTPS Địa chỉ HTTPS giống như địa chỉ HTTP chỉ khác là nó quy định việc vận chuyển được bảo mật bằng cách sử dụng SSL (Secure Socket Layer), và được quy định bằng https. Ngoài giao thức (scheme) là https, thì địa chỉ HTTPS không khác gì với địa chỉ HTTP. https://localhost/Service/HelloWorld TCP net.tcp://localhost/Service/HelloWorld MSMQ net.msmq://localhost/Service/HelloWorld PIPE net.pipe://localhost/Service/HelloWorld IIS Địa chỉ IIS cũng giống như địa chỉ MSMQ, hơi khác về định dạng một chút so với các định dạng khác. Địa chỉ IIS đòi hỏi phải có tên thư mục ảo cũng như tên tệp dịch vụ . Khi lập trình với các địa chỉ trong Windows Communication Foundation bạn có thêm sự linh hoạt trong làm việc với các điểm cuối và dịch vụ bởi bạn hoàn toàn có thể lập trình để định nghĩa và xử lý các địa chỉ cơ sở. Trong thực tế, không mấy khi các nhà lập trình tạo ra các điểm cuối và các địa chỉ điểm cuối thông qua mã nguồn do các địa chỉ và binding bạn sử dụng trong quá trình phát triển dịch vụ thường không giống so với các địa chỉ và binding sẽ sử dụng khi phân phối dịch vụ. Thông thường là ta định nghĩa các điểm cuối và các địa chỉ trong tệp tin cấu hình. Tuy nhiên WCF vẫn có lớp EndpointAddress để hỗ trợ việc lập trình các địa chỉ, điều này làm tăng tính linh hoạt cho WCF. 1.4.4. Liên kết (Binding) Các Binding là phương pháp theo đó các chi tiết trong truyền thông được xác định để tạo kết nối tới điểm cuối dịch vụ WCF. Các Bindings trong WCF có thể thay đổi mức độ phức tạp. Các mức độ này có thể từ đơn giản nhất cho tới cực kỳ phức tạp. Khi định nghĩa một binding, ta cần chỉ ra các thông tin ở trong các lĩnh vực sau: Protocol (Giao thức): Định nghĩa các thông tin cần sử dụng trong binding ví dụ như tính bảo mật, khả năng thực hiện giao dịch, hoặc khả năng truyền bản tin một cách tin cậy. Transport (Vận chuyển): Định nghĩa giao thức cơ bản được sử dụng trong truyền thông. Encoding (mã hoá): Định nghĩa việc mã hoá được sử dụng cho các bản tin trong quá trình liên lạc. WCF cung cấp sẵn một bộ các Binding có thể đáp ứng được phần lớn cái yêu cầu về truyền thông trong các ứng dụng phổ biến. Nhưng nếu những gì mà Microsoft cung cấp vẫn chưa đủ, chúng ta hoàn toàn có thể xây dựng một kiểu binding bằng cách sử dụng CustomBinding. Bảng các binding được có sẵn Kiểu Công nghệ Bảo mật Phiên Giao dịch BasicHttpBinding Basic Profile 1.1 (none), Transport, Message (none) (none) WSHttpBinding WS Transport, (Message), Mixed (none), Transport, Reliable (none), Yes WSDualHttpBinding WS (Message) Reliable (none), Yes WSFederationHttpBinding WS (Message) (none), Reliable (none), Yes NetTcpBinding .NET (Transport), Message Reliable, (Transport) (none), Yes NetNamedPipeBinding .NET (Transport) none, (Transport) (none), Yes NetMsmqBinding .NET Message, (Transport), Both (none) (none), Yes NetPeerTcpBinding Peer (Transport) (none) none MsmqIntegrationBinding MSMQ (Transport) (none) (none), Yes Trong bảng trên, những giá trị để trong ngoặc là những giá trị mặc định tương ứng cho các tính năng, các tính năng được định nghĩa như sau: Công nghệ: Định nghĩa giao thức hay công nghệ mà binding sẽ sử dụng để đảm bảo việc trao đổi và sử dụng thông tin. Bảo mật: Xác định cách bảo mật kênh trao đổi thông tin Phiên: Xác định việc hỗ trợ contract phiên Giao dịch: Xác định việc cho phép hay không các giao dịch (transaction) Dựa vào bảng đó, ta có thể đưa ra một số nhận xét. Nếu yêu cầu bài toán đòi hỏi việc tích hợp giữa các nền tảng khác nhau, ta sẽ chú ý đến cái binding với tiền tố [ws]. Còn nếu môi trường làm việc bài toán là Windows thì lựa chọn các binding với tiền tố [net] có vẻ hợp lý. Riêng basicHttpBinding phù hợp với những dịch vụ ra đời trước WCF như ASMX. Khi ta chọn binding để giải quyết một vấn đề, thường ta chú ý đến xem nó hỗ trợ giao thức nào. Bảng những binding có sẵn và giao thức hỗ trợ tương ứng Kiểu HTTP HTTPS TCP MSMQ BasicHttpBinding Có Có Không Không WSHttpBinding Có Có Có Không WSDualHttpBinding Có Có Không Không WSFederationHttpBinding Có Có Không Không NetTcpBinding Không Không Có Không NetNamedPipeBinding Không Không Không Không NetMsmqBinding Không Không Không Có NetPeerTcpBinding Không Không Có Không MsmqIntegrationBinding Không Không Không Có Để dễ dàng hơn trong việc xác định binding, ta có thể dựa vào sơ đồ sau: Hình 1 9: Sơ đồ lựa chọn Binding 1.4.5. Hợp đồng (Contract) Các contract trong Windows Communication Foundation cung cấp khả năng làm việc đa môi trường khi liên lạc với các máy khách. Các máy khách và dịch vụ thoả thuận với nhau về các contract như kiểu của các hành động và các cấu trúc dữ liệu mà các bên sẽ sử dụng trong quá trình liên lạc qua lại với nhau. Nếu không có contract thì không thể thực hiện liên lạc được do không có sự thoả thuận thống nhất giữa các bên. Khi định nghĩa một dịch vụ trong Windows Communication Foundation ta sử dụng ba kiểu contract cơ bản sau: Service Contract (Contract dịch vụ): Định nghĩa các phương thức của một dịch vụ, thực chất là các hành động mà client có thể sử dụng ở các điểm cuối (endpoint) Data Contract (Contract dữ liệu): Định nghĩa các kiểu dữ liệu được sử dụng ở các phương thức của dịch vụ Message Contract (Contract bản tin): Cung cấp khả năng để điều khiển các đầu đề bản tin trong quá trình tạo ra các bản tin Cũng giống như các thành phần khác trong WCF, các contract được định nghĩa sử dụng các khái niệm mà ta đã quen thuộc. Các contract được định nghĩa sử dụng các lớp và giao diện, bằng cách thêm vào các thuộc tính mô tả (attribute) cho các lớp và giao diện đó. Có thể hình dung mối liên hệ giữa các contract với .NET Framework CLR một cách gần đúng như sau: Service Contracts: Cung cấp thông tin để thực hiện ánh xạ từ CLR sang WSDL (Web Service Description Language - Ngôn ngữ mô tả dịch vụ Web). Data Contracts: Cung cấp thông tin để thực hiện ánh xạ từ CLR sang XSD (XML Schema Definition - Định nghĩa schema XML). Message Contracts: Dùng để miêu tả cấu trúc của bản tin SOAP (Simple Object Access Protocol - Giao thức truy nhập đối tượng đơn giản). Service Contracts (Contract dịch vụ) Như đã nói ở phần trên, một contract dịch vụ định nghĩa các hành động hoặc phương thức có ở điểm cuối dịch vụ (Endpoint) và được đưa ra để máy khách có thể sử dụng. Nó còn định nghĩa một cách cơ bản các phép trao đổi bản tin như việc bản tin sẽ thế nào trong yêu cầu/trả lời (Request/Reply) hay trong liên lạc đơn công (one-way) hoặc song công (Duplex). Contract dịch vụ đưa ra một số thông tin cho các máy khách đủ để cho máy khách có thể biết được dịch vụ này có thể cung cấp những gì. Những thông tin đó bao gồm: Các kiểu dữ liệu trong bản tin Vị trí của các phương thức – hành động Thông tin về giao thức, định đạng lưu dữ liệu để đảm bảo cho liên lạc thành công Nhóm các hành động Mẫu trao đổi bản tin (Message exchange pattern – MEP) Như trên đã nói, để định nghĩa contract dịch vụ, ta sử dụng các thuộc tính mô tả cho một lớp hay giao diện. Thuộc tính mô tả một contract dịch vụ là ServiceContract. Ví dụ sau định nghĩa một giao diện như là một contract dịch vụ: [ServiceContract] public interface IStaffInformation { } Sau đó để định nghĩa các hành động (phương thức) cho dịch vụ ta sử dụng phần mô tả là OperationContract cho các phương thức của giao diện như ví dụ dưới đây: [OperationContract] bool HasPerson(int staffId); [OperationContract] string GetPersonName(int staffId); Gộp các phần lại ta sẽ được một định nghĩa hoàn chỉnh cho một contract dịch vụ: [ServiceContract] public interface IStaffInformation { [OperationContract] bool HasPerson(int staffId); [OperationContract] string GetPersonName(int staffId); } Sau khi có được định nghĩa cho dịch vụ, ta có thể cài đặt một lớp cho giao diện trên, trong đó định nghĩa các hàm (phương thức) thực hiện theo logic của dịch vụ. public class StaffInformation : IStaffInformation { public bool HasPerson(int staffId) { // Làm việc gì đó ở đây, và trả về kết quả } public string GetPersonName(int staffId) { // Làm việc gì đó ở đây, và trả về kết quả } } Trong trường hợp ta không muốn định nghĩa dịch vụ ở phần giao diện, ta hoàn toàn có thể định nghĩa dịch vụ ở trong lớp cài đặt dịch vụ đó như sau: [ServiceContract] public class StaffInformation : IStaffInformation { [OperationContract] public bool HasPerson(int staffId) { // Làm việc gì đó ở đây, và trả về kết quả } [OperationContract] public string GetPersonName(int staffId) { // Làm việc gì đó ở đây, và trả về kết quả } } Trong khi định nghĩa contract dịch vụ, chúng ta đã sử dụng hai lớp thuộc tính để mô tả là ServiceContract và OperationContract. Hai thuộc tính này có rất nhiều tham số kèm theo, tuy nhiên trong nhiều trường hợp, chúng ta hoàn toàn có thể sử dụng các giá trị mặc định của hai thuộc tính này để định nghĩa contract dịch vụ. Trong một số trường hợp khi chúng ta muốn điều khiển sâu hơn về các thông tin liên quan đến dịch vụ, ta có thể đưa thêm các tham số cho hai thuộc tính này. Thuộc tính ServiceContract Thuộc tính ServiceContract được áp dụng cho việc mô tả các giao diện hoặc các lớp để định nghĩa một contract dịch vụ. Thuộc tính này có các tham số sau: Bảng tham số thuộc tính ServiceContract Tên tham số Mô tả CallbackContract Thiết lập/Trả về kiểu của callback contract khi liên lạc ở chế độ song công. Khi liên lạc giữa máy khách và dịch vụ được thiết lập, tham số này chỉ ra rằng máy khách cần phải đợi lời gọi hàm từ phía dịch vụ thông qua kiểu của callback contract đã định nghĩa. Ví dụ sau mô tả cách sử dụng tham số CallbackContract [ServiceContract(CallbackContract=typeof(IClientContract))] public class StaffInformation : IStaffInformation { .... } Trong ví dụ trên, dịch vụ quy định callback contract phải có kiểu là IClientContract ConfigurationName Thiết lập/Trả về tên được sử dụng để xác định thành phần dịch vụ trong tệp tin cấu hình. Ví dụ về việc sử dụng tham số ConfigurationName như sau: [ServiceContract(ConfigurationName="DichVu")] public class StaffInformation : IStaffInformation { .... } Và ở tệp tin cấu hình ta có phần định nghĩa thành phần dịch vụ với tên là DichVu Name Thiết lập/Trả về tên của thành phần trong WSDL. Giá trị mặc định cho tham số này chính là tên của giao diện hay lớp có gắn thuộc tính ServiceContract. Tham số này được sử dụng trong trường hợp ta muốn thay đổi tên của thành phần hoặc muốn giữ nguyên tên của thành phần nhưng lại đổi tên của giao diện hay lớp định nghĩa dịch vụ. Namespace Thiết lập/Trả về namespace (không gian tên) cho thành phần trong WSDL. Giá trị mặc định cho tham số này là ProtectionLevel Quy định yêu cầu về mức bảo vệ trong binding. Việc quy định này bao gồm quy định về mã hoá, chữ ký điện tử tại các điểm cuối của dịch vụ SessionMode Quy định kiểu hỗ trợ cho các phiên làm việc tin cậy mà một dịch vụ đòi hỏi hoặc hỗ trợ. Ví dụ có thể định nghĩa đòi hỏi phải hỗ trợ phiên làm việc tin cậy cho dịch vụ như sau: [ServiceContract(SessionMode=SessionMode.Required)] public class StaffInformation : IStaffInformation { .... } Thuộc tính OperationContract Thuộc tính OperationContract được gắn với các phương thức trong các giao diện hay các lớp. Chỉ các phương thức được gắn thuộc tính OperationContract mới được coi là phương thức của dịch vụ. Các tham số có thể sử dụng cho thuộc tính này như sau: Bảng tham số thuộc tính OperationContract Tên tham số Mô tả Action Quy định hành động để chỉ ra một cách duy nhất phương thức này. WCF phân phối các bản tin yêu cầu với các phương thức dựa trên các hành động của chúng. AsyncPattern Chỉ ra rằng phương thức được cài đặt hoặc có thể gọi theo cách bất đồng bộ sử dụng cặp phương thức bắt đầu bởi Begin và End IsInitiating Quy định phương thức này có phải là phương thức để khởi tạo trong một phiên hay không IsOneWay Chỉ ra rằng phương thức này chỉ chứa một bản tin đầu vào duy nhất. Phương thức không có bản tin trả về. IsTerminating Quy định xem liệu WCF có kết thúc phiên làm việc hiện tại sau khi phương thức này thực hiện xong hay không Name Quy định tên cuối cùng của phương thức sẽ có trong dịch vụ. Giá trị mặc định của tham số này là tên của phương thức ProtectionLevel Quy định sự bảo vệ ở mức bản tin mà một phương thức yêu cầu khi thực hiện ReplyAction Quy định hành động của bản tin trả lời cho phương thức này Ví dụ sau biểu diễn việc sử dụng các tham số của OperationContract để quy định thứ tự thực hiện của các phương thức khi làm việc với dịch vụ. Theo ví dụ này, quy trình để máy khách liên lạc với dịch vụ như sau. Đầu tiên máy khách cần phải gọi hàm Login để đăng nhập Sau đó gọi hàm HasPerson hoặc GetPersonName để lấy thông tin về nhân viên Cuối cùng gọi hàm Logout để đăng xuất [ServiceContract] public interface IStaffInformation { [OperationContract(IsInitiating=true, IsTerminating=false)] void Login(string userName, string password); [OperationContract] bool HasPerson(int staffId); [OperationContract] string GetPersonName(int staffId); [OperationContract(IsInitiating=false, IsTerminating=true)] void Logout(); } Nếu máy khách không thực hiện theo thứ tự trên thì dịch vụ sẽ báo lỗi và không thực hiện. Data Contracts Một cách đơn giản thì một contract dữ liệu mô tả dữ liệu cần trao đổi. Trước khi máy khách và dịch vụ thực hiện liên lạc thì chúng phải đồng ý với nhau về kiểu dữ liệu trao đổi, đó là contract dữ liệu. Điều quan trọng là khi thực hiện liên lạc, máy khách và dịch vụ hoàn toàn không cần phải chung nhau cùng các kiểu dữ liệu mà chúng chỉ cần chung nhau các contract dữ liệu. Contract dữ liệu định nghĩa cách serialized và deserialized cho từng tham số và kiểu trả về. Quá trình serialization dữ liệu là quá trình chuyển một cấu trúc dữ liệu thành một định dạng có thể dùng trong liên lạc hoặc gửi qua đường truyền. Ví dụ đọc dữ liệu từ cơ sở dữ liệu sau đó chuyển nó thành một chuỗi các byte và gửi qua đường truyền. Quá trình deserialization là quá trình ngược lại với quá trình serialization. Quá trình này nhận dữ liệu từ đường truyền và chuyển ngược thành cấu trúc dữ liệu. Để định nghĩa contract dữ liệu, ta sử dụng thuộc tính DataContract và DataMember. Thuộc tính DataContract Bảng tham số thuộc tính DataContract Tên tham số Mô tả Name Quy định tên của DataContract. Mặc định là tên contract định nghĩa trong .NET Namespace Quy định namespace của DataContract. Thuộc tính DataMember Bảng tham số thuộc tính DataMember Tên tham số Mô tả Name Quy định tên của DataMember. Mặc định là tên contract định nghĩa trong .NET Namespace Quy định namespace của DataMember. IsRequired Quy định xem DataMember có cần thiết phải có hay không Order Thiết lập hoặc trả ra thứ tự serialization và deserialization của DataMember. EmitDefaultValue Thiết lập hoặc trả ra giá trị xác định để sinh giá trị mặc định là null hoặc 0 cho DataMember khi serialization. Message Contracts Các contract bản tin được định nghĩa bằng cách gắn thuộc tính MessageContract vào các lớp. Sau đó cần phải xác định rõ cho từng bản tin các thuộc tính MessageHeader và MessageBodyMember. Ví dụ sau biểu diễn một contract bản tin đơn giản. [MessageContract] public class Person { [MessageHeader] int StaffId; [MessageBodyMember] string FullName; [MessageBodyMember] int Age; } Thuộc tính MessageHeader: được gắn với các trường hoặc thuộc tính của một kiểu. Những trường hay thuộc tính này sau đó sẽ được ánh xạ thành các đầu đề bản tin SOAP. Thuộc tính MessageBodyMember: được gắn với các trường hoặc thuộc tính của một kiểu. Những trường hay thuộc tính này sau đó sẽ được ánh xạ thành phần nội dung của bản tin SOAP. Như vậy, điểm cuối (Endpoint) là một bộ ba: A - Address, B - Binding, C - Contract. Các máy khách (client) gọi dịch vụ WCF thông qua các điểm cuối của dịch vụ. Mọi chi tiết bên trong Service đều được bao che kín. Mỗi điểm cuối chỉ có thể có một Address, một Binding và một Contract. Tuy nhiên, một dịch vụ thì lại có thể có nhiều điểm cuối (Endpoint). Có 2 cách để định nghia điểm cuối: - Định nghĩa điểm cuối bằng mã nguồn - Định nghĩa điểm cuối bằng tập tin cấu hình. Định nghĩa điểm cuối bằng mã nguồn: Hai dòng đầu của đoạn mã nguồn bên dưới dùng để định nghĩa các địa chỉ mà dịch vụ sẽ sử dụng. Dòng tiếp tạo ra một đối tượng ServiceHost để chứa dịch vụ. Uri bpa = new Uri("net.pipe://localhost/NetNamedPipeBinding"); Uri tcpa = new Uri("net.tcp://localhost:8000/TcpBinding"); ServiceHost sh = new ServiceHost(typeof(ServiceClass), bpa, tcpa); NetNamedPipeBinding pb = new NetNamedPipeBinding(); NetTcpBinding tcpb = new NetTcpBinding(); ServiceMetadataBehavior behave = new ServiceMetadataBehavior(); sh.Description.Behaviors.Add(behave); sh.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex"); sh.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexNamedPipeBinding(), "mex"); sh.AddServiceEndpoint(typeof(IServiceClass), pb, bpa); sh.AddServiceEndpoint(typeof(IServiceClass), tcpb, tcpa); sh.Open(); Định nghĩa điểm cuối bằng tập tin cấu hình: Sau đây là một ví dụ dùng tập tin cấu hình để định nghĩa điểm cuối. “Luôn luôn có nhiều cách để giải quyết một vấn đề” đó là triết lý mà Microsoft gắn liền trong các công nghệ của mình. WCF cũng vậy, điều đó làm tăng tính linh động cho các ứng dụng và có nhiều sự lựa chọn hơn cho các nhà phát triển phần mềm. Với sự phổ biến của hệ điều hành Windows và các ứng dụng trên Windows thì WCF sẽ là một giải pháp hữu ích về công nghệ cho các ứng dụng doanh nghiệp muốn triển khai trên diện rộng với nhiều chi nhánh khác nhau. CRM là một trong các hệ thống như vậy. Trong chương tiếp theo – Chương 2 sẽ giới thiệu về giải pháp CRM. CHƯƠNG 2: GIỚI THIỆU GIẢI PHÁP CRM CHO DOANH NGHIỆP 2.1. CRM là gì? Customer Relationship Management, viết tắt là CRM, là hệ Quản lý Quan hệ Khách hàng. Trên thế giới hiện nay có khá nhiều định nghĩa khác nhau về CRM. Sau đây là một số định nghĩa cơ bản: Định nghĩa 1: CRM là triết lý kinh doanh lấy khách hàng làm trung tâm, trong đó lấy cơ chế hợp tác với khách hàng bao trùm toàn bộ quy trình hoạt động kinh doanh của doanh nghiệp. CRM được xác định là cả một hệ thống những quy trình hỗ trợ mối quan hệ khách hàng trong suốt vòng đời kinh doanh, nhằm đạt được mục tiêu chính: tạo ra dòng thu hút những khách hàng mới và phát triển những khách hàng sẵn có. Giải pháp CRM bao gồm 4 yếu tố: 1. Cấu trúc tổ chức lấy khách hàng làm trung tâm. 2. Những quy trình kinh doanh. 3. Những quy luật về dịch vụ khách hàng. 4. Phần mềm hỗ trợ. Những quy luật và nguyên tắc trong quá trình phục vụ khách hàng phải được thấm nhuần trong toàn bộ doanh nghiệp: kinh doanh, tiếp thị, dịch vụ, hậu cần, sản phẩm, tài chính và các phòng ban khác. Quản lý mối quan hệ có nghĩa là thu hút những khách hàng mới, biến khách hàng trung lập thành khách hàng chung thuỷ, biến những khách hàng tận tuỵ thành các đối tác kinh doanh. Chiến lược này thích hợp với mọi loại thị trường, bắt đầu bằng việc thu hút những khách hàng mới, sau đó tạo mối quan hệ với họ, củng cố niềm tin đối với họ. Kết quả là, chính những khách hàng này sẽ tạo nên mạng lưới đại lý cho doanh nghiệp. Định nghĩa 2: CRM là một chiến lược kinh doanh được thiết kế để nâng cao lợi nhuận, doanh thu và sự hài lòng của khách hàng. Nó bao gồm phần mềm, các dịch vụ và một phương thức kinh doanh mới nhằm gia tăng lợi nhuận, doanh thu, đồng thời làm hài lòng khách hàng hơn để giữ chân khách hàng lâu hơn. Bằng cách trợ giúp các doanh nghiệp có quy mô khác nhau xác định được các khách hàng thực sự, nhanh chóng có được khách hàng phù hợp và duy trì mối quan hệ với họ lâu dài hơn. CRM về cơ bản có liên quan đến việc tập trung tất cả dữ liệu khách hàng và tự động hóa nhiều công việc buồn tẻ trong công tác tiếp thị, quản lý bán hàng, và dịch vụ khách hàng để những người chuyên trách có thể sử dụng nhiều thời gian hơn vào các công việc trợ giúp các khách hàng của họ thành công hơn và tốn ít thời gian hơn. Định nghĩa 3: CRM là một chiến lược kinh doanh quy mô toàn công ty được thiết kế nhằm làm giảm chi phí và tăng lợi nhuận bằng cách củng cố lòng trung thành của khách hàng. CRM thực sự sẽ mang lại lợi ích từ tất cả các nguồn thông tin trong và ngoài doanh nghiệp để đem đến cái nhìn toàn diện về từng khách hàng tại từng thời điểm cụ thể. Điều này cho phép các nhân viên làm việc với khách hàng trong các lĩnh vực như tiếp thị, bán hàng, và hỗ trợ khách hàng có thể đưa ra những quyết định nhanh chóng về mọi thứ nhằm đạt được hiệu quả cao trong kinh doanh. CRM là cả một chiến thuật được sử dụng để tìm hiểu nhiều hơn về nhu cầu và hành vi của khách hàng nhằm phát triển sâu hơn mối quan hệ với họ. Hơn hết thảy, những mối quan hệ khách hàng tốt chính là trung tâm của mọi thành công của doanh nghiệp. Có rất nhiều yếu tố công nghệ hợp thành CRM, nhưng cho rằng CRM là thuật ngữ căn bản thuộc về công nghệ là hoàn toàn sai lầm. Thực sự hiệu quả hơn khi hiểu CRM là một quy trình đem lại cùng lúc rất nhiều thông tin về khách hàng, hiệu quả của công tác tiếp thị, bán hàng, những phản hồi và những xu hướng của thị trường. Nếu những mối quan hệ khách hàng là trái tim của doanh nghiệp thành công, thì CRM là van tim bơm máu nuôi dưỡng cuộc sống của doanh nghiệp. CRM giúp các doanh nghiệp sử dụng hiệu quả nguồn nhân lực, các quy trình và hiểu thấu lợi ích của công nghệ đối với việc gia tăng khách hàng. Điều này cho phép cải thiện dịch vụ khách hàng, tổ chức tốt các quy trình tiếp thị và bán hàng, tăng hiệu quả chăm sóc khách hàng, giảm tỉ lệ thất bại, giảm chi phí, và gia tăng doanh thu cho doanh nghiệp. 2.2. Lịch sử học thuyết CRM Kế tiếp ERP (Enterprise Resource Planning - Kế hoạch Tài nguyên Doanh nghiệp, chiến lược kinh doanh được hứa hẹn sẽ tự động hỗ trợ doanh nghiệp), thuật ngữ CRM đầu tiên ra đời vào giữa thập niên 90. Tại thời điểm đó nói tới CRM là nói tới phần mềm dùng để giúp cho các doanh nghiệp quản lý những mối quan hệ khách hàng của họ. Từ phần mềm Tự động Thúc đẩy Bán hàng SFA - phần mềm tập trung vào quản lý liên hệ khách hàng cho tới những giải pháp quản lý kiến thức được tích hợp đã tạo nên những nền tảng ban đầu của CRM. Một vài năm trước đây đã chứng kiến sự mở rộng của thuật ngữ này nhằm hoàn thiện một cách tiếp cận chiến lược hơn và theo sau đó là sự đầu tư hàng tỉ đô la trên toàn thế giới vào các giải pháp và dịch vụ CRM. CRM thành công luôn bắt đầu cùng với chiến lược kinh doanh, điều này mang lại sự thay đổi trong doanh nghiệp và các quy trình hoạt động của doanh nghiệp được hỗ trợ bởi công nghệ. CRM đã tạo ra một triết lý kinh doanh thực sự l

Các file đính kèm theo tài liệu này:

  • docNguyen Quang Hung_K50CNPM_Khoa luan tot nghiep dai hoc.doc