คุณปรับใช้. NET Web Application อย่างไร (ข้อเสนอแนะโปรด!)


10

เมื่อเร็ว ๆ นี้เราได้อัปเกรดเว็บไซต์ ASP.NET เป็นเว็บแอปพลิเคชันและเรารู้สึกตกใจเมื่อเกิดความยุ่งยากในการปรับใช้ เมื่อพิจารณาว่างานนี้ต้องเป็นเรื่องธรรมดาฉันก็สงสัยว่าปลั๊กอินหรือซอฟต์แวร์ที่คนใช้ในการปรับใช้อย่างรวดเร็วจัดเก็บระยะไกลโครงการ (เช่นเว็บไซต์) คืออะไร?

จะต้องมีวิธีที่ดีกว่า "เผยแพร่" ในVisual Studioแล้วต้อง FTP ไฟล์ที่เปลี่ยนแปลงด้วยตนเองหรือไม่ ไม่น้อยเพราะไซต์จะพังเมื่อเราอัปโหลด. DLL ของเรา

มีข้อยกเว้นไฟล์เที่ยวยุ่งยิ่งมากมายที่ฉันจะต้องทำให้กระบวนการเป็นไปโดยอัตโนมัติให้มากที่สุดเพื่อป้องกันการอัพโหลดโดยไม่ตั้งใจ

ด้วยโซลูชันเก่าของเรา (บนเว็บไซต์ของเรา) เราใช้Dispatch สำหรับ ASPซึ่งโยกไปมาทั้งหมดและทำให้กระบวนการทั้งหมดเพียงคลิกเดียว น่าเสียดายที่ไม่ดีสำหรับ DLLs (ดังที่ได้กล่าวไว้ก่อนหน้านี้)

ดังนั้นทีมของคุณจะทำอย่างไร

ขอบคุณสำหรับคำแนะนำใด ๆ

ป.ล. - ฉันได้อ่านแล้วว่า Visual Studio 2010 ควรแก้ไขข้อบกพร่องเหล่านี้ใน VS2005 / 08 แต่จนถึงตอนนี้ ...


3
สิ่งนี้มีไว้สำหรับ stackoverflow ใช่ไหม
Cicik

1
กำลังปรับใช้เว็บไซต์ไปยังเซิร์ฟเวอร์หรือไม่ ฉันไม่คิดอย่างนั้น - มันไม่มีอะไรเกี่ยวข้องกับการเขียนโปรแกรม
Django Reinhardt

ทุกคนแค่คลิก "เผยแพร่" และอัปโหลด FTP แล้วหรือไม่ :( จะต้องมีวิธีที่ดีกว่า!
Django Reinhardt

คุณประสบปัญหาอะไรบ้างหลังจากเปลี่ยนจากเว็บไซต์เป็นเว็บแอปพลิเคชัน
คริส

เมื่อเรามีเว็บไซต์โซลูชันการปรับใช้เก่า (ส่ง) ของเราจะตรวจสอบโดยอัตโนมัติว่าไฟล์ใดมีการเปลี่ยนแปลง จากนั้นสามารถอัปโหลดไฟล์เหล่านั้นไปยังไซต์การผลิต (ละเว้นไฟล์และโฟลเดอร์เฉพาะ) ได้ด้วยคลิกเดียวจากภายใน Visual Studio มันเป็นความเข้าใจย้อนหลังในความสุข
Django Reinhardt

คำตอบ:


5

ฉันขอแนะนำอย่างยิ่งให้ใช้การรวมต่อเนื่อง

เราใช้การรวมกันของTeamCityสำหรับ CI, RakeและAlbacoreสำหรับการสร้างอัตโนมัติ

TeamCity จะตรวจสอบโค้ดจากที่เก็บซอร์สโค้ดของคุณจากนั้นใช้ Rake สร้างแอปพลิเคชันดำเนินการทดสอบหน่วยและแม้แต่เรียกใช้สคริปต์ฐานข้อมูลของคุณหากคุณต้องการ หลังจากสร้างสำเร็จคุณสามารถแพ็คเกจซอร์สโค้ดของคุณในไฟล์ zip หรือคัดลอกไปยังปลายทางที่คุณเลือก

เราใช้ Git แม้ว่า TeamCity จะทำงานกับระบบควบคุมแหล่งที่มาทั้งหมด

การใช้ TeamCity และ Rake จะคล้ายกับการใช้ CruiseControl และ NANT โดยไม่ต้องแก้ไขไฟล์ XML แน่นอนคุณสามารถใช้ TeamCity กับ NANT ได้หากต้องการ

ตัวอย่างสั้น ๆ ที่ดึงมาจาก rakefile.rb ซึ่งดำเนินการสร้าง IMHO อ่านและตรวจแก้จุดบกพร่องได้ง่ายกว่าไฟล์ XML

require 'albacore'
require 'rexml/document'
require 'find'

VERSION_NO = "1.0"

OUTPUT_PATH = "output"
WEBOUTPUT_PATH = "output/web"
ADMINOUTPUT_PATH = "output/admin"

CONFIG = "Release"

WEB_PATH = "app/Company.Website.Web"
ADMIN_PATH = "app/Company.Website.Admin"
PACKAGE_PATH = "build/package"
DB_SCRIPT_PATH = "Company.Website.DB"
SOLUTION = "Company.Website.sln"

ARTIFACTS_PATH = "d:/build/artifacts/"

DEPLOY_WEB_PATH = "d:/deploy/company/website/"
DEPLOY_ADMIN_PATH = "d:/deploy/company/admin/"

task :default => ['setuptest','assemblyinfo','config','msbuild','createdb','sqlcmd','deploy']


task :setuptest do |setup|
  if ENV['BuildNumber'].nil? then ENV['BuildNumber'] = "000" end

  VERSION_NO = VERSION_NO + '.' + ENV['BuildNumber']
  puts 'Version Number : ' + VERSION_NO

  ZIPFILE_WEB = 'Company.Website.Web.' + VERSION_NO
  ZIPFILE_ADMIN = 'Company.Website.Admin.' + VERSION_NO  

  DB_SERVER = "WEB2"
  DB_DATABASE = "Website"  
  CREATEDB_SCRIPT = "app/Company.Website.DB/00CreateDatabaseTEST.sql"
end

  assemblyinfotask do |asm|
    asm.version = VERSION_NO
    asm.company_name = "Company Name"
    asm.copyright = "Copyright 2010"
    asm.output_file = "CommonAssemblyInfo.cs"
  end

  task :config do
    FileUtils.cp 'NHibernate.test.config', 'NHibernate.config'
  end

  msbuildtask do |msb|
    msb.properties = { :configuration => :Debug }
    msb.targets [:Clean, :Build]
    msb.solution = "Company.Website.sln"
  end

  sqlcmdtask :createdb do |sql|
    puts "executing sql scripts..."
    sql.log_level = :verbose
    sql.path_to_command = "sqlcmd.exe"
    sql.server = DB_SERVER
    sql.database = "master"
    sql.scripts << CREATEDB_SCRIPT
  end

  sqlcmdtask do |sql|
    puts "executing sql scripts..."
    sql.log_level = :verbose
    sql.path_to_command = "sqlcmd.exe"
    sql.server = DB_SERVER
    sql.database = DB_DATABASE
    sql.scripts << "app/Company.Website.DB/01CreateTables.sql"
    sql.scripts << "app/Company.Website.DB/02InsertReferenceData.sql"
  end

  task :deployprep do

    FileUtils.remove_dir 'app/Company.Website.Web/obj'
    FileUtils.remove_dir 'app/Company.Website.Admin/obj'

  end

  ziptask :zipweb do |zip|
    puts "creating zip package in " + ZIPFILE_WEB
    zip.directories_to_zip = ["app/Company.Website.Web"]
    zip.output_file = ZIPFILE_WEB  + '.zip'
    zip.output_path = File.dirname(__FILE__)
  end

  ziptask :zipadmin do |zip|
      puts "creating zip package in " + ZIPFILE_ADMIN
    zip.directories_to_zip = ["app/Company.Website.Admin"]
    zip.output_file = ZIPFILE_ADMIN  + '.zip'
    zip.output_path = File.dirname(__FILE__)
  end  

Albacore เป็นชุดของงาน Rake ที่สร้างโดยเฉพาะสำหรับการปรับใช้แอปพลิเคชั่น. NET


คำถามที่โง่: มีวิธีแก้ปัญหาที่คล้ายกันเช่นนี้สำหรับโครงการ Dreamweaver หรือไม่?
djangofan

ฉันไม่รู้ว่าคุณสร้างโครงการ Dreamweaver จริง ๆ แต่คุณยังสามารถใช้การรวมอย่างต่อเนื่องและการคัดลอกไฟล์งานที่สร้างขึ้นในเรค
Jason Watts

3

บน Linux ฉันใช้ fabric (fabfile.org) และ capistrano (capify.org) ซึ่งเป็นเครื่องมืออัตโนมัติเพื่อช่วยในการควบคุม SSH และ SCP จากระยะไกล หากคุณมี Cygwin ติดตั้งอยู่บนโฮสต์ windows ของคุณคุณควรจะสามารถใช้สิ่งเหล่านี้เป็นเครื่องมือในการปรับใช้


2
ขอโทษที่ทำให้ฉันรู้สึกเหลือเชื่อ แต่สิ่งเหล่านี้สามารถใช้กับ Visual Studio ได้อย่างไร (ฉันคิดว่าพวกเขาไม่สามารถ?)
Django Reinhardt

3

"สำนักพิมพ์" โปรแกรมประยุกต์บนเว็บใน Visual Studio สามารถทำงานจาก commandline msbuild "C:\proj\yourprojectpathandfilename.csproj" /deploydir:"C:\some\deploy\dir"เป็น ไดเร็กทอรีปลายทางเป็นเว็บแอ็พพลิเคชันที่ปรับใช้ได้

คำตอบอื่น ๆ ที่ครอบคลุมคำถามที่ใหญ่กว่าของคุณนั้นดี นอกจากนี้ฉันยังเพิ่มว่าคุณควรดูที่หลาย ๆ โครงการโอเพนซอร์สของเว็บแอปพลิเคชันและคัดลอกกระบวนการสร้างที่คุณชอบมากที่สุด


3

ฉันเห็นด้วยกับสกอตต์ว่าสิ่งนี้อาจซับซ้อนและมองข้ามได้ง่าย กลยุทธ์การปรับใช้เป็นแอปพลิเคชันที่เฉพาะเจาะจงเช่นกัน หากแอปของคุณมีอยู่ในโฟลเดอร์เดียวอาจจะง่ายกว่าแอพที่อ้างอิง GAC ซึ่งในทางกลับกันอาจจะง่ายกว่าเซิร์ฟเวอร์ที่ต้องดูแลแอพหลายเวอร์ชันที่อ้างอิงแอสเซมบลีหลายเวอร์ชันของ GAC เราไม่ต้องการเริ่มพูดคุยเกี่ยวกับไฟล์นโยบายที่นี่ :)

ต้องบอกว่าทั้งหมดที่รวมเครื่องมือการปรับใช้เว็บ Microsoftกับการกำหนดเส้นทางคำขอของแอปพลิเคชันเป็นตัวเลือกที่ดีอย่างหนึ่ง ใน IIS7 เป็นไปได้ที่จะสร้างแพ็คเกจการติดตั้งโดยใช้เครื่องมือ นอกจากนี้ยังเป็นไปได้ที่จะชี้เครื่องมือไปยังเว็บแอปพลิเคชันและสำรองแอปทั้งหมดลงในโฟลเดอร์เก็บถาวรแอปพลิเคชัน คุณสามารถปรับใช้จากโฟลเดอร์เก็บถาวรนี้เป็น IIS6 หรือเว็บเซิร์ฟเวอร์ IIS7 (ไม่รองรับ IIS5) ฉันจะใช้การกำหนดเส้นทางคำขอแอปพลิเคชันเช่น Scott แนะนำเพื่อแยกรายการสดจากเว็บไซต์ทดสอบ เมื่อคุณยืนยันเว็บไซต์ที่เผยแพร่ใหม่แล้วคุณอาจตั้งค่า ARR เป็นเส้นทางไปยังเวอร์ชันใหม่


2

PyroBatchFTP ใช้งานได้ดีในเรื่องนี้ มันจะผลักดันการเปลี่ยนแปลงและคุณสามารถเขียนสคริปต์เพื่อให้คุณสามารถกดได้ด้วยการดับเบิลคลิกที่ไฟล์แบตช์

ที่Vaasnetเราได้ติดตั้งโซลูชันความฝันให้กับตัวเราเอง แต่มันค่อนข้างเกี่ยวข้องกับการติดตั้ง แต่ควรใช้องค์ประกอบเหล่านี้ทั้งหมดหรือบางส่วนถ้าคุณทำได้ นี่คือสิ่งที่มันเป็น:

  • SVN บนเครื่อง dev ทั้งหมดของเรา
  • SVN บนเซิร์ฟเวอร์ build / deployment ของเรา
  • Cruisecontrol.netคอยเฝ้าดูการเปลี่ยนแปลงของ SVN และจะสร้างและแสดงเฉพาะไฟล์ที่จำเป็นไปยังโฟลเดอร์จัดเตรียม
  • ใช้ PyroBatchFTP เราจะไปยังไซต์การแสดงละคร (เรียกโดย Cruisecontrol เพื่อให้มันเกิดขึ้นโดยอัตโนมัติ)
  • การใช้ IIS7 และApplication Request Routing (ARR) และ URL Rewrite เรามีการตั้งค่าการแสดงละคร / การผลิตต่อไปนี้:
    • ARR ขึ้นหน้าจะนำทราฟฟิกไปยังอินสแตนซ์ 01 หรือ 02 ขึ้นอยู่กับว่าแบบใดที่ 'สด' และอันไหนคือ 'การจัดเตรียม'
    • บัญชี FTP จะเชื่อมโยงกับ 'การจัดเตรียม' เสมอ
    • ฉันมีไซต์ผู้ดูแลระบบขนาดเล็กอีกไซต์หนึ่งที่จะสลับการแสดงละครและแสดงสดด้วยการคลิกเพียงครั้งเดียว ใช้เวลาทั้งหมด 1 วินาทีในการสลับกับการหยุดทำงานเป็นศูนย์และเราสามารถสลับกลับมาอีกครั้งหากเรารู้ว่ามีบางอย่างผิดปกติกับการเปิดตัวนั้น (แม้ว่าจะหายากเพราะเราสามารถทดสอบได้ง่ายก่อนที่จะมีชีวิตอยู่)

ดังนั้นผลลัพธ์สุทธิช่วยให้เราสามารถตรวจสอบใน SVN และให้สร้างและผลักดันการผลิตโดยอัตโนมัติโดยไม่มีการโต้ตอบด้วยตนเอง หลังจากที่เราทดสอบ URL ชั่วคราวของเราและพิจารณาว่าพร้อมใช้งานจริงแล้วเราจะเข้าสู่เว็บไซต์ที่ง่ายและด้วย 1 คลิกก็เป็นจริง


ฉันหวังว่าผลิตภัณฑ์นั้นฟรี มันดูเท่ห์ดี
djangofan

ฟังดูเหมือนประเภทของสิ่งที่เรากำลังมองหา ฉันจะทำวิจัยเพิ่มเติมอีกเล็กน้อย แต่ขอบคุณสำหรับการโพสต์!
Django Reinhardt

ใช่มันไม่ฟรี แต่จ่ายให้ตัวเองภายในชั่วโมงแรกของเวลาที่ประหยัด ที่มาอย่างรวดเร็วในสถานการณ์การใช้งานเช่นนี้
Scott Forsyth - MVP

ดีคำถามหนึ่งว่า คุณพูดถึงอินสแตนซ์ที่ 01 หรือ 02 สามารถทำให้สดและในกรณีที่มีปัญหาก็สามารถเปลี่ยนกลับไปที่อินสแตนซ์อื่น ๆ เกิดอะไรขึ้นกับข้อมูลผู้ใช้ในฐานข้อมูลในช่วงเวลานั้น ครึ่งหนึ่งอยู่บนอินสแตนซ์ 1 ฐานข้อมูลและพักบนฐานข้อมูลอินสแตนซ์อื่นหรือไม่
Saurabh Kumar

1

สำหรับวิธีอื่นที่ไม่ได้รับการแนะนำฉันแนะนำให้คุณรู้จักกับ 'the Gu' และโครงการตั้งค่าเว็บ

สิ่งนี้จะสร้างตัวติดตั้ง MSI สำหรับแอปพลิเคชัน. NET ของคุณ ตัวอย่างนี้สำหรับ VS2005 แต่ฉันมี VS2010 และประเภทโครงการยังคงอยู่ที่นั่น สิ่งนี้สามารถให้การปรับแต่งได้มากมายหากคุณต้องการหรือเพียงแค่ติดตั้งพื้นฐานหากคุณไม่ต้องการ

โดยส่วนตัวแล้วฉันทำงานที่ไหนเราแค่ทำการปรับใช้แบบ xcopy แต่ในที่สุดฉันก็อยากจะส่งมอบแพ็กเกจให้กับกลุ่มเซิร์ฟเวอร์ทำให้พวกเขาสามารถควบคุมเวลาและวิธีการปรับใช้ (ฉันคิดว่าสิ่งนี้อาจทำให้การใช้งานแบบกลุ่มใช้นโยบายแบบกลุ่มได้ง่ายขึ้น แต่ฉันไม่คุ้นเคยกับเรื่องนี้มากนัก)


0

มีหลายวิธีในการสกินแมวตัวนี้ขึ้นอยู่กับจำนวนการเข้าถึงที่คุณมีบนเซิร์ฟเวอร์ของคุณ วิธีที่ฉันโปรดปรานส่วนบุคคลของฉันล่าช้าคือการตั้งค่าสคริปต์การสร้างภายในโครงการ (โดยทั่วไปจะใช้ MSBUILD) ซึ่งทำแพ็คเกจไฟล์การปรับใช้ทั้งหมดจากนั้นใช้ SVN เพื่อเชื่อมโยงสิ่งเหล่านั้นเข้ากับการผลิต และเวอร์ชันไฟล์ผลิต

ฐานข้อมูลที่ชาญฉลาดทางออกที่ดีที่สุดคือการใช้กรอบงานการย้ายข้อมูลบางประเภท อีกครั้งกลุ่มของคนที่กำลังพูดถึงและไม่มีคำตอบที่ชัดเจน


0

ส่วนตัวฉันใช้สคริปต์ vbs ที่ฉันเขียนเองเพื่อคัดลอกโฟลเดอร์ประเภทไฟล์เฉพาะไปยังเซิร์ฟเวอร์ dev (เช่นออกจากไฟล์ cs เป็นต้น)


เซิร์ฟเวอร์ dev ของเรานั้นมีให้ใช้งานผ่านทาง FTP เท่านั้นและฉันก็หวังว่าจะต้องหลีกเลี่ยงวิธีการแก้ปัญหาถ้าเป็นไปได้
Django Reinhardt

0

เมื่อฉันทำงานกับ บริษัท . com ขนาดใหญ่นี่คือสิ่งที่เราทำกับการปรับใช้. net ของเรา

ซอร์สโค้ดและขั้นตอนการจัดเก็บทั้งหมดของเราถูกเก็บไว้ใน SVN ในแต่ละคืนงานฐานข้อมูลจะเรียกใช้และดึง procs ที่จัดเก็บการผลิตและส่งไปยังไดเรกทอรีบน SVN เพื่อให้มีเวอร์ชันล่าสุดในตัวควบคุมแหล่งที่มาเสมอ

ในวันที่ปรับใช้สำหรับโครงการเราจะใช้สคริปต์ nAnt เพื่อดึงโครงการจาก SVN ทำการสร้างแบบกำหนดเองของโครงการและดึงการพึ่งพาใด ๆ ที่โครงการเหล่านี้ต้องการ เมื่อเรียกใช้สคริปต์ nAnt สคริปต์ดังกล่าวจะถูกรวมไว้ในไฟล์ zip ที่แตกไฟล์เอง procs ที่เก็บไว้ซึ่งเกี่ยวข้องกับการปรับใช้นี้ถูกตรวจสอบในตัวควบคุมแหล่งที่มาและแผ่นงาน spreed excel ถูกปรับปรุงด้วยสคริปต์เพื่อเรียกใช้และตามลำดับ

เมื่อ deploymenet ดับลงไฟล์ zip ที่คลายตัวเองจะถูกถ่ายโอนไปยังเซิร์ฟเวอร์ที่เปิดตัว ไฟล์ทั้งหมดถูกแยกลงในไดเร็กทอรีที่ถูกต้องและ DBA รัน procs ที่เก็บไว้ในฐานข้อมูล prodcution

ในการปรับใช้ทั่วไปโดยใช้ระบบนี้เราเปลี่ยนจากการปรับใช้ห้าถึงหกชั่วโมงเป็นต่ำกว่าหนึ่งชั่วโมง

ขอให้โชคดีและหวังว่านี่จะช่วยให้บางคนสามารถหาวิธีปรับใช้แอปพลิเคชันของคุณได้


0

จะต้องมีวิธีที่ดีกว่า "เผยแพร่" ใน Visual Studio แล้วต้อง FTP ไฟล์ที่เปลี่ยนแปลงด้วยตนเองหรือไม่

โดยทั่วไปแล้วมีดโกนของอ็อกคัมเป็นวิธีที่ต้องการ: ง่ายกว่าดีกว่า FTP เป็นเรื่องง่ายโดยไม่มีปัญหาเล็กน้อย บางคนใช้ XCOPY, Filezilla หรือ WSFTP, คนอื่น ๆ อาจใช้ MS Web Deployment Tool (ซึ่งฉันยังไม่คุ้นเคย) แต่ all-in-all มีวิธีที่ดีกว่าในการปรับใช้เว็บแอป ASP.NET (และอื่น ๆ ) แอพทั่วไป) IMO หากมีการพิจารณาการปรับใช้ตั้งแต่เริ่มต้นของการพัฒนาการปรับใช้สามารถรวมเข้ากับเว็บแอปซึ่งจะทำให้การปรับใช้ที่ไม่ยุ่งยากและราบรื่นในอนาคต

ในฐานะนักพัฒนา. NET ที่ทำงานกับ บริษัท หลายแห่งที่พัฒนาแอพพลิเคชั่นเว็บ ASP.NET ตั้งแต่ขนาดความซับซ้อนและจำนวนผู้ใช้ (ตั้งแต่ผู้ใช้หลายร้อยคนจนถึงหลายหมื่นคน) การปรับใช้ IMO มักเป็นหัวข้อ "ของเหลว" ที่สุด บางองค์กรใช้เวลามากเกินไปในแง่ของระบบราชการในขณะที่องค์กรอื่นไม่ได้แก้ไขปัญหาใด ๆ กับการใช้งานเลย จากประสบการณ์ของฉันปัญหาเกี่ยวกับการปรับใช้มักจะตกอยู่ใน 1 หมวดหมู่หรือมากกว่า 3 หมวดในแง่ของปัญหา / ความล้มเหลว:

  1. การปรับใช้จะถูกละเว้น / ลืมในเชิงลึกในระหว่างขั้นตอนการออกแบบ: เว็บแอปส่วนใหญ่มักจะรวมเว็บเซิร์ฟเวอร์และฐานข้อมูล นอกเหนือจากรหัสแอปพลิเคชันอาจมีบางโพรซีเดอร์ที่เก็บไว้และตารางฐานข้อมูล ASP.NET เป็นมากกว่าความสามารถในการช่วยเหลือในการปรับใช้งาน แต่ส่วนใหญ่นักพัฒนามักจะหันเหความสนใจในแง่ของการเรียกใช้แอปพลิเคชันจริงและทำมันในขณะที่ปล่อยให้วิธีการปรับใช้เป็นปัญหาแยกต่างหาก

  2. การปรับใช้มีความซับซ้อนในหลายระบบและผู้เล่น: ความซับซ้อนเป็นเรื่องเลว จาก MSMQ, T-SQL ขั้นตอนและทริกเกอร์ที่เก็บไว้, บริการรายงาน, การส่งข้อความ SOAP / XML, การตรวจสอบความถูกต้องของโฆษณา, SSAS / SSIS, ฯลฯ เป็นต้นจำนวนของเทคโนโลยีที่เล่นเพิ่มจำนวนคนที่เกี่ยวข้อง ส่วนประกอบที่แตกต่างกันทั้งหมดเหล่านี้มักได้รับการจัดการโดยหน่วยงานที่แตกต่างกันภายในองค์กร เว้นแต่ว่าทุกคนจะซิงค์กันการปรับใช้สามารถเพิ่มความซับซ้อนได้อย่างรวดเร็วนำไปสู่ความล้มเหลวหลายจุด

  3. ความเกียจคร้านไม่แยแสหรือขาดการสื่อสารและ / หรือการจัดการ: จากเอกสารน้อยไปจนถึงไม่มีจนถึงขาดการสื่อสารและโปรโตคอลที่ประสานงานกันมันง่ายที่จะทำให้เสียโฉมกระบวนการง่ายๆ การปรับใช้ควรเป็นขั้นตอนง่าย ๆ โดยมีการตรวจสอบจำนวนมากในขณะที่บันทึกสิ่งที่ทำ แต่มักไม่เป็นเช่นนั้น คนส่วนใหญ่ต้องการให้เว็บไซต์แช่งทำงาน จากประสบการณ์ของผมคน (ไม่ใช่โปรแกรมเมอร์) ไม่จริงๆดูแลจนกระทั่งบางสิ่งบางอย่างไปจริงๆ fubar ความรับผิดชอบไม่ค่อยตรงกับเพียงหนึ่งคนที่จริงการทำการใช้งานที่ไม่มีใครต้องการจริงๆที่จะเป็นสาเหตุของความล้มเหลวเพื่อให้รับผิดชอบเป็นมักจะแยกย้ายกันไป

มีข้อยกเว้นไฟล์เที่ยวยุ่งยิ่งมากมายที่ฉันจะต้องทำให้กระบวนการเป็นไปโดยอัตโนมัติให้มากที่สุดเพื่อป้องกันการอัพโหลดโดยไม่ตั้งใจ ดังนั้นทีมของคุณจะทำอย่างไร

ฉันไม่รู้จักผู้ขายรายใดที่จะทำการติดตั้งโดยอัตโนมัติแม้ว่าฉันจะไม่แปลกใจหากมีบางอย่าง คุณอาจจะสามารถเขียนสคริปต์โซลูชันผ่าน VBScript / WMI หรือ batch script ทางออก แต่ความจริงก็คือคุณต้องปรับแต่งการแก้ปัญหาร่วมกันสำหรับเว็บไซต์ ASP.NET ที่ซับซ้อนมากขึ้น เว็บไซต์ที่เรียบง่ายประกอบด้วยหน้าการเชื่อมต่อฐานข้อมูลและไม่ต้องทำอะไรเลยคุณไม่จำเป็นต้องทำอะไรมากนักเพื่อปรับขนาดความพยายามในการปรับใช้ของคุณให้สอดคล้องกับความซับซ้อนของแอพพลิเคชั่น

จนถึงตอนนี้การปรับใช้งานปัจจุบันของฉันยังดำเนินการผ่าน FTP และย้ายไฟล์จำนวนมาก มันน่าเกลียดง่ายที่จะพลาดและไม่มีความรู้สึกของประวัติศาสตร์ที่ถูกต้อง ได้รับคุณสามารถหวีบันทึก FTP, ไม่มีใครรบกวนให้ทำ แอพของเราค่อนข้างเรียบง่ายโดยไม่ต้องใช้ FTP มากนัก วิธีที่ทีมของฉันปรับใช้แอปพลิเคชันเว็บของเรามีน้อยมากถึงไม่มีประโยชน์สำหรับคุณ ฉันควรใช้โอกาสนี้เพื่อแนะนำวิธีปฏิบัติที่ดีกว่า

  • สมมติว่าไม่มีอะไร บัญชีผู้ใช้สิทธิ์ R / W / X, ACLs, ไฟร์วอลล์, เวลา (เมื่อต้องปรับใช้และเวลาที่คุณต้องทำ) และหากเป็นไปได้ให้ทดสอบการปรับใช้กับสภาพแวดล้อมทั้งหมดก่อน "วันเปิดตัว" สุดท้าย
  • ก่อนที่การพัฒนาจะเริ่มขึ้นจริงการปรับใช้ปัจจัยในการพัฒนา ถ้ามันเป็นเว็บไซต์ที่เรียบง่ายไม่ว่าจะเป็น หากมีชิ้นส่วนที่เคลื่อนไหวจำนวนมากให้คำนึงถึงปัจจัยทั้งหมดในนั้นและสร้างแผนที่ส่วนประกอบทั้งหมด (รหัสฐานข้อมูลรายงานคิว ฯลฯ ) ล้วนอยู่ในแผนเดียวกัน
  • ประสานงานกับ parities อื่น ๆ และสื่อสารอย่างมีประสิทธิภาพและประสิทธิผล
  • จัดทำเอกสารข้อมูลที่เกี่ยวข้องให้มากที่สุดถ้าเป็นไปได้
  • สภาพแวดล้อม: เว็บเซิร์ฟเวอร์เดียวกับเว็บฟาร์ม 32- บิตกับ 64- บิต; หาวิธีในการตรวจสอบบันทึก / ข้อผิดพลาด / หมุน ฯลฯ
  • ค้นหาเครื่องมือ (หรือสร้าง) ที่สามารถช่วยในการปรับใช้
  • หากเป็นไปได้สำหรับการปรับใช้ที่ตั้งโปรแกรมได้ให้เลือกกระบวนทัศน์และติดกับมัน ตัวอย่างเช่นหากคุณต้องการใช้เซิร์ฟเวอร์ฐานข้อมูลเป็นวิธีหลักในการดำเนินการสถานะของแอปพลิเคชันการปรับใช้การเข้าถึงและอื่น ๆ ให้อบเข้าไปในแอปพลิเคชันและติดกับมัน หากคุณต้องการอ่านไฟล์ XML (เช่น web.config) โดยวิธีการทั้งหมดเพียงแค่ยึดตามกระบวนทัศน์ที่สอดคล้องกันของการปรับใช้แอปพลิเคชัน อีกตัวอย่างหนึ่ง: บางองค์กรออกจาก web.config เป็นไฟล์สแตติกในแต่ละสภาพแวดล้อมที่ไม่ควรปรับใช้กับสภาพแวดล้อมอื่น โปรแกรม web.config อื่น ๆ ในลักษณะที่สามารถนำไปใช้งานข้ามสภาพแวดล้อมได้โดยไม่มีข้อผิดพลาด

ฉันรู้ว่าโพสต์นี้อาจมีราคาแพงเกินไปสำหรับคำถามที่ถูกถามในตอนแรก น่าเสียดายที่การปรับใช้ไม่ใช่เรื่องง่ายเนื่องจากแอปพลิเคชันอาจมีความซับซ้อนแตกต่างกันไป ฉันเดิมพันที่องค์กรส่วนใหญ่ที่ปรับใช้แอพพลิเค ASP.NET ซับซ้อนมีช่วงเวลาการพัฒนากลยุทธ์บางอย่างการทำงาน (อย่างน้อย) ได้อย่างน่าเชื่อถือ


ฮ่า ๆ ... ฉันรักวิธีที่คุณอ้างคำทำนายความคิดเห็น แต่แล้วคุณก็จะตอบคำถามที่ซับซ้อนที่สุด ฮ่า ๆ.
djangofan

1
ใช่ฉันรู้ว่าคำตอบของฉันขัดแย้งกับตัวเอง ฉันเพิ่งพบกับการปรับใช้มากมายที่ผิดพลาดซึ่งฉันเหนื่อยมาก ขออภัยในความโวยวาย!
osij2is

1
มีเครื่องมือใหม่จาก Red Gate: red-gate.com/supportcenter/Content/Deployment_Manager/help/1.0/…
Matt Evans

@ Matthew Evans - ดี! ตอนนี้ฉันกำลังดู URL อยู่ นี่เป็นการซื้อของบุคคลที่สามใหม่หรือผลิตภัณฑ์ของตนเองหรือไม่
osij2is

ฉันคิดว่ามันเป็นผลิตภัณฑ์ของตัวเอง พวกเขาพัฒนาและใช้ภายในสำหรับการปรับใช้ของตัวเอง - ซึ่งมีแนวโน้ม จะอัปเดตการประเมินของฉันเองเมื่อฉันไปถึงมัน
Matt Evans
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.